本文展示如何使用 OpenSpec + 一套分阶段 Prompt,有条理地完成开发任务。
我们会使用 任意AI IDE/插件的Vibe模式,结合openspec,有条理地完成任务。
第一步:生成 requirements_plan.md
第一步不要急着让 AI 写代码。
先让 AI 帮你生成一份 需求计划文件 requirements_plan.md。
它的作用是主动提出问题(关键),避免 AI 一开始就乱猜
Prompt:
js
你的角色:你是一位专业的产品经理,负责创建定义明确的用户故事,这些用户故事将成为开发系统的契约,具体内容如下面任务部分所述。
请为接下来的工作制定计划,并在需求计划文件 requirements_plan.md 中写下你的步骤,为每个步骤添加复选框。
如果任何步骤需要我的澄清,请用 [Question] 标签添加问题,并创建一个空的 [Answer] 标签供我填写答案。
如果某个问题我的回答不清楚,请在 requirements_plan.md 原问题处添加 Updated 字样追加问题,并通知我。
此外你可以在 requirements_plan.md 追加问题,通过多轮迭代,直到你全面明白我的意图。
同时为了便于后续步骤,你也要提出非功能性需求的一些问题,例如:
- 验收标准
- 验证方式
- 边界条件
- 异常处理
- 性能 / 可维护性 / 兼容性要求
不要自行做出关键决策。
完成计划后,请求我审查和批准。
在我批准后,你可以按照计划逐步执行,并输出中文的需求文档。
每完成一个步骤,在计划中将相应的复选框标记为已完成。
任务:
【在这里描述你的任务】
第二步:回答 requirements_plan.md 中 AI 的提问
在AI生成的requirements_plan.md,AI会让我们澄清各种问题(这就是这个提示词最有价值的部分)。我们需要谨慎和尽量全面地回答。这会直接决定AI生成和执行的最终Task的优劣。
如果你认为问题还没有完全澄清,请使用下面的prompt触发AI 追加提问。
Prompt:
js
我已澄清 requirements_plan.md,请调查并更新它。
如果某个问题我的回答不清楚,请在 requirements_plan.md 原问题处添加 Updated 字样追加问题。
第三步:生成 design_plan.md
此时我们在同一个session ,基于已有的:requirements_plan.md,生成design_plan.md。
注意这里不是 design.md,而是先让 AI 生成一份设计计划文件 design_plan.md。
它的作用是避免AI拍脑袋定方案,同时也能澄清细节。和requirements_plan.md一样,它也会让我们回答问题,这是澄清设计的关键。
Prompt:
js
我已经回答完 requirements_plan.md 中的问题。
设计阶段需要你提设计的问题,并在设计计划文件 design_plan.md 中写下你的步骤,为每个步骤添加复选框。
如果任何步骤需要我的澄清,请用 [Question] 标签添加问题,并创建一个空的 [Answer] 标签供我填写答案。
如果某个问题我的回答不清楚,请在 design_plan.md 中原问题处添加 Updated 字样追加问题,并通知我。
此外你可以在 design_plan.md 中追加问题,通过多轮迭代,直到你全面明白我的意图。
不要自行做出关键决策。
完成计划后,请求我审查和批准。
在我批准后,你可以按照计划逐步执行。
每完成一个步骤,在计划中将相应的复选框标记为已完成。
请额外关注:
- 模块划分
- 依赖关系
- 可测试性
- 哪些部分可以并行
- 验证方式
- 风险点和例外情况
如果设计比较复杂,回答完后还可以再补一轮追问:
js
我已经回答完 design_plan.md 中的问题。
如果某个问题我的回答不清楚,请在 design_plan.md 原问题处添加 Updated 字样追加问题,并通知我。
此外你可以在 design_plan.md 中追加问题,通过多轮迭代,直到你全面明白我的意图。不要自行做出关键决策。完成计划后,请请求我审查和批准。
再几轮问答过后,AI将完全明白我们的设计理念。
第四步:基于 design_plan.md 生成 design.md
当设计问题都澄清后,再让 AI 生成最终设计文档 design.md。
Prompt:
js
我已经回答完 design_plan.md 中的问题。基于 design_plan.md 请生成 design.md,这是最终的设计文档。
如果任务比较复杂,可以要求它在 design.md 中写清楚:
- 总体设计
- 模块边界
- 关键数据结构 / 接口
- 依赖关系
- 验证方案
- 风险点
例如:
bash
我已经回答完 design_plan.md 中的问题。基于 design_plan.md 请生成 design.md,这是最终的设计文档。
要求:
1. 设计文档需要包含目标、范围、约束、关键设计决策和不做事项。
2. 需要明确模块划分、依赖关系和关键实现路径。
3. 需要明确验证方案、完成标准和失败处理方式。
4. 需要标识可并行执行和必须串行执行的部分。
5. 需要标识人工审批点与风险点。
6. 文档应直接服务于后续任务拆解和多 Agent 执行。
但注意,这会让AI生成的设计文档更加复杂,同时也让review更艰难。
我们需要在任务的敏捷和质量中寻求平衡。
第五步:基于 design.md 生成最终的 tasks.md
这个任务,建议开新的session,因为我们在生成task的时候,生成文档的路径中已经有很多无关内容。记住一点:AI Context并不是越大越好,而是越专越好。
如果design文档足够复杂,我们可以按每个设计的模块在不同的session中生成对应的tasks。
Prompt:
js
设计文档:design.md 已经完成,请继续。
根据 requirement.md,design.md 和 @yourProjectPath/AGENTS.md 的规范,创建 OpenSpec proposal。
在任务划分的时候,要注意任务之间的依赖关系,将可以并行执行的任务进行分组,并标注这些可以并行执行的任务组,以便可以将这些任务并行处理,减短交付时间。
对于无IO的纯逻辑方法/类,你需要先生成测试用例。
你需要将"单元测试用例"的生成和代码的生成拆分在不同的task中。
每个 task 都需要尽量明确:
- 输入
- 输出
- 依赖
- 验证方式
- 完成标准
- 失败时如何处理
这一步很关键。
如果 tasks.md 写得不好,后面多 Agent 执行时很容易混乱。
第六步:执行 tasks.md
此时,我们新建一个Session(关键操作,因为我们已经有设计文档和任务文档,之前生成各种Plan的context对执行任务并无用处,反而会造成AI的幻觉)。
Prompt:
js
请阅读需求文档:proposal.md,设计文档:design.md,任务文档: tasks.md。
我Review通过,请开始执行这些任务,在执行中,同步更新openspec目录中的关联内容。执行完成后不要自动archive,我要检查。
如果你想把 Harness 要素补进去,可以加强一点:
js
请阅读需求文档:proposal.md,设计文档:design.md,任务文档: tasks.md,以及 AGENTS.md。
我Review通过,请开始执行这些任务。
要求:
1. 严格按照 tasks.md 中的依赖关系和并行分组执行。
2. 每完成一个任务,都同步更新任务状态。
3. 每个任务必须执行对应的验证步骤,不能仅凭主观判断视为完成。
4. 如果验证失败,请记录失败原因,并按任务中的失败处理方式继续或暂停。
5. 遇到需要人工确认的节点时暂停并通知我。
6. 执行完成后不要自动archive,我要检查。
多 Agent 执行建议
如果任务简单,可以在一个 session 中做完所有 tasks。
如果任务复杂,建议拆开执行。
更好的方式是多个 Agent 并行,例如:
- 一个 Agent 写测试
- 一个 Agent 写实现
- 一个 Agent 做验证和修补
- 一个 Agent 做集成和整理
这样可以减少上下文污染,也更容易让每个 Agent 聚焦。