名称: ai-factory.implement 描述: 执行当前计划中的实施任务。顺序处理任务,标记完成状态,并保留进度以便跨会话继续。当用户说“实施”、“开始编码”、“执行计划”或“继续实施”时使用。 参数提示: ‘[任务ID或"状态"]’ 允许工具: Read Write Edit Glob Grep Bash TaskList TaskGet TaskUpdate AskUserQuestion Questions 禁用模型调用: true
实施 - 执行任务计划
执行计划中的任务,跟踪进度,并启用会话继续。
工作流程
步骤0:检查当前状态
首先: 确定我们处于什么状态:
1. 检查未提交的更改(git status)
2. 检查计划文件(.ai-factory/PLAN.md 或分支命名的文件)
3. 检查当前分支
如果存在未提交的更改:
您有未提交的更改。是否先提交它们?
- [ ] 是,现在提交(/ai-factory.commit)
- [ ] 否,暂存并继续
- [ ] 取消
如果不存在计划文件(所有任务已完成或全新开始):
未找到活动计划。
当前分支:feature/user-auth
您想做什么?
- [ ] 从当前分支开始新功能
- [ ] 返回到 main/master 并开始新功能
- [ ] 创建快速任务计划(无分支)
- [ ] 无操作,仅检查状态
根据选择:
- 从当前开始新功能 →
/ai-factory.feature <描述> - 返回到 main →
git checkout main && git pull→/ai-factory.feature <描述> - 快速任务 →
/ai-factory.task <描述>
如果计划文件存在 → 继续到步骤 0.1
步骤 0.1:加载项目上下文和过往经验
如果存在,读取 .ai-factory/DESCRIPTION.md 以了解:
- 技术栈(语言、框架、数据库、ORM)
- 项目架构和约定
- 非功能性需求
如果目录存在,读取 .ai-factory/patches/ 中的所有补丁:
- 使用
Glob在.ai-factory/patches/中查找所有*.md文件 - 读取每个补丁以学习过去的修复和错误
- 应用学到的经验:避免导致错误的模式,使用防止错误的模式
- 注意 根本原因 和 预防 部分——它们告诉您不要做什么
在实施时使用此上下文:
- 遵循指定的技术栈
- 使用正确的导入模式和约定
- 应用适当的错误处理和日志记录
- 避免补丁中记录的陷阱——不要重复过去的错误
步骤 0.1:查找计划文件
按此顺序检查计划文件:
1. .ai-factory/PLAN.md 是否存在? → 使用它(直接 /ai-factory.task 调用)
2. 没有 .ai-factory/PLAN.md → 检查当前 git 分支:
git branch --show-current
→ 查找 .ai-factory/features/<分支名称>.md(例如,.ai-factory/features/feature-user-auth.md)
优先级:
.ai-factory/PLAN.md- 始终优先(来自直接/ai-factory.task)- 分支命名文件 - 如果没有 .ai-factory/PLAN.md(来自
/ai-factory.feature)
读取计划文件 以了解:
- 上下文和设置(测试、日志记录偏好)
- 提交检查点(何时提交)
- 任务依赖关系
步骤 1:加载当前状态
TaskList → 获取所有状态的任务
查找:
- 下一个待处理任务(未阻塞,未完成)
- 任何进行中的任务(首先恢复这些)
步骤 2:显示进度
## 实施进度
✅ 已完成:3/8 个任务
🔄 进行中:任务 #4 - 实施搜索服务
⏳ 待处理:4 个任务
当前任务:#4 - 实施搜索服务
步骤 3:执行当前任务
对于每个任务:
3.1:获取完整详情
TaskGet(taskId) → 获取描述、文件、上下文
3.2:标记为进行中
TaskUpdate(taskId, status: "in_progress")
3.3:实施任务
- 读取相关文件
- 进行必要的更改
- 遵循现有代码模式
- 除非计划包括测试任务,否则不编写测试
- 不创建报告或摘要
3.4:验证实施
- 检查代码编译/运行
- 验证功能正常工作
- 修复任何即时问题
3.5:标记为已完成
TaskUpdate(taskId, status: "completed")
3.6:在计划文件中更新复选框
在完成任务后立即更新计划文件中的复选框:
# 之前
- [ ] 任务 1:创建用户模型
# 之后
- [x] 任务 1:创建用户模型
这是强制性的 — 复选框必须反映实际进度:
- 使用
Edit工具将- [ ]更改为- [x] - 在每项任务完成后立即执行此操作
- 即使稍后会提供删除选项
- 计划文件是进度的真相来源
3.7:如果需要,更新 .ai-factory/DESCRIPTION.md
如果在实施期间:
- 添加了新的依赖项/库
- 技术栈更改(例如,添加了 Redis,切换了 ORM)
- 添加了新的集成(例如,Stripe、SendGrid)
- 做出了架构决策
→ 更新 .ai-factory/DESCRIPTION.md 以反映更改:
## 技术栈
- **缓存:** Redis(添加用于会话存储)
这将保持 .ai-factory/DESCRIPTION.md 作为真相来源。
3.8:检查提交检查点
如果计划有提交检查点且当前任务处于检查点:
✅ 任务 1-4 已完成。
这是一个提交检查点。是否准备提交?
建议消息:"feat: 添加基础模型和类型"
- [ ] 是,现在提交(/ai-factory.commit)
- [ ] 否,继续到下一个任务
- [ ] 跳过所有提交检查点
3.9:移动到下一个任务或暂停
步骤 4:会话持久化
通过 TaskUpdate 自动保存进度。
暂停时:
当前进度已保存。
已完成:4/8 个任务
下一个任务:#5 - 添加分页支持
要在稍后恢复,运行:
/ai-factory.implement
恢复时(下一个会话):
/ai-factory.implement
→ 自动查找下一个未完成的任务
步骤 5:完成
当所有任务完成时:
## 实施完成
所有 8 个任务已完成。
分支:feature/product-search
计划文件:.ai-factory/features/feature-product-search.md
修改的文件:
- src/services/search.ts(创建)
- src/api/products/search.ts(创建)
- src/types/search.ts(创建)
下一步是什么?
1. 🔍 /ai-factory.verify — 验证没有遗漏任何内容(推荐)
2. 💾 /ai-factory.commit — 直接提交更改
上下文清理
实施后上下文很重。所有代码更改已保存 — 建议释放空间:
AskUserQuestion: 在继续之前释放上下文?
选项:
1. /clear — 完全重置(推荐)
2. /compact — 压缩历史
3. 保持原样
建议验证:
AskUserQuestion: 所有任务已完成。运行验证?
选项:
1. 先验证 — 运行 /ai-factory.verify 检查完整性(推荐)
2. 跳过到提交 — 直接转到 /ai-factory.commit
如果用户选择“先验证” → 建议调用 /ai-factory.verify。
如果用户选择“跳过到提交” → 建议调用 /ai-factory.commit。
检查是否需要更新文档:
读取计划文件设置。如果文档偏好设置为“是”(来自 /ai-factory.feature 问题),运行 /ai-factory.docs 以更新文档。
如果文档偏好是“否”或未设置 — 静默跳过此步骤。
如果文档偏好是“是”:
📝 更新项目文档...
→ 调用 /ai-factory.docs 分析更改并更新文档。
完成后处理计划文件:
-
如果是
.ai-factory/PLAN.md(直接 /ai-factory.task,不是来自 /ai-factory.feature):是否删除 .ai-factory/PLAN.md?(不再需要) - [ ] 是,删除它 - [ ] 否,保留 -
如果是分支命名文件(例如,
.ai-factory/features/feature-user-auth.md):- 保留它 - 记录了完成的工作
- 用户可以在合并前删除,如果愿意
检查是否在 git worktree 中运行:
检测 worktree 上下文:
# 如果 .git 是文件(不是目录),我们在 worktree 中
[ -f .git ]
如果我们在 worktree 中,提供合并回并清理的选项:
您正在并行 worktree 中工作。
分支: <当前分支>
Worktree: <当前目录>
主仓库: <主仓库路径>
是否希望将此分支合并到 main 并清理?
- [ ] 是,合并并清理(推荐)
- [ ] 否,我会手动处理
如果用户选择 “是,合并并清理”:
-
确保所有内容已提交 — 检查
git status。如果存在未提交的更改,建议先/ai-factory.commit并等待。 -
获取主仓库路径:
MAIN_REPO=$(git rev-parse --git-common-dir | sed 's|/\.git$||') BRANCH=$(git branch --show-current) -
切换到主仓库:
cd "${MAIN_REPO}" -
合并分支:
git checkout main git pull origin main git merge "${BRANCH}"如果发生合并冲突:
⚠️ 检测到合并冲突。手动解决: cd <主仓库路径> git merge --abort # 取消 # 或解决冲突并 git commit→ 在此停止,不继续清理。
-
移除 worktree 和分支(仅当合并成功时):
git worktree remove <worktree路径> git branch -d "${BRANCH}" -
确认:
✅ 合并并清理完成! 分支 <分支> 已合并到 main。 Worktree 已移除。 您现在位于:<主仓库路径>(main)
如果用户选择 “否,我会手动处理”,显示提醒:
要在稍后合并并清理:
cd <主仓库路径>
git merge <分支>
/ai-factory.feature --cleanup <分支>
重要:不生成摘要报告、不生成分析文档、不执行收尾任务。
命令
开始/恢复实施
/ai-factory.implement
从下一个未完成的任务继续。
从特定任务开始
/ai-factory.implement 5
从任务 #5 开始(适用于跳过或重做)。
仅检查状态
/ai-factory.implement status
显示进度而不执行。
执行规则
做:
- ✅ 一次执行一个任务
- ✅ 在开始前标记任务为进行中
- ✅ 在完成后标记任务为已完成
- ✅ 遵循现有代码约定
- ✅ 创建任务描述中提到的文件
- ✅ 处理任务中提到的边缘情况
- ✅ 如果任务不明确,停止并询问
不做:
- ❌ 编写测试(除非任务列表明确包括测试任务)
- ❌ 创建报告文件
- ❌ 创建摘要文档
- ❌ 添加不在计划中的任务
- ❌ 未经用户许可跳过任务
- ❌ 将未完成的任务标记为完成
进度显示格式
┌─────────────────────────────────────────────┐
│ 功能:用户认证 │
├─────────────────────────────────────────────┤
│ ✅ #1 创建用户模型 │
│ ✅ #2 添加注册端点 │
│ ✅ #3 添加登录端点 │
│ 🔄 #4 实施 JWT 生成 ← 当前 │
│ ⏳ #5 添加密码重置 │
│ ⏳ #6 添加邮箱验证 │
├─────────────────────────────────────────────┤
│ 进度:3/6(50%) │
└─────────────────────────────────────────────┘
处理阻塞
如果任务无法完成:
⚠️ 在任务 #4 遇到阻塞
问题:[问题描述]
选项:
1. 跳过此任务并继续(标记为阻塞)
2. 修改任务方法
3. 停止实施并讨论
您想做什么?
会话连续性
任务在对话/项目状态中持久化。
开始新会话:
用户:/ai-factory.implement
Claude:恢复实施...
找到 3 个已完成任务,5 个待处理。
从任务 #4 继续:实施 JWT 生成
[执行任务 #4]
示例完整流程
会话 1:
/ai-factory.feature 添加用户认证
→ 创建分支:feature/user-authentication
→ 询问测试(否)、日志记录(详细)
→ /ai-factory.task 创建 6 个任务
→ 保存计划到:.ai-factory/features/feature-user-authentication.md
→ /ai-factory.implement 开始
→ 完成任务 #1、#2、#3
→ 用户结束会话
会话 2:
/ai-factory.implement
→ 检测分支:feature/user-authentication
→ 读取计划:.ai-factory/features/feature-user-authentication.md
→ 加载状态:3/6 完成
→ 从任务 #4 继续
→ 完成任务 #4、#5、#6
→ 全部完成,建议 /ai-factory.commit
关键规则
- 从不编写测试 除非任务列表明确包括测试任务
- 从不创建报告 或完成后的摘要文档
- 始终标记任务为进行中 在开始工作前
- 始终标记任务为已完成 在完成后
- 始终更新计划文件中的复选框 -
- [ ]→- [x]在任务完成后立即执行 - 保留进度 - 任务跨越会话边界生存
- 一次一个任务 - 仅专注于当前任务
关键:日志记录要求
在实施代码时始终添加详细日志记录。 AI生成的代码通常有难以调试的细微错误,没有适当的日志记录。
日志记录指南
- 记录函数进入/退出 带有参数和返回值
- 记录状态更改 - 变更前后
- 记录外部调用 - API请求、数据库查询、文件操作
- 记录错误上下文 - 包括相关变量,不仅仅是错误消息
- 尽可能使用结构化日志记录(JSON格式)
示例模式
function processOrder(order: Order): Result {
console.log('[processOrder] 开始', { orderId: order.id, items: order.items.length });
try {
const validated = validateOrder(order);
console.log('[processOrder] 验证通过', { validated });
const result = submitToPayment(validated);
console.log('[processOrder] 支付结果', { success: result.success, transactionId: result.id });
return result;
} catch (error) {
console.error('[processOrder] 错误', { orderId: order.id, error: error.message, stack: error.stack });
throw error;
}
}
日志管理要求
日志必须可配置且可管理:
- 使用日志级别 - DEBUG、INFO、WARN、ERROR
- 基于环境的控制 - LOG_LEVEL 环境变量
- 易于禁用 - 单个标志或环境变量以关闭详细日志
- 考虑轮换 - 对于基于文件的日志,实施轮换或使用现有工具
// 好:可配置日志记录
const LOG_LEVEL = process.env.LOG_LEVEL || 'debug';
const logger = createLogger({ level: LOG_LEVEL });
// 好:可以禁用
if (process.env.DEBUG) {
console.log('[debug]', data);
}
// 坏:硬编码的详细日志,无法关闭
console.log(hugeObject); // 会污染生产日志
为什么这很重要
- AI生成的代码可能没有覆盖的边缘情况
- 日志帮助识别哪里出错
- 没有日志的调试浪费大量时间
- 用户可以稍后移除日志,但开发期间缺少日志成本高昂
- 生产安全 - 日志必须可减少以避免性能问题和存储成本
不要跳过日志记录以“保持代码清洁” - 详细日志记录在实施期间是必需的,但必须是可配置的。