第 5 章 / 共 10 章
让 agent 先采访你
5.1 你写不出规格,是因为你在自己憋
看到这里,最常见的反应是:「道理都对,但我懒得写。」
这个反应是合理的。从空白文件开始写一份规格,需要你一次性把所有隐含条件想全——而人类恰恰不擅长凭空穷举,人类擅长的是被问到时回答。
所以更省力的做法是反过来:让 agent 采访你。它问,你答,它整理成规格。你付出的是十分钟的问答,得到的是一份结构完整的文档。
Claude Code 的官方最佳实践直接给出了这个做法:对较大的功能,先让 Claude 采访你,把结论写成一份 SPEC.md,然后开一个全新会话去执行。

5.2 采访提示词模板
下面这段可以直接用,把方括号里的内容换成你的需求:
我想做:[一句话描述需求]。
先不要写代码,也不要写实现方案。请先采访我,把这个需求问清楚。
要求:
- 一次问 3-5 个问题,等我回答后再问下一轮
- 重点问我可能没想到的部分:边界条件、异常路径、不做什么、和现有模块的关系
- 不要问显而易见的问题
- 当你认为信息足够时,告诉我「可以定稿了」
定稿后,把结果写成 SPEC.md,包含这几节:
目标 / 范围 / 非目标 / 接口与约束 / 验收标准 / 验证方式。
验收标准请用「当……时,系统应……」和「若……,则系统应……」的句式,
每一条都要能对应一个会失败的测试。
如果你用的 agent 支持结构化提问工具(Claude Code 的 AskUserQuestion 就是为此设计的),可以在提示里明确要求使用它——这样问题会以选项形式出现,回答成本更低。
采访会问出什么? 以导出功能为例,实际跑一轮,通常会被问到这些你原本没想过的:
- 导出的文件名是否需要包含日期?重复导出会覆盖吗?
- 订阅里如果有失效的源,导出时要不要跳过?
- 分组是单层还是可嵌套?
- 导出后要不要有成功提示?提示多久消失?
- 这个功能要不要写进用户文档?
其中至少有两三条是你在自己憋规格时会漏掉的。这就是采访的全部价值。
5.3 计划模式:先只读,再动手
采访阶段有一个硬性要求:agent 不能动文件。否则它会一边问你问题,一边已经开始改代码了。
Claude Code 提供了专门的计划模式来保证这一点。进入方式有两种:启动时加参数,或者会话中切换。
claude --permission-mode plan
会话中则连按 Shift+Tab,直到状态栏出现 ⏸ plan mode on。在这个模式下,Claude 只读文件、只回答问题、只产出计划,不会写入磁盘。计划出来后按 Ctrl+G 可以把它拉进你的编辑器直接手改——这一步很重要,规格的最终定夺权应该在你手里,而不是它写完你点同意。
Codex CLI 等其他工具也有等价的只读/计划档位,具体键位以你当前版本的文档为准。原理是一样的:把「想清楚」和「动手」用一道权限闸门隔开。
5.4 换一个新会话去执行
规格定稿后,不要在同一个会话里接着让它实现。原因是上下文工程的老问题:采访过程往往有十几轮问答,里面包含大量被否决的方案、绕过的弯路、中途改变的想法。这些内容留在上下文里,会持续干扰实现阶段的判断。
正确做法是:规格落盘 → /clear 或开新会话 → 让新会话读 SPEC.md 开始执行。新会话的上下文里只有一份干净的、已定稿的规格,没有那些噪音。
这也是规格驱动开发和上下文工程真正咬合的地方:规格是一次「把状态写到上下文之外」的动作。写完之后,你可以随时丢弃对话历史,因为结论已经在文件里了。