为什么需要一个开源的 Claude Code
2026 年的 Coding Agent 赛道有个尴尬的现实:最好用的工具都是闭源的。Claude Code 是 Anthropic 的亲儿子,跑在 Claude 的 API 上;Codex 是 OpenAI 的,跑在 OpenAI 的 API 上。它们的 TUI 体验、工具链集成、上下文管理做得确实好,但你没法改它的 provider,没法加自定义工具,没法在企业内网部署。
OpenCode 的出现就是为了解决这个问题。它不是"又一个 AI 编程助手",而是把 Claude Code 的完整体验用开源方式重新实现了一遍。MIT 协议、TypeScript 全栈、Effect 系统驱动、支持 75+ LLM 提供商。从 2025 年 4 月创建到现在,14 个月拿了 185K Star——这个速度在整个 GitHub 上都排得上号。
它到底做了什么
一句话:一个跑在终端里的开源 Coding Agent,同时提供桌面端和 IDE 扩展。
但这句话的含金量很高,我们拆开看。
5 种内置 Agent
OpenCode 不是只有一个 agent,它内置了 5 种不同角色:
| Agent | 类型 | 权限 | 用途 |
|---|---|---|---|
| Build | 主 Agent | 全部工具 | 日常开发,改代码、跑命令、写文件 |
| Plan | 主 Agent | 只读 + 需审批 | 分析代码、做方案、不改任何东西 |
| General | 子 Agent | 全部工具 | 复杂搜索、多步骤任务,主 Agent 自动调用 |
| Explore | 子 Agent | 只读 | 快速搜索文件、查找代码模式 |
| Scout | 子 Agent | 只读 | 查外部文档、研究依赖库源码 |
按 Tab 键在 Build 和 Plan 之间切换。Plan 模式特别有用——你让 agent 分析一个大型重构方案,它只会给你建议,不会动任何文件。子 Agent 由主 Agent 自动调度,也可以用 @general 手动调用。
75+ LLM 提供商
这是 OpenCode 跟 Claude Code、Codex 拉开差距最大的地方。它基于 AI SDK 和 Models.dev,支持 75+ 个 LLM 提供商——Anthropic、OpenAI、Google、DeepSeek、Mistral、Groq、Ollama、vLLM,甚至你自己搭的本地模型。
配置方式很简洁:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"baseURL": "https://api.anthropic.com/v1"
}
}
}
}
如果你不想折腾 API Key,OpenCode 还提供了 Zen(官方精选模型列表)和 Go(低价订阅计划),直接用就行。
完整的工具链
内置工具覆盖了 Coding Agent 需要的所有核心能力:
bash— 执行 shell 命令edit— 精确字符串替换修改文件write— 创建新文件read— 读取文件内容,支持行范围grep— 正则搜索代码glob— 文件模式匹配apply_patch— 应用 diff/patchlsp(实验性)— 调用 LSP 服务器做代码智能分析skill— 加载 SKILL.md 技能定义todowrite— 管理任务清单webfetch— 抓取网页内容
每个工具都可以通过 permission 配置为 allow、deny 或 ask(需审批)。这比 Claude Code 的"要么全给、要么全不给"灵活得多。
架构深度:为什么是 TypeScript + Effect
OpenCode 的技术栈选型很有意思。它没有选 Go 或 Rust(像很多 CLI 工具那样),而是选了 TypeScript + Bun + Effect。
这个选择的逻辑是:
- Bun 作为运行时——启动速度快,原生支持 TypeScript,不需要编译步骤
- Effect 作为核心框架——提供类型安全的副作用管理、并发控制、错误处理。这是整个架构的骨架
- Monorepo + Turborepo——30+ 个子包,从核心引擎到 TUI、桌面端、Web 端、SDK、企业版全覆盖
核心包结构:
packages/
├── opencode/ — 核心引擎(agent、session、tool、config)
├── cli/ — CLI 入口
├── tui/ — 终端 UI(基于 @opentui/solid)
├── desktop/ — 桌面端(Tauri)
├── web/ — 文档站点(Astro + Starlight)
├── core/ — 核心库(provider、llm、mcp)
├── server/ — HTTP API 服务器
├── sdk/ — JavaScript SDK
├── plugin/ — 插件系统
├── schema/ — 共享 Schema 定义
├── identity/ — 认证系统
├── enterprise/ — 企业版功能
└── console/ — 控制台 Web UI
这个 monorepo 的体量不小——2100 万行 TypeScript 代码。但 Bun 的性能让它能跑得动。
Effect 系统的真正价值
Effect 在 OpenCode 里不是装饰品。它解决了几个实际问题:
- 类型安全的并发——多个 Agent 同时跑,Effect 的 Fiber 系统保证不会出现竞态条件
- 结构化错误处理——LLM 调用失败、MCP 服务器崩溃、文件系统错误,每种错误都有明确的类型和恢复策略
- 依赖注入——Provider、Tool、Session 这些服务通过 Effect 的 Layer 系统组合,测试和替换都很方便
用大白话说:Effect 让 OpenCode 在处理"多个 Agent 同时调用多个 LLM、同时操作文件系统"这种复杂并发场景时,不会出幺蛾子。
插件系统:真正的可扩展性
OpenCode 的插件系统比大多数 Coding Agent 都成熟。你可以在 .opencode/plugins/ 目录下放 JS/TS 文件,也可以从 npm 安装:
{
"plugin": ["opencode-helicone-session", "opencode-wakatime"]
}
插件可以 hook 到 tool.execute.before、tool.execute.after 等事件,在工具执行前后做拦截和修改。社区已经有 Helicone(可观测性)、WakaTime(编码时间统计)等实用插件。
MCP 支持
原生支持 MCP 协议,配置方式很直接:
{
"mcp": {
"my-server": {
"type": "local",
"command": ["npx", "-y", "my-mcp-server"],
"enabled": true
}
}
}
也支持远程 MCP 服务器和企业级的 .well-known/opencode 默认配置下发。
跟 Claude Code、Codex 比:各取所需
| 维度 | OpenCode | Claude Code | Codex |
|---|---|---|---|
| 开源协议 | MIT ✅ | 闭源 ❌ | Apache 2.0 ✅ |
| LLM 提供商 | 75+ | 仅 Anthropic | 仅 OpenAI |
| 运行时 | TypeScript + Bun | TypeScript + Node | Rust |
| 插件系统 | ✅ JS/TS 插件 + npm | ❌ 无 | 有限 |
| MCP 支持 | ✅ 原生 | ✅ 原生 | ✅ 原生 |
| 桌面端 | ✅ Tauri(Beta) | ❌ | ❌ |
| IDE 扩展 | ✅ 有 | ❌ | ❌ |
| Agent 类型 | 5 种 | 单一 | 单一 |
| 自部署 | ✅ | ❌ | ✅ |
| 企业版 | ✅ 有 | ✅ Team/Enterprise | ✅ Team |
| Star 数 | 185K | 137K | 97K |
选 OpenCode 的理由:你需要开源、需要自定义 provider、需要插件扩展、需要自部署。
选 Claude Code 的理由:你已经在 Anthropic 生态里,不需要折腾,开箱即用体验最好。
选 Codex 的理由:你在 OpenAI 生态里,需要轻量级 CLI 工具。
上手指南
安装
# 一行搞定
curl -fsSL https://opencode.ai/install | bash
# 或者用包管理器
npm i -g opencode-ai@latest
brew install anomalyco/tap/opencode # macOS/Linux 推荐
sudo pacman -S opencode # Arch Linux
配置 Provider
# 启动 OpenCode
cd /your/project
opencode
# 用 /connect 命令添加 provider
/connect
# 选择 Anthropic、OpenAI、DeepSeek 等,输入 API Key
初始化项目
# 在 TUI 里运行
/init
# 会自动生成 AGENTS.md,描述项目结构和编码规范
日常使用
# Plan 模式分析代码(按 Tab 切换)
这个项目的认证流程是怎么实现的?
# Build 模式改代码
给用户模块加一个密码重置功能
# @ 引用文件
@src/auth/login.ts 这个文件有什么安全问题?
# ! 执行 shell 命令
!npm test
踩坑实录
坑 1:Bun 版本要求。OpenCode 需要 Bun 1.3+,某些 Linux 发行版的包管理器给的 Bun 版本太老。建议用官方安装脚本装 Bun,别用 apt。
坑 2:终端模拟器很重要。OpenCode 的 TUI 依赖现代终端的特性。WezTerm、Ghostty、Kitty 都行,macOS 自带的 Terminal.app 会有渲染问题。
坑 3:MCP 服务器吃上下文。每个 MCP 服务器都会往上下文里塞工具描述。如果你同时开了 GitHub MCP + Sentry MCP + 其他几个,上下文很快就满了。建议只开当前任务需要的 MCP 服务器。
坑 4:monorepo 构建时间。如果你要从源码构建,30+ 个子包 + TypeScript 类型检查,首次构建要几分钟。日常开发建议只 build 你改的那个包。
适合谁
- 企业团队:需要自部署、需要接内部 LLM 服务、需要审计日志
- 开源贡献者:想给 Coding Agent 加功能,OpenCode 的插件系统比改 Claude Code 源码现实得多
- 多模型用户:不同任务用不同模型——写代码用 Claude,分析用 DeepSeek,简单任务用本地模型
- 终端重度用户:不需要 Electron 大窗口,一个终端搞定一切
不适合的人:只想"装上就用、不想配置"的用户——Claude Code 的开箱体验确实更好。OpenCode 的灵活性是有代价的,你需要花时间配置 provider、权限、MCP 服务器。
总结
OpenCode 做的事情本质上是:把 Coding Agent 从"闭源 SaaS"变成了"开源基础设施"。75+ LLM 提供商、插件系统、5 种 Agent 角色、桌面端——这些不是功能堆砌,而是让"谁都能搭一个自己的 Coding Agent"变成现实。
185K Star 的背后是真实的需求:开发者不想被锁在某一个 AI 厂商的生态里。OpenCode 给了一条出路。
# 现在就试试
curl -fsSL https://opencode.ai/install | bash
cd your-project && opencode