加载中...
返回专栏
3 / 21

【OpenCode系统性指南】第3篇:Plan与Build:OpenCode的核心工作流

【OpenCode系统性指南】第3篇:Plan与Build:OpenCode的核心工作流

概念图

引言

你是否经历过这样的场景:让AI帮你改代码,结果它一口气改了十几个文件,最后发现改错了方向,只能手动一行行恢复。这不是AI的问题,而是你用错了工作模式。OpenCode(以及Claude Code)提供了Plan和Build两种核心模式,正确使用它们,可以让你的AI编程效率提升数倍,同时大幅降低"改崩代码"的风险。


一、90%的人用错的模式切换

很多开发者打开OpenCode就直接开始提需求:"帮我实现一个用户登录功能"。AI立刻开始写代码、改文件、跑命令——看起来很高效,但问题也随之而来:改了哪些文件?为什么要这样改?有没有更简单的方案?这些问题在代码已经写完之后才想起来问,为时已晚。

最常见的错误用法:

  1. 一上来就Build:不做分析直接执行,结果方向跑偏
  2. Plan模式当摆设:知道有这个功能但从来不用
  3. 频繁切换无规律:一会Plan一会Build,AI也跟着混乱
  4. 不审查直接确认:Plan模式下生成的计划看都不看就切换执行

专业开发者的做法完全不同。根据社区调研,高效用户遵循"80/20法则"——80%的时间用于规划,只有20%的时间用于实际执行。这不是浪费时间,而是把精力放在"想清楚"上,真正动手写代码反而是最快的一步。


二、Plan模式:先想清楚再动手

Plan模式是OpenCode的"只读分析"模式。在这个模式下,AI可以读取你的代码库、搜索文件、分析依赖,但绝对不能修改任何文件或执行任何命令

什么时候用Plan模式

根据官方文档和实践经验,以下场景强烈推荐使用Plan模式:

场景为什么需要Plan
多文件改动功能涉及3个以上文件时,先理清依赖关系
陌生代码库接手别人的项目,先让AI帮你"看懂"
复杂需求需求描述超过3句话,说明逻辑复杂需要拆解
安全审计分析代码漏洞但不想改动任何东西
技术方案评估比较多种实现方案的优劣

激活Plan模式的方法

# 方法1:启动时指定
opencode --permission-mode plan

# 方法2:会话中切换(推荐)
按 Tab 键切换模式

# 方法3:Claude Code 用户
按 Shift+Tab 两次:Normal → Auto-Accept → Plan Mode

如何审查AI给出的方案

Plan模式下,AI会生成一份详细的实现计划。不要急着切换到Build模式,先做这几件事:

  1. 检查完整性:计划是否覆盖了所有需求点?
  2. 评估复杂度:有没有过度设计的嫌疑?能不能更简单?
  3. 识别风险点:哪些改动可能影响现有功能?
  4. 追问细节:对任何不确定的地方要求AI补充说明

一个真实的案例:开发者让AI规划"添加用户头像上传功能",AI的计划涉及7个文件包括数据库迁移。开发者在Plan模式下追问"能不能只用现有的存储服务",最终方案精简到只改3个文件,省去了一整天的数据库迁移工作。

迭代优化计划

Plan模式的一大优势是可以反复迭代而不产生任何代码变更。你可以:

  • 让AI提供多个方案供选择
  • 质疑某个设计决策,要求重新考虑
  • 补充新的需求约束,看计划如何调整
  • 请AI评估方案的性能影响

记住:Plan模式下的每一次讨论都是免费的,不会留下任何代码债务。而在Build模式下改错一行代码,可能需要半小时来修复。


三、Build模式:放手让AI干活

当你对Plan模式下的方案满意后,就可以切换到Build模式执行了。Build模式是OpenCode的默认模式,AI拥有完整的读写权限,可以修改文件、运行命令、创建新文件。

执行与权限确认

