用了4个月Claude Code后,我换成了OpenCode
用了4个月Claude Code后,我换成了OpenCode
为什么换工具
我从去年11月开始用Claude Code写代码。体验确实好,理解能力强,多文件重构一气呵成。但用了4个月后,两个问题越来越让人烦:
第一,Claude API挂了两次。一次是凌晨2点,赶一个线上bug的热修复,Claude全球限流,我的终端卡在那里转圈。当时项目只能干等。
第二,费用。Claude Code跑一个大仓库的重构任务,一次对话烧掉十几美元是常事。我算了一下,一个月光CLI agent就花了400多刀。Sonnet便宜点,但复杂任务它经常漏改文件。
今年3月初,同事丢了一个GitHub链接给我:OpenCode。装上试了一周,现在它成了我的默认工具。
OpenCode是什么
一句话:一个支持75+模型的AI编程CLI工具。你可以接Claude、GPT、Gemini、Llama、DeepSeek,甚至本地跑的Ollama模型。核心卖点就是不绑定任何一家。
它不是简单的API封装。v1.3.0(本周刚发布)有几个我觉得值得说的功能:
双Agent架构。一个Plan Agent负责分析代码、理清依赖关系、出方案;一个Build Agent负责改文件、跑测试。Tab键切换。Plan Agent是只读的,不会动你的代码,适合先看方案再决定改不改。
Auto Compact。长对话的token会越来越多,越到后面响应越慢、越贵。OpenCode会自动压缩对话历史,保留关键信息,把冗余上下文丢掉。我在一个持续3天的重构任务里试了这个,token消耗比Claude Code低了大概40%。
Git集成的Session Review。不用再开另一个终端跑git diff了。TUI里直接能看哪些文件被改了,改了什么,Agent为什么这么改。
安装和配置
macOS/Linux用Homebrew:
brew install anomalyco/tap/opencode
npm也行:
npm i -g opencode-ai@latest
装好之后在项目目录里运行:
opencode
第一次启动会让你配置模型。这里是重点——你可以同时配多个Provider。
配置文件示例
在项目根目录创建 opencode.json:
{
"provider": {
"default": "anthropic",
"anthropic": {
"apiKey": "${ANTHROPIC_API_KEY}",
"model": "claude-sonnet-4-20250514"
},
"openai": {
"apiKey": "${OPENAI_API_KEY}",
"model": "gpt-4.1"
},
"ollama": {
"baseUrl": "http://localhost:11434",
"model": "llama3:70b"
}
},
"fallback": ["openai", "ollama"],
"autoCompact": true
}
fallback字段是关键。如果默认的Anthropic挂了或者限流了,OpenCode会自动切到OpenAI;OpenAI也不行,就用本地Ollama。不用你手动切换,不用中断工作流。
复用已有订阅
如果你已经有ChatGPT Plus或GitHub Copilot的订阅,OpenCode可以直接用这些账号的模型。配置方式:
# 用ChatGPT Plus的额度
opencode auth login --provider openai --method browser
# 用GitHub Copilot
opencode auth login --provider copilot --method github
这个我要说一句:用聊天订阅跑CLI agent,在技术上可行,但可能违反某些Provider的TOS。自己权衡风险。
实际使用:一个重构案例
上周我用OpenCode重构了一个Node.js项目的数据库层,从原生pg迁移到Drizzle ORM。项目大概有120个文件,30多个数据库查询散落在各处。
第一步:用Plan Agent分析
> /plan 把所有pg原生查询迁移到Drizzle ORM,需要分析哪些文件有数据库调用
Plan Agent扫描了整个仓库,列出了:
- 14个service文件包含直接的pool.query()调用
- 3个middleware里有事务处理
- 2个cron job文件有批量INSERT
- 1个migration脚本需要重写
这一步完全只读,不改任何代码。我花了5分钟过了一遍Plan Agent列出的文件列表和依赖关系,确认没有遗漏。
第二步:切到Build Agent执行
> /build 按照plan的结果,从service层开始迁移。先处理user-service.ts
Build Agent的操作:
1. 安装了drizzle-orm和drizzle-kit(自动跑npm install)
2. 根据现有SQL创建了schema定义文件
3. 把user-service.ts里的6个pool.query改成了Drizzle的链式API
4. 跑了项目的测试套件
5. 测试失败了2个——一个是类型不匹配,一个是null处理
6. 自动修了这两个问题,重新跑测试,全过完了
整个过程我就是在TUI里看着它干活。需要我确认的地方,它会停下来问。
14个service文件,我大概花了3个小时全部迁移完。手动做这个活儿,我估计至少两天。
费用对比
这次重构任务,我用的是Claude Sonnet作为默认模型。3个小时的对话,Auto Compact开着,总费用大概8.5美元。
同样规模的任务,我之前用Claude Code做过类似的(另一个项目从Sequelize迁移到Prisma),花了大概22美元。差异主要来自Auto Compact省下的token。
踩坑记录
用了一周多,踩了几个坑,写出来给后来人:
1. Ollama本地模型的上下文窗口问题。 Llama3 70B默认的上下文窗口是8K。作为fallback模型跑大仓库分析,8K完全不够。需要启动Ollama的时候加参数:
OLLAMA_NUM_CTX=32768 ollama serve
或者在Modelfile里设置:
PARAMETER num_ctx 32768
2. 文件权限。 OpenCode会直接用shell命令操作文件。如果你的项目目录有些文件是只读的(比如生成的protobuf代码),它改不了会报错,但不会告诉你是权限问题,只会说"failed to write file"。排查了半天才发现。
3. Auto Compact可能丢上下文。 我有一次在对话早期提了一个特定的代码风格要求(所有数据库错误用自定义Error类包装),对话进行到第40多轮的时候,Auto Compact把这条信息压缩掉了。后面生成的代码又开始用原生Error。解决办法:把重要的约束写到项目根目录的 .opencode/rules.md 文件里,这个文件每次都会被加载,不会被Compact掉。
4. Node.js运行时的问题。 v1.3.0之前OpenCode只支持Bun。如果你公司只允许Node.js,之前没法用。这个版本加了Node.js支持,但要注意用 opencode --runtime node 启动,否则默认还是找Bun。
和Claude Code对比怎么看
不想做那种"A工具比B工具好"的结论。实际情况是各有适合的场景。
Claude Code的优势在于:Anthropic对自家模型的调优没得说,上下文理解能力确实更强。做那种"帮我理解这段代码在干什么"的分析任务,Claude Code的输出质量比OpenCode套一个同模型要好一点。可能是Anthropic在System Prompt层面做了针对性优化。
OpenCode的优势在于:灵活。不怕单点故障,不怕一家涨价。本地模型兜底让你在没有网络的环境也能干活。Auto Compact在长任务上省钱。
我现在的用法:日常开发用OpenCode(默认Claude Sonnet,fallback到本地Llama),需要做复杂代码分析或者架构设计的时候切回Claude Code用Opus。
总结
OpenCode不是什么革命性的东西。它解决的问题很具体:别把自己绑死在一家模型上。
2026年的AI编程工具市场变化太快了。去年此时Cursor还是绝对主流,现在大家都在CLI里写代码了。哪家模型明天会降价、哪家会限流、哪家会发布新版本改掉API——你控制不了。但你可以选择一个工具,让切换成本接近于零。
OpenCode GitHub:https://github.com/anomalyco/opencode 文档:https://opencode.ai/docs 本周v1.3.0更新日志:https://github.com/anomalyco/opencode/releases/tag/v1.3.0
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)