用途
implement 是一个实现代理(Implementation Agent),用于从 docs/task/*.md 任务文档中执行开发任务。它读取任务文档、遵循实现步骤,并更新 TASKS.md 中的状态。
主要能力
- 解析参数:识别 auto 标志、--model 覆盖和任务 ID。
- 解析任务 ID:在 TASKS.md 中找到对应行,定位 docs/task/{ID}-{name}.md 任务文档。
- 读取任务文档作为唯一代码库上下文,仅读取任务文档 "File Changes" 中明确列出的源文件。
- 进入 worktree 隔离:通过 EnterWorktree({ name: "task-{ID}" }) 创建 .claude/worktrees/task-{ID}/ 新分支,所有编辑、提交和推送都在 worktree 内进行,用户工作目录保持在 main 分支。
- 更新 TASKS.md 状态,将任务移至 "In Progress"。
- 按需调用专用技能(如 React/Next.js/TypeScript 相关任务调用 /vercel-react-best-practices,数据库/Supabase 相关任务调用 /supabase-postgres-best-practices)。
- 按任务文档步骤实现,提交时使用 [task-{ID}] 前缀以便追溯。
- 推送分支到 origin(git push -u origin {branch})。
- 完成后将状态更新为 "TESTING"。
使用方式
命令格式:/implement [auto] {ID}
参数说明:
- auto:设置自动化模式。
- --model {haiku|sonnet|opus}:模型覆盖,优先于任务文档推荐。
- 自然语言提示(如 "use sonnet"、"force haiku"):视为模型覆盖。
- 剩余参数:任务 ID。
模型覆盖解析优先级:
- --model 标志或内联自然语言提示 → 使用此值,忽略任务文档。
- 任务文档中的 Recommended Model 字段 → 使用此值。
- 默认回退 → haiku。
工作流程
- 读取 LEARNINGS.md(如存在)以避免已知错误。
- 解析参数:检测 auto 标志、--model 覆盖、任务 ID。
- 解析任务 ID → 找到 docs/task/{ID}-{name}.md。
- 读取任务文档——这是唯一需要的代码库上下文。仅读取任务文档 "File Changes" 中明确列出的源文件。不要探索目录、广泛 grep 或读取计划外的文件。
- 进入 worktree 隔离:EnterWorktree({ name: "task-{ID}" })。
- 如果设置了 auto 标志 → 在任务文档中设置 Automation: auto。
- 在 TASKS.md 中将任务移至 "## In Progress"。
- 如相关则调用专用技能。
- 按任务文档步骤实现。
- 使用 [task-{ID}] 前缀提交。
- 推送分支到 origin。
- 完成后将状态更新为 "TESTING"。
令牌效率
- Auto 模式:编排器保持存活,在后台生成 worker。Worker 输出 4 行信号并将详情写入任务文档。编排器仅累积信号(每个约 50 tokens)。令牌成本极低。
- Manual + /clear:在全新会话中运行每个技能。令牌收益相同,用户保持控制。令牌成本低。
- Manual 不带 /clear:历史在所有阶段累积。令牌成本高(应避免)。
Manual 模式提示:每个技能完成后,在调用下一个技能前运行 /clear。
实现前检查清单
- 读取项目经验:完整读取 LEARNINGS.md(如存在,约 200 tokens,可节省数千 tokens)。关注:常见错误、既定编码模式、架构与决策、技术栈说明。
0.5. 解析参数:auto → 设置自动化模式;--model {haiku|sonnet|opus} → 模型覆盖;自然语言提示 → 视为模型覆盖;剩余参数 → 任务 ID。
- 解析任务 ID:读取 TASKS.md,找到第一列匹配 ID 的行,获取任务文档路径,验证文件存在于 docs/task/。
1.5. 进入 worktree 隔离:在任何文件编辑或 git 操作之前,调用 EnterWorktree({ name: "task-{ID}" })。
-
读取任务文档——然后停止探索。始终读取:docs/task/{ID}-{task-name}.md、LEARNINGS.md、## File Changes 中列出的文件。除非任务文档明确指定,否则不要读取 package.json、tsconfig.json、.env、任何不在 ## File Changes 中的配置文件、任务文档未提及目录中的文件、相邻文件。不要运行 find . -type f、ls -R / ls -la、对未列出文件执行 cat、任何用于 "理解模式" 的 grep。
-
调用专用技能:在编写任何代码之前,检查平台特定技能是否已安装且相关。
-
更新 TASKS.md:将任务从 "Planned" 移至 "In Progress",附上开始日期和状态。
-
验证依赖:所需 API 端点存在、所需类型/接口存在、所需包已安装、无阻塞任务。
提交约定
所有提交必须包含任务 ID 前缀:
[task-{ID}] {type}: {description}
{optional body}
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
完成检查清单
- 代码质量:编译无错误、无 TypeScript 错误、遵循现有模式。
- 功能:所有 "Must Have" 需求已实现,happy/loading/error/empty 状态已处理。
- 任务文档:需求已勾选、偏差已记录、已为测试者添加注释。
更新状态为 TESTING
实现完成后:
- 更新 TASKS.md——移至 "Testing" 部分,测试报告待定。
- 更新任务文档:Status: TESTING、Completed: {Date}、Implementation Notes: {给测试者的重要注释}。
- 更新 CLAUDE.md(结构性变更):扫描构建内容并立即更新 CLAUDE.md。
- 推送分支到 origin:git push -u origin {branch-name}。
- 完成前验证:React/Next.js 任务是否调用了 /vercel-react-best-practices?数据库/Supabase 任务是否调用了 /supabase-postgres-best-practices?如跳过,现在调用并在继续前审查代码。
- 通知用户 / 链接到下一个技能:检查任务文档中的 Automation: auto 字段。
编排器模式
仅在设置了 Automation: auto 时进入。此会话作为流水线协调器保持存活。Worker 在后台运行,将结果写入任务文档,并返回 4 行信号。
共享内存:docs/task/{ID}-{task-name}.md——每个 worker 都读写它。
retry_count = 0,max_retries = 3。
阶段 1——质量门:分配 simplify worker。等待 SIGNAL。PASS → 进入阶段 2;FAIL → retry_count++,如超过 max_retries 则停止并通知用户,否则分配 implement-fix worker 后返回阶段 1。
阶段 2——测试:分配 test worker。等待 SIGNAL。PASS → 进入阶段 3;FAIL → retry_count++,如超过 max_retries 则停止并通知用户,否则分配 implement-fix worker 后返回阶段 1。
阶段 3——文档:分配 document worker。等待 STATUS: DONE 信号 → 进入阶段 4。
阶段 4——发布:分配 ship worker。等待 STATUS: DONE 信号 → 流水线完成。
停止条件
在以下情况停止流水线并通知用户:retry_count > max_retries(3 个周期未 PASS)、任何 worker 返回 STATUS: BLOCKED、ship worker 返回构建/lint 失败。
专用技能(需单独安装)
- vercel-react-best-practices——从 vercel-labs/agent-skills 安装;用于 React/Next.js/TypeScript 代码。
- supabase-postgres-best-practices——从 supabase/agent-skills 安装;用于数据库查询、RLS、schema、Supabase 代码。