name: implement_plan description: 从thoughts/shared/plans中实施技术计划并进行验证 user-invocable: false
实施计划
您的任务是实施来自thoughts/shared/plans/的已批准技术计划。这些计划包含具有特定更改和成功标准的阶段。
执行模式
您有两种执行模式:
模式1:直接实施(默认)
适用于小型计划(3个或更少任务)或用户请求直接实施时。
- 您自己实施每个阶段
- 上下文在主对话中累积
- 用于快速、聚焦的实施
模式2:代理编排(推荐用于大型计划)
适用于具有4个或更多任务或需要保持上下文关键性的计划。
- 您作为精简编排器
- 代理执行每个任务并创建交接
- 抗压缩性:即使上下文压缩,交接仍持久
- 用于多阶段实施
要使用代理编排模式,请说:“我将为此计划使用代理编排”并按照下面的代理编排部分操作。
入门指南
当给定计划路径时:
- 完整阅读计划并检查任何现有勾选标记(- [x])
- 阅读原始工单和计划中提到的所有文件
- 完整阅读文件 - 从不使用limit/offset参数,您需要完整上下文
- 深入思考各部分如何组合
- 创建待办列表以跟踪进度
实施前风险检查
在开始实施之前,运行深度事前分析:
/premortem deep <plan-path>
这根据综合检查表分析计划:
- 技术风险(可扩展性、依赖、数据、安全)
- 集成风险(破坏性更改、迁移、回滚)
- 过程风险(需求不清晰、利益相关者输入)
- 测试风险(覆盖缺口、负载测试需求)
如果识别出高严重性风险:
- 事前分析将通过AskUserQuestion阻止
- 用户必须:明确接受风险、添加缓解措施或研究解决方案
- 如果添加了缓解措施,在继续之前更新计划
跳过事前分析如果:
- 计划已有“## 风险(事前分析)”部分并包含缓解措施
- 用户明确请求跳过(
--skip-premortem)
当事前分析通过后,如果您理解需要做什么,开始实施。
如果未提供计划路径,请请求一个。
实施理念
计划经过精心设计,但现实可能混乱。您的职责是:
- 遵循计划的意图,同时适应实际情况
- 完全实施每个阶段后再移至下一个
- 验证您的工作在更广泛的代码库上下文中有意义
- 在计划中更新复选框以标记完成部分
当事情与计划不完全匹配时,思考原因并清晰沟通。计划是您的指南,但您的判断也很重要。
如果您遇到不匹配:
- 停止并深入思考为何计划无法遵循
- 清晰呈现问题:
阶段[N]中的问题: 预期:[计划所述] 发现:[实际情况] 为何重要:[解释] 我应该如何继续?
验证方法
实施一个阶段后:
- 运行成功标准检查(通常
make check test覆盖所有) - 在继续之前修复任何问题
- 在计划和待办列表中更新进度
- 使用Edit在计划文件本身中勾选已完成项
- 暂停进行人工验证:完成一个阶段的所有自动化验证后,暂停并告知人类该阶段已准备好进行手动测试。使用此格式:
阶段[N]完成 - 准备手动验证 自动化验证通过: - [列出通过的自动化检查] 请执行计划中列出的手动验证步骤: - [从计划中列出手动验证项] 告诉我手动测试何时完成,以便我继续到阶段[N+1]。
如果指示连续执行多个阶段,跳过暂停直到最后一个阶段。否则,假设您只做一个阶段。
在用户确认之前,不要勾选手动测试步骤中的项。
如果您卡住
当某些事情不如预期工作时:
- 首先,确保您已阅读并理解所有相关代码
- 考虑代码库自计划编写以来是否已演变
- 清晰呈现不匹配并请求指导
谨慎使用子任务 - 主要用于针对性调试或探索不熟悉领域。
可恢复代理
如果计划由plan-agent创建,您可能能够恢复它以澄清:
- 检查
.claude/cache/agents/agent-log.jsonl以获取plan-agent条目 - 查找
agentId字段 - 要澄清或更新计划:
Task( resume="<agentId>", prompt="Phase 2 isn't matching the codebase. Can you clarify..." )
恢复的代理保留其完整的先前上下文(研究、代码库分析)。
可恢复的代理:
plan-agent- 创建了实施计划oracle- 研究了最佳实践debug-agent- 调查了问题
恢复工作
如果计划有现有勾选标记:
- 信任已完成的工作已完成
- 从第一个未勾选项开始
- 仅当某些事情似乎不对时才验证先前工作
记住:您是在实施解决方案,而不仅仅是勾选框。保持最终目标并维持前进动力。
代理编排模式
当实施大型计划(4个或更多任务)时,使用代理编排以保持抗压缩性。
为何使用代理编排?
问题:在长时间实施期间,上下文累积。如果自动压缩在任务中途触发,您失去实施上下文。在80%上下文创建的交接变得过时。
解决方案:将实施委托给代理。每个代理:
- 以新鲜上下文开始
- 实施一个任务
- 完成后创建交接
- 返回到编排器
交接持久存储在磁盘上。如果压缩发生,您重新读取交接并继续。
设置
-
创建交接目录:
mkdir -p thoughts/handoffs/<session-name>使用您的连续性分类账中的会话名称。
-
阅读实施代理技能:
cat .claude/skills/implement_task/SKILL.md这定义了代理应如何行为。
前提条件:计划验证
在实施之前,确保计划已使用validate-agent验证。验证步骤是分开的,并应已创建一个状态为VALIDATED的交接。
检查验证交接:
ls thoughts/handoffs/<session>/validation-*.md
如果无验证存在,建议先运行验证:
"此计划尚未验证。您希望我先启动validate-agent吗?"
如果验证存在但状态为NEEDS REVIEW,在继续之前呈现问题。
编排循环
对于计划中的每个任务:
-
准备代理上下文:
- 阅读连续性分类账(当前状态)
- 阅读计划(整体上下文)
- 阅读先前交接如果存在(来自thoughts/handoffs/<session>/)
- 识别特定任务
-
启动实施代理:
Task( subagent_type="general-purpose", model="claude-opus-4-5-20251101", prompt=""" [在此粘贴.claude/skills/implement_task/SKILL.md的内容] --- ## 您的上下文 ### 连续性分类账: [粘贴分类账内容] ### 计划: [粘贴相关计划部分或完整计划] ### 您的任务: 任务[N] of [Total]:[计划中的任务描述] ### 先前交接: [粘贴先前任务的交接内容,或“这是第一个任务 - 无先前交接”] ### 交接目录: thoughts/handoffs/<session-name>/ ### 交接文件名: task-[NN]-[short-description].md --- 实施您的任务并创建您的交接。 """ ) -
处理代理结果:
- 阅读代理的交接文件
- 更新分类账复选框:
[x] Task N - 更新计划复选框如果适用
- 继续到下一个任务
-
在代理失败/阻塞时:
- 阅读交接(状态将为“blocked”)
- 向用户呈现阻塞
- 决定:重试、跳过或询问用户
压缩后恢复
如果自动压缩在编排中途发生:
- 阅读连续性分类账(由SessionStart钩子加载)
- 列出交接目录:
ls -la thoughts/handoffs/<session-name>/ - 阅读最后一个交接以理解您所在位置
- 从下一个未完成任务继续启动代理
示例编排会话
用户:/implement_plan thoughts/shared/plans/PLAN-add-auth.md
Claude: 我将为此计划使用代理编排(6个任务)。
设置交接目录...
[创建thoughts/handoffs/add-auth/]
任务1 of 6:创建用户模型
[以完整上下文启动代理]
[代理完成,创建task-01-user-model.md]
✅ 任务1完成。交接:thoughts/handoffs/add-auth/task-01-user-model.md
任务2 of 6:添加身份验证中间件
[以先前交接启动代理]
[代理完成,创建task-02-auth-middleware.md]
✅ 任务2完成。交接:thoughts/handoffs/add-auth/task-02-auth-middleware.md
--- 自动压缩发生 ---
[上下文压缩,但交接持久]
Claude: [阅读分类账,看到任务1-2完成]
[阅读最后一个交接task-02-auth-middleware.md]
从任务3 of 6恢复:创建登录端点
[启动代理]
...
交接链
每个代理读取先前交接 → 做工作 → 创建下一个交接:
task-01-user-model.md
↓(由代理2读取)
task-02-auth-middleware.md
↓(由代理3读取)
task-03-login-endpoint.md
↓(由代理4读取)
...
该链即使跨压缩也保留上下文。
何时使用代理编排
| 场景 | 模式 |
|---|---|
| 1-3个简单任务 | 直接实施 |
| 4个或更多任务 | 代理编排 |
| 需要保持关键上下文 | 代理编排 |
| 快速错误修复 | 直接实施 |
| 主要功能实施 | 代理编排 |
| 用户明确请求 | 尊重用户偏好 |
提示
- 保持编排器精简:不要自己做实施工作。只管理代理。
- 信任交接:代理创建详细交接。用于上下文。
- 每个代理一个任务:不要将多个任务批处理到一个代理中。
- 顺序执行:从顺序开始。并行增加复杂性。
- 更新分类账:每个任务后,更新连续性分类账复选框。