用 Plan → Code 循环管住 Agent

刚用 Claude Code 的时候我有个毛病: 打开终端, 直接敲一句话告诉它帮我改什么, 然后看着它一顿操作, 最后发现方向完全不对。

后来想明白一个道理——Agentic Coding 和写代码是两套不同的技能。写代码的时候手跟着脑子走, 但用 agent 的时候, 我的价值在于"定义目标"和"审核结果", 而不是替它打字。

那怎么让 agent 不走偏? 我总结了四个步骤: 探索 → 规划 → 编码 → 提交。

第一步: 先探索再动手

Plan 模式是 Claude Code 的只读模式。启动的时候加个参数:

claude --permission-mode plan

会话里我按 Shift+Tab 在 Plan 和 Accept-Edits 之间切换, 或者直接打 /plan。

为什么要先探索? Claude 对项目的理解完全取决于我给了什么上下文。让它自己把相关文件读一遍, 画出一张地图, 比我凭直觉说"去改那个文件"要靠谱得多。

碰到特别棘手的架构问题, 我习惯在 prompt 里加一句 “think carefully before proposing anything”。多数情况下, 它前面的推理越仔细, 后面的返工就越少。

不过我也没必要教条。如果任务很小——修个 typo、改个变量名、加一行日志——我直接让它做, 不走完整套 plan 流程。官网文档也说了: 如果能用一句话描述完改动内容, 就跳过 plan。

第二步: 看完代码, 让它写个计划

探索完之后, 我不会让 Claude 急着开工。让它把理解到的现状、要改什么地方、怎么改, 写成一份计划。

我自己用的方法是让 Claude 把不确定的问题写到一个 planning.md 里, 我来回答, 来回过几轮。计划里至少要说清楚:

  • 当前代码的哪几块需要动
  • 每一处计划怎么改
  • 有哪些地方拿不准, 需要我决策

等计划我看着没问题了, 再让它动手。计划做得好的任务, 实现阶段基本一次通过, 不需要回头修修补补。

还有一种情况可以用 Auto 模式——Claude 自己用分类器判断操作是否安全, 不安全的才问我, 常规操作直接放行。启动时 claude --permission-mode auto。适合我对大方向有信心、但不想每步都点确认的场景。

第三步: 按计划逐个实现, 一次一块

计划确认之后, 我按 Shift+Tab 切到 Accept-Edits 模式。这时候 Claude 可以不用每步等我确认就干活, 效率高很多。

关键点: 我不会一口气让它改完整个计划。一次只要求一个函数, 或者先让它把函数签名都 stub 出来, 再逐个填充。

原因很简单——如果某个函数思路偏了, 及时纠正成本很低。如果一口气改了 10 个文件然后发现第一个假设就错了, 回退起来非常痛苦。

第四步: 干净提交

Claude 有自动 commit 的功能, 但我不依赖它。

我在逻辑检查点手动 git add 和 git commit, 比让 agent 自动提交好很多:

  • 有些改动我 review 之后想放弃, 干净的 commit 让回退变成一行命令
  • 每个 commit 只做一件事, review 的人能看懂
  • 提交前我扫一眼 diff, 还能顺手检查有没有安全问题

习惯了这套循环之后, 我发现大部分精力花在"探索"和"规划"上,“编码"反而是最轻松的一步。节奏对了——先想清楚再动手, 远比边改边想要高效。

文章链接:

https://time-friend.com/zh/archive/claude-code-plan-code-loop/

# 相关文章推荐