1. 为什么 Plan 和 Build 要分开用一个真实的重构场景很多人第一次用 Open Code习惯打开终端就敲一句“帮我重构这个模块”然后看着它噼里啪啦改一堆文件最后git diff一看改得七零八落还得手动回滚。问题不在模型能力而在于你把“想清楚”和“动手做”这两件事塞进了同一个回合。Open Code 的 Plan / Build 双模式本质上是把软件工程里“先设计后编码”的流程固化到了工具层。Plan 模式下的 Agent 只读不写它会去读你的文件、分析依赖、给出方案但不会碰你的代码Build 模式才真正落盘修改。这个边界感是它比“一个对话框打天下”的工具更靠谱的地方。我试过在一个 3000 行的老项目里加邮箱验证功能直接 Build 模式下指令下去它把user.ts、auth.ts、mailer.ts全改了结果和现有的 session 逻辑冲突。后来改成先 Plan让它读src/modules/user/和src/services/mail/输出一份带文件路径和改动点的方案我确认后再切 Build 执行一次通过。差别就在这一步“确认”。这篇是 Open Code 教程的第二篇聚焦命令体系与快捷键组合主线就是 Plan 到 Build 的完整链路。你会拿到可复制的命令清单、快捷键速查表以及每一步怎么验证执行结果。适合已经装好 Open Code、想把它真正用进日常开发流的人。如果你还没配好模型接入第三节会给出可复制的配置片段用 TaoToken 作为统一入口省去多平台切换的麻烦。核心检索词先明确Open Code 是什么——一个终端里的 AI 编码代理能做什么——通过命令、快捷键、Plan/Build 双模式完成从规划到落地的编码任务适合谁——习惯命令行、想让 AI 真正改代码而不是只聊天的开发者。2. 命令与快捷键速查斜杠命令、Leader 键、 引用和 ! ShellOpen Code 的交互层由四套输入机制组成斜杠命令、Leader 键快捷键、 文件引用、! Shell 前缀。把它们记熟操作效率会有质的变化。斜杠命令在输入框敲/触发。常用的有/help看帮助、/models列模型、/init生成 AGENTS.md、/new开新会话、/sessions切换历史会话、/undo和/redo撤销重做、/compact压缩上下文省 Token、/export导出对话为 Markdown、/editor调外部编辑器写长消息、/exit退出。其中/undo依赖 Git项目必须是 Git 仓库它会回滚到上一次提交前的状态并移除对应消息。Leader 键默认是Ctrlx按下后再接一个字母。Ctrlx h帮助、Ctrlx m模型列表、Ctrlx n新会话、Ctrlx l会话列表、Ctrlx i初始化项目、Ctrlx u撤销、Ctrlx r重做、Ctrlx c压缩、Ctrlx d切换工具执行详情、Ctrlx e外部编辑器、Ctrlx x导出、Ctrlx t主题、Ctrlx b侧边栏、Ctrlx aAgent 列表、Ctrlx q退出。这套 Leader 键的好处是不和终端本身的快捷键打架。 符号用于引用文件支持模糊搜索。输入api.ts会把文件内容自动加入上下文AI 能直接看到。可以一次引用多个api.ts types.ts 这两个文件的关系是什么。引用目录也行src/utils/ 这个目录下的文件是做什么的! 前缀直接执行 Shell 命令输出作为工具结果进入对话。比如!git status、!npm test、!tree -L 2。AI 看到执行结果后再回答比你自己复制粘贴报错信息准确得多。基础快捷键里Enter提交、ShiftEnter或Ctrlj换行、Ctrlv粘贴、Ctrlc清空输入或退出、Tab切换 AgentPlan/Build、ShiftTab反向切换、Escape中断当前会话。消息浏览用PgUp/PgDown翻页CtrlAltu/CtrlAltd翻半页Ctrlg或Home跳首条CtrlAltg或End跳末条Ctrlx y复制消息。机制触发方式典型用途斜杠命令/会话管理、模型切换、导出Leader 键Ctrlx 字母高频操作免冲突文件引用把文件内容喂给 AIShell 前缀!执行命令并让 AI 看结果提示/compact在长会话里很关键。上下文快满时压缩一次能省下不少 Token同时保留关键信息。3. 可复制配置Base URL、Key、Model ID 三件套在跑 Plan/Build 工作流之前得先把模型接入配好。Open Code 支持多种提供商这里用 TaoToken 作为统一入口它的 API 地址是https://taotoken.net/api兼容主流模型协议配置一次就能在多个模型间切换。配置文件通常放在项目根目录或用户配置目录下。以 JSON 格式为例可复制的片段如下{ provider: { taotoken: { baseURL: https://taotoken.net/api, apiKey: sk-你的Key, models: { claude-sonnet: { id: claude-sonnet-4-20250514, name: Claude Sonnet }, gpt-4o: { id: gpt-4o, name: GPT-4o } } } }, defaultModel: claude-sonnet }如果你用的是 TOML 风格配置等价写法[provider.taotoken] baseURL https://taotoken.net/api apiKey sk-你的Key [provider.taotoken.models.claude-sonnet] id claude-sonnet-4-20250514 name Claude Sonnet [provider.taotoken.models.gpt-4o] id gpt-4o name GPT-4o defaultModel claude-sonnet三件套必须齐全Base URL 指向https://taotoken.net/apiKey 从控制台生成Model ID 用上面表格里的准确值。少任何一个请求都会失败。Key 的获取入口在 TaoToken 控制台的 API Keys 页面生成后复制到配置里即可。配好后用/models或Ctrlx m验证模型列表是否加载出来。如果列表为空先检查 JSON 语法有没有多余逗号再确认 Key 没有过期。注意不要把 Key 硬编码进提交到 Git 的文件里。用环境变量或本地配置文件并加进.gitignore。对于长期做编码和 Agent 任务的场景Coding Plan 提供了更稳定的额度方案适合把 Open Code 当日常主力工具的人。配置层面它和上面的三件套一致只是计费方式不同。4. 分步验证从 Plan 规划到 Build 落地的完整链路配置就绪后走一遍完整链路。假设要给用户模块加邮箱验证功能。第一步切到 Plan 模式。按Tab右下角显示 “Plan”。然后输入我想给用户模块添加邮箱验证功能帮我规划实现方案。 参考 src/modules/user/ 和 src/services/mail/ 的现有结构。Plan Agent 会读文件、分析依赖输出一份带文件路径和改动点的方案。它不会改任何代码。这一步的验证动作是看方案里提到的文件路径是否真实存在改动点是否符合你的预期。如果方案跑偏直接补充约束再问一轮成本很低。第二步确认方案。如果方案里有你不认可的地方比如它想引入新依赖你可以说“不要引入新依赖用现有的 mailer 封装”。Plan 模式反复迭代不产生代码变更这是它最大的价值。第三步切到 Build 模式。按Tab右下角变 “Build”。输入按照刚才的方案开始实现。Build Agent 会真正修改文件。执行过程中可以用Ctrlx d切换工具执行详情看它每一步在做什么。如果发现方向不对按Escape中断。第四步验证结果。用!git diff看改动用!npm test跑测试。如果改坏了/undo回滚。/undo依赖 Git所以项目必须是 Git 仓库且改动前最好有一次干净的提交。第五步处理长会话。如果对话很长/compact压缩一次再继续。需要导出记录就/export。整个链路的关键在于Plan 阶段允许你低成本试错Build 阶段才产生真实变更。把“想”和“做”分开返工率会明显下降。对于复杂任务还可以用general子代理做多步骤搜索用explore快速定位文件。子代理会创建子会话用Ctrlx加左右方向键在父子会话间切换。5. 常见报错排查401、local proxy failed、reading choices、OAuth接入和运行过程中几类报错出现频率最高逐个对照。401 Unauthorized。最常见的原因是 Key 无效或没带上。检查配置文件里的apiKey字段是否填了完整的sk-开头字符串Base URL 是否是https://taotoken.net/api注意不要多加路径。如果用的是环境变量确认变量名和配置里引用的一致。还有一种情况是 Key 被撤销了去控制台重新生成一个。local proxy failed。这个报错通常出现在网络层说明请求没能到达目标地址。先确认 Base URL 拼写正确没有多余空格。再检查本地是否有其他进程占用了相同端口。如果配置里写了代理相关字段先移除用直连方式测试。reading choices 相关报错。这类错误一般是响应格式不符合预期常见于 Model ID 填错。比如把claude-sonnet-4-20250514写成了别的版本号服务端返回的结构就对不上。对照第三节的 Model ID 表逐个核对。另外确认 provider 协议类型和模型匹配不要用 OpenAI 协议去请求只支持 Anthropic 协议的端点。OAuth 相关报错。如果你用的是需要 OAuth 授权的提供商报错通常指向 token 过期或回调地址不匹配。检查授权流程是否走完token 是否需要刷新。用 TaoToken 的 Key 方式接入可以绕开 OAuth 流程配置更直接。排查通用步骤先用!curl手动请求一次 API确认 Key 和地址本身可用再看 Open Code 的日志输出定位是配置层还是网络层最后用/models验证模型列表能否加载。三件套Base URL、Key、Model ID任何一项出错都会导致请求失败逐项核对比盲目重试有效。提示遇到报错先把完整错误信息用!前缀跑一遍相关命令让 AI 看到原始输出它的定位会比只看你转述的片段准确。6. 把 Plan/Build 用成肌肉记忆命令和快捷键的价值在于形成肌肉记忆。Tab切模式、Ctrlx系列做高频操作、喂文件、!跑命令这四套组合起来Open Code 才真正变成终端里的编码搭档。Plan 到 Build 的链路本质是给 AI 编码加了一道人工确认的闸门。复杂功能先 Plan简单修改直接 Build代码审查用 Plan 分析——这个判断本身比记快捷键更重要。配置层面Base URL、Key、Model ID 三件套配好一次后面就是纯操作的事。需要生成 Key 或查看接入细节去 API Keys 页面和接入文档想先验证模型对话效果用模型对话页面试几轮长期编码和 Agent 任务Coding Plan 更合适。下一篇会进入实战案例把今天这套命令和模式用到真实开发场景里。