~/content/opencode-plan-与-build-模式详解

OpenCode Plan 与 Build 模式详解

比较 OpenCode Plan 与 Build 的用途,用 Tab 切换代理,配置权限,并从审阅方案推进到经过验证的代码修改。

last_updated: "2026-10-02"

先使用 Plan 理解问题与修改方案,再使用 Build 实现和验证。旧教程中的“模式”,当前通过 OpenCode 的**主代理(primary agents)**配置。本页保留原有 URL,方便继续使用收藏的链接。

以下行为已于 2026 年 10 月 2 日对照官方代理文档核对。OpenCode Tutorial 是独立教程站。

Plan 与 Build 应该怎么选?

任务建议起点期望结果
理解陌生仓库Plan相关文件与当前行为的说明
比较实现方案Plan方案、取舍与受影响的文件
实现已确认的修改Build代码差异与验证结果
调查失败测试先 Plan,再 Build原因、针对性修复与通过的测试
审查完成的修改Plan对代码差异的发现与疑问

Build 是默认主代理,可以使用全部工具。Plan 的权限更受限:官方默认设置会在文件编辑和 bash 命令执行前询问。项目或全局权限可以覆盖这些默认值,行为不一致时应检查配置。

不能把 Plan 理解为无条件保证不执行命令、不修改文件。如果需要明确禁止某类操作,请设置对应限制。

如何切换 Plan 与 Build

在终端界面按 Tab 循环切换主代理,并确认界面显示的代理名称。自定义键盘设置可能使用不同的 switch_agent 快捷键,参阅快捷键配置。

切换代理不会自动执行之前的方案。审阅方案后,应向 Build 发出明确的实现请求。

一个实际工作流程

假设设置页面刷新后丢失已保存的偏好。先在 Plan 中提出具体请求:

bash
追踪设置页面保存偏好的流程。找出保存的值为何可能在刷新后丢失,
列出相关文件并提出修复方案,暂时不要实现。

检查诊断是否解释了实际现象。有效方案应指出状态存在哪里、启动时如何读取,以及哪个测试可以复现问题。与其列一长串通用原则,不如回答这些具体问题。

切换至 Build 后提出实现请求:

bash
实现刚才的持久化修复,修改范围限定在设置流程。
运行现有的相关测试,并解释最终的代码差异。

接受结果前,复现原始问题、检查差异,并确认测试覆盖了这次失败。不能只依据代理宣称“已完成”来判断修复成功。

为 Plan 配置更严格的权限

希望 Plan 明确禁止编辑和 shell 命令时,把以下字段合并到已有 opencode.json:

bash
{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "plan": {
      "permission": {
        "edit": "deny",
        "bash": "deny"
      }
    }
  }
}

这是主动覆盖默认设置,也会阻止 Plan 通过 shell 查看信息和运行测试。如果希望逐次决定,可以把相应权限设为 "ask"。权限指南介绍了完整配置方式。

迁移旧的 mode 配置

本站旧示例使用过顶层 mode 和 .opencode/modes/。当前指南使用:

  • 在 opencode.json 中通过 agent 配置代理。
  • 在 .opencode/agents/ 中存放项目 Markdown 代理定义。
  • 在 ~/.config/opencode/agents/ 中存放全局 Markdown 代理定义。
  • 通过 switch_agent 配置切换快捷键。

先备份旧配置,再按原来的用途迁移,不要把旧字段直接复制到新文件。代理指南介绍主代理与自定义代理;使用新版本时应对照官方文档核对。

常见问题

Plan 会写文件吗?

默认编辑权限会先询问。如果要禁止编辑,将 agent.plan.permission.edit 设为 "deny",同时检查项目配置是否覆盖了全局设置。

为什么 Build 仍会询问权限?

工具可用性和权限设置是两个因素。项目策略或自定义配置可以要求特定操作先经过确认,即使当前使用的是 Build。

哪个模式能解决 LSP 问题?

切换到 Build 不会自动启用语言服务器。请按照 OpenCode LSP 配置与故障排查检查配置及服务器的运行条件。

尚未安装应用时,从安装指南开始。

Comments (Coming Soon)

Configure Giscus in environment variables to enable comments.