1. OpenCode 的 Plan/Build 模式到底怎么用
OpenCode 跑在终端里,界面是 TUI,看起来极客,实际上手不难。它最不同于 Cursor 的地方是两种工作模式:Plan 和 Build。Plan 模式下模型只读你的代码库,能搜索文件、分析符号、给实现策略,但不落盘;Build 模式才真正写文件、改代码、跑命令。
1.1 为什么要先按 Tab 进入 Plan
原文里那张“Plan vs Build”的对照说得很直白:复杂功能务必先用 Plan 模式 outline 方案,再切 Build 实施。我试过一个真实改动:给 auth.ts 的 handleSubmit 加统一错误处理。如果直接让模型在 Build 模式下改,它可能只改一个函数、漏掉调用方。切到 Plan 后,模型先列出 handleSubmit 在哪些页面被引用,再把每个调用点的返回约定列出来,我确认方案后才动手。这样一套下来,改完代码基本不用返工。
1.2 Build 模式才是真正的写代码
回到 Build 模式,AI 才拥有文件读写和执行命令的权限。两个模式共用同一个模型提供商,区别只在权限边界。Tab 键在两者之间循环切换,/undo 撤销最近一次更改,/redo 重做。这里要记住一点:OpenCode 本身不绑定 IDE,所以你在 VS Code、Cursor 或 Zed 里都能用同一个终端流程,这也是原文强调“终端优先”的原因。
OpenCode 的另一个卖点是多提供商支持,这意味着同一个终端工具可以连不同模型。但多提供商不等于零成本接入:每个 provider 都要单独申请 API Key、单独填 Base URL、单独确认模型 ID。当你要在不同任务里切换模型时,这些分散的 Key 就成了新的心智负担。我在用了几天后才意识到,真正需要统一的是“渠道”,不是“工具”。
2. 准备一把 TaoToken Key,替掉每个模型各一把 Key
原文里 OpenCode 支持多提供商,也列出了一些免费模型体验入口。实际用的时候你会发现,免费模型各有各的时效、速率限制和模型命名,散落着配非常费劲。我的做法是把所有模型请求统一接到 TaoToken 的兼容 API 上,Key 只维护一把,Provider 只配一个。
2.1 去 TaoToken 创建 Key 就两步
打开官网,注册登录,进入控制台创建 API Key。官网地址记一下:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 。创建的 Key 形如 sk-...,下文配置里统一用 YOUR_API_KEY 占位,你自己替换成真实值。如果你同时要跑 Plan 和 Build 两类任务,不需要为两种模式准备两把 Key,一把就够。
2.2 模型 ID 别猜,去模型广场复制
模型 ID 不要凭印象填。登录官网后打开模型广场,看当时列表里的模型名。原文提过的 Grok Code Fast 1、GLM 4.7、Big Pickle 这类免费或限免模型,现在是否仍可用、ID 长什么样,都以模型广场当日列表为准。这样最稳。Base URL 固定为 https://taotoken.net/api ,末尾不带 /v1。官网和接口是两回事:官网用来管理 Key 和看用量,接口地址用来填进 OpenCode。
3. 把 Base URL 填进 opencode.json,Plan 和 Build 走同一个通道
OpenCode 的配置放在项目根目录的 opencode.json,也可以放到全局目录 ~/.config/opencode/opencode.json。项目级配置优先,适合给不同仓库指定不同模型;全局配置适合统一默认通道。
3.1 provider 配置示例
我用的是 OpenAI 兼容方式配置 TaoToken provider,配置文件长这样:
{ "$schema": "https://opencode.ai/config.json", "provider": { "taotoken": { "npm": "@ai-sdk/openai-compatible", "name": "TaoToken", "options": { "baseURL": "https://taotoken.net/api", "apiKey": "{env:TAOTOKEN_API_KEY}" }, "models": { "模型ID": { "name": "模型显示名" } } } } }把“模型ID”替换成模型广场复制的标识,把“模型显示名”写成你能认出来的名字。保存后重启 OpenCode,新 provider 才会被加载。
3.2 环境变量读取 Key
apiKey 字段里写的{env:TAOTOKEN_API_KEY}是让 OpenCode 从环境变量读值,别把真实 Key 直接写进 JSON。设置环境变量:
export TAOTOKEN_API_KEY=YOUR_API_KEYWindows PowerShell 对应$env:TAOTOKEN_API_KEY="YOUR_API_KEY"。这里再次强调:Base URL 是 https://taotoken.net/api ,不是 https://taotoken.net/api/v1 ,也不是官网首页。很多模型 SDK 会自动拼接路径,OpenCode 的 provider 会把 baseURL 当作完整入口,手动加 /v1 反而容易 404。
4. 先 Plan 后 Build 的完整验证流程
配置完别急着接大需求,先用一个小改动验证通道是不是真的通了。我拿“给 auth.ts 的提交函数加错误处理”当例子跑一轮完整流程。
4.1 第一轮:Plan 模式只读分析
进入 OpenCode 项目后按 Tab 切到 Plan 模式,输入:列出 auth.ts 中 handleSubmit 的调用位置,说明添加错误处理会影响哪些返回场景。模型会先搜索文件、读引用,再输出方案。只要它能正常回复,就说明 Key 和 Base URL 都已经生效。如果你报错时有截图或设计稿,也可以直接拖进终端窗口,模型能根据图像理解需求,这是原文新手技巧里提到的能力。
4.2 第二轮:Build 模式落地修改
再按 Tab 切回 Build 模式,输入:按上面的方案用 async/await 重写 handleSubmit,并添加 try/catch,保持原导出签名不变。这次模型会真正修改文件。改动不满意就用 /undo 撤销。这样的两段式提问,比一上来就让 AI 直接改要稳得多,也符合原文“复杂功能先规划再动手”的建议。
4.3 回官网对一下这次调用的账
如果对话正常结束,登录 TaoToken 控制台查看刚才请求有没有记录、消耗了多少 token。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= ,在用量页能看到请求明细。这步能帮你确认两件事:Key 确实被使用,以及这次调用消耗的是哪个模型的额度。
5. 配置后常见的 401 和模型名报错排障
按上面配置跑,OpenCode 最常见的报错其实就两类,都可以快速定位。
5.1 401 Unauthorized 说明 Key 没读进去
看到 401 先检查环境变量:终端里执行 echo $TAOTOKEN_API_KEY 看是否输出你的 Key。Windows 用户看 $env:TAOTOKEN_API_KEY。如果环境变量为空,说明当前终端没有加载最新的 export,重新执行一次或直接写进 shell 配置文件。项目根目录的 opencode.json 会覆盖全局配置,如果你在别处也配过 provider,优先检查项目级文件。
5.2 模型名报错说明 Base URL 通了,ID 没对上
如果报的是 model_not_found 或“模型不存在”,说明 Base URL 和 Key 都没问题,只是 models 里的键名不是模型广场的准确 ID。不要自己补日期后缀,也不要猜版本号。重新打开模型广场,复制完整模型 ID 粘到配置里,重启 OpenCode 再试。
提示:OpenCode 是终端 TUI 程序,改完配置后记得完全退出再启动,让环境变量和配置文件重新加载,否则仍会读到旧的 provider 设置。
5.3 快捷键和 AGENTS.md 的上下文加成
排障期间我顺手整理了快捷键:/undo 撤销、/redo 重做、@ 模糊搜索项目文件、Tab 切换 Plan/Build、Cmd+Esc(Mac)或 Ctrl+Esc(Windows/Linux)进入 IDE 分屏视图。另外,在项目根目录维护一份 AGENTS.md,写出项目结构、构建命令和编码约定,Plan 模式的分析结果会明显更准,这也是原文新手技巧里提到的上下文来源。
6. 模型切换和跑通后的下一步
完成上面的验证流程,你已经有了一个走统一通道的 OpenCode 环境。唯一还需要手动改的,就是 models 里的模型映射。
6.1 先规划再实施,模型也能分工
我现在的习惯是:Plan 阶段用上下文窗口大、擅长阅读代码的模型;Build 阶段切成代码补全更果断的模型。两种模式共用同一把 TaoToken Key,切换模型时不用再去找另一个 Key,只改映射表即可。到底哪个模型更适合当前阶段的代码量,打开模型广场对比列表参数比听别人推荐更靠谱。
6.2 跑通之后接着做的事
如果你还没有创建正式 Key,最顺手的下一步是打开 创建 Key 页面 生成一把用于日常开发;想先不碰终端,可以在 TaoToken 模型对话 里用同一把 Key 发条消息,验证模型选择;长期写代码再看 Coding Plan 的套餐是否比按量更划算。OpenCode 跑在本地,按默认配置代码不会离开机器,把 Key 配好之后,就在终端里放开来试吧。