Build模式并不意味着AI可以"为所欲为"。OpenCode内置了权限确认机制:

  • 高敏感操作(删除文件、执行bash命令):默认需要用户确认
  • 中等敏感操作(修改现有代码):根据配置决定
  • 低敏感操作(创建新文件、读取文件):自动执行

这种分层权限设计让你既享受AI的效率,又保持对关键操作的控制权。

/undo与/redo:你的安全网

即使做好了规划,执行过程中也可能出问题。OpenCode提供了强大的撤销机制:

/undo    # 撤销上一步操作
/redo    # 重做被撤销的操作
/rewind  # 回到历史检查点(Claude Code)

检查点(Checkpoint)机制:每次你发送提示给AI,系统都会自动创建一个检查点。这意味着你可以随时"时光倒流"回到任意一个历史状态。

Build模式执行流程

/rewind的四种恢复模式

当你触发/rewind(按Esc两次或输入命令)时,可以选择:

  1. Restore code and conversation — 完全恢复,代码和对话都回到那个时间点
  2. Restore conversation only — 只恢复对话历史,保留当前代码状态
  3. Restore code only — 只恢复文件变更,保留当前对话上下文
  4. Summarize from here — 压缩之前的对话,释放上下文空间

重要提醒:/rewind追踪的是OpenCode会话内的变更,不会追踪你在会话外手动做的修改,也不会追踪bash命令造成的文件系统变化(如rm、mv)。对于这些情况,Git仍然是你的最终安全保障。


四、一个完整的功能开发演示

让我们通过一个真实案例来演示Plan和Build的完整工作流。假设你要为项目添加"深色模式"功能。

第一步:Plan模式探索

[Plan Mode]
用户:我想给这个React项目添加深色模式,请先分析现有代码结构,
     然后给出实现方案。

AI开始读取文件:检查CSS框架、组件结构、状态管理方案。它发现项目使用了Tailwind CSS和Zustand,因此推荐利用Tailwind的dark类和Zustand的持久化存储。

生成的计划:

  1. 在tailwind.config.js中启用darkMode: 'class'
  2. 创建useThemeStore管理主题状态
  3. 添加ThemeToggle组件
  4. 在根布局监听系统主题偏好
  5. 更新现有组件的暗色样式

第二步:审查与迭代

用户:第5步需要更新所有组件吗?有没有更简洁的方式?

AI重新分析后建议:使用Tailwind的dark:前缀配合CSS变量,只需要在全局样式中定义颜色变量,组件使用变量即可自动适配,无需逐个修改组件。

第三步:切换Build执行

确认方案后,切换到Build模式:

[Build Mode]
用户:按优化后的方案执行

AI开始执行:修改配置文件、创建store、添加组件。每一步你都可以看到具体的文件变更。

第四步:验证与调整

用户:运行开发服务器,截图看看效果

如果效果不理想,可以使用/undo撤销最近的变更,或者在Plan模式下讨论调整方案。

完整工作流总结

Plan Mode(分析)
    ↓ 理解需求、探索代码库、制定计划
    ↓ 用户审查并迭代优化计划
    ↓ 审查通过
Build Mode(实施)
    ↓ 执行计划、编写代码
    ↓ /undo 调整 /redo 恢复
    ↓ 验证结果
Plan Mode(复盘)—— 如有需要

这个流程看似繁琐,实际上避免了"改了又改"的低效循环。正如一位资深开发者所说:"在Plan模式下多花10分钟讨论,往往能省下Build模式下1小时的返工。"


小结

  • Plan模式是只读分析:适合探索代码、制定方案、迭代讨论,绝不产生代码变更
  • Build模式是执行阶段:确认方案后再执行,配合/undo和/redo实现安全开发
  • 遵循80/20法则:80%规划、20%执行,"想清楚"比"动手快"更重要
  • 检查点是你的安全网:/rewind可以回到任意历史状态,但Git仍是最终保障
加载中...