使用 OpenSpec + 提示词工程 + Harness 思维,构建一站式多 Agent 研发流程

本文展示如何使用 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 聚焦。

相关推荐
JaguarJack2 天前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php·服务端
JaguarJack4 天前
Whim 是什么?一门把 PHP 被否决的设想真跑起来的实验语言
后端·php·服务端
JaguarJack5 天前
PHP Trait 为何可能成为语言的关键特性
后端·php·服务端
JaguarJack12 天前
PHP clone 之后,为什么改副本会影响原对象?
后端·php·服务端
项目管理与代码17 天前
私有化部署研发管理平台有哪些?研发流程与数据安全怎么选
私有化部署·数据安全·研发流程·研发管理
JaguarJack17 天前
现在就值得尝试的 5 个 Laravel 新包
后端·php·laravel·服务端
JaguarJack1 个月前
NativePHP v4 让 Blade 构建原生 iOS 与 Android 界面
后端·php·服务端
卑微的小鬼1 个月前
前后端跨域 CORS
服务端
JaguarJack1 个月前
Fiber 与 PHP 8.6 Polling API 异步初探
后端·php·服务端
CappuccinoRose1 个月前
前端存储体系学习总结文档
前端·客户端·cookie·ssr·服务端·localstorage·sessionstorage