
AI 自治 Loop:Plan 驱动的 TDD 自测循环
2026/7/20大约 7 分钟

如何让 AI 自主完成开发并自测?
AI 自治 Loop:Plan 驱动的 TDD 自测循环
Plan 锁定上下文,测试驱动开发,自主修复,确定性验收
来源:研发自测实践
问题背景
AI 辅助开发的痛点:
┌─────────────────────────────────────────────────────────┐
│ AI 辅助开发的痛点 │
├─────────────────────────────────────────────────────────┤
│ │
│ 典型场景: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. 上下文漂移 │ │
│ │ · 需求在对话中逐渐模糊 │ │
│ │ · 技术决策在实现中不断变化 │ │
│ │ · 边界条件在开发中被忽略 │ │
│ │ · 验收标准在最后才确定 │ │
│ │ │ │
│ │ 2. 状态不可追溯 │ │
│ │ · 无法知道已完成什么 │ │
│ │ · 无法知道待办什么 │ │
│ │ · 失败后无法从断点恢复 │ │
│ │ · 无法分批完成任务 │ │
│ │ │ │
│ │ 3. 验收标准模糊 │ │"
│ │ · "功能正常"太主观 │ │
│ │ · "界面美观"无法自动化 │ │
│ │ · "性能良好"缺乏量化 │ │
│ │ · AI 无法自主判断是否完成 │ │
│ │ │ │
│ │ 4. 缺乏自我修复能力 │ │
│ │ · 测试失败后需要人工介入 │ │
│ │ · 无法根据错误信息自动修复 │ │
│ │ · 无法重新测试验证修复 │ │
│ │ · 难以形成闭环 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 传统解决方案的局限: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. 持续对话模式 │ │
│ │ · 依赖持续的人工反馈 │ │
│ │ · 无法离线自主运行 │ │
│ │ · 无法批量处理任务 │ │
│ │ │ │
│ │ 2. 手动测试验收 │ │
│ │ · 效率低下 │ │
│ │ · 主观性强 │ │
│ │ · 无法自动化 │ │
│ │ │ │
│ │ 3. 文档记录不足 │ │
│ │ · 需求和实现分离 │ │
│ │ · 状态管理混乱 │ │
│ │ · 难以追溯历史 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘解决方案:AI 自治 Loop
Plan 驱动的 TDD 自测循环
┌─────────────────────────────────────────────────────────┐
│ AI 自治 Loop │
├─────────────────────────────────────────────────────────┤
│ │
│ 核心定位: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 面向 AI 自治运行的开发循环(Loop) │ │
│ │ │ │
│ │ 结合 TDD(测试驱动开发)与前端浏览器调试 │ │
│ │ 用于研发自测场景 │ │
│ │ │ │
│ │ 以 Plan(计划)为核心载体 │ │
│ │ 将需求、实现状态、验收标准固化在文档中 │ │
│ │ 使 AI 能够按计划分批执行、自我修复 │ │
│ │ 并最终退出循环 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 核心思想: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Plan 阶段锁定上下文 │ │
│ │ · 在创建 Plan 时,尽可能关闭所有开放性问题 │ │
│ │ · 需求歧义、技术选型、边界条件等全部确定 │ │
│ │ · 保证后续执行无需额外决策 │ │
│ │ │ │
│ │ 2. Plan 记录实现状态 │ │
│ │ · Plan 文档需包含当前进度 │ │
│ │ · 已完成/进行中/待办 │ │
│ │ · 支持任务分批完成或失败后重试 │ │
│ │ │ │
│ │ 3. 确定性验收方式 │ │
│ │ · 必须给出可自动判定的验收标准 │ │
│ │ · 例如:所有 API 测试通过 │ │
│ │ · 例如:UI 交互符合预期 │ │
│ │ · 让 AI 能自主判断修复是否成功 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 核心优势: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. 上下文固化 │ │
│ │ · 所有决策在 Plan 阶段锁定 │ │
│ │ · 避免执行中的上下文漂移 │ │
│ │ · 保证结果的一致性 │ │
│ │ │ │
│ │ 2. 状态可追溯 │ │
│ │ · Plan 文档记录所有状态 │ │
│ │ · 支持断点恢复 │ │
│ │ · 支持分批完成 │ │
│ │ │ │
│ │ 3. 确定性验收 │ │
│ │ · 可自动判定的验收标准 │ │
│ │ · AI 能自主判断是否完成 │ │
│ │ · 无需人工介入 │ │
│ │ │ │
│ │ 4. 自我修复能力 │ │
│ │ · 测试失败后自动修复 │ │
│ │ · 根据错误信息调整代码 │ │
│ │ · 重新测试验证 │ │
│ │ · 形成闭环 │ │
│ │ │ │
│ │ 5. TDD 驱动 │ │
│ │ · 先写测试,后写代码 │ │
│ │ · 红条 → 绿条 → 重构 │ │
│ │ · 保证代码质量 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘Loop 规则
以 API 开发为例
┌─────────────────────────────────────────────────────────┐
│ Loop 规则(以 API 开发为例) │
├─────────────────────────────────────────────────────────┤
│ │
│ 此规则应写入 Agent.md,作为开发流程的强制性要求。 │
│ │
│ 步骤 1:Plan 等待确认 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 在 docs/plans/ 目录下,根据模板创建 Plan 文档 │ │
│ │ · 需求描述 │ │
│ │ · 技术方案 │ │
│ │ · 接口定义 │ │
│ │ · 验收标准 │ │
│ │ │ │
│ │ 人工或主管确认 Plan 内容无误后,循环才可继续 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 步骤 2:编写 API 测试(失败阶段) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 根据 Plan 编写 API 级别的集成测试 │ │
│ │ · 例如使用 Supertest │ │
│ │ · 例如使用 Postman Newman │ │
│ │ │ │
│ │ 运行这些测试,确保它们因功能未实现而失败(红条) │ │
│ │ 以此验证测试本身的有效性 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 步骤 3:编写实现(单元测试 + 代码) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 编写单元测试(白盒覆盖) │ │
│ │ 并实现功能代码 │ │
│ │ │ │
│ │ 确保代码通过编译 │ │
│ │ 且单元测试全部通过(绿条) │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 步骤 4:运行 API 测试并修复 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 执行第 2 步中的 API 测试 │ │
│ │ │ │
│ │ 若测试失败: │ │
│ │ · 根据报错信息修复代码或测试 │ │
│ │ · 重复此步骤直至全部通过 │ │
│ │ │ │
│ │ 若测试通过: │ │
│ │ · 则本 Plan 完成 │ │
│ │ · 可退出循环 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘流程图
文字版流程图
┌─────────────────────────────────────────────────────────┐
│ 流程图(文字版) │
├─────────────────────────────────────────────────────────┤
│ │
│ 开始 │
│ | │
│ v │
│ [Chat] 进入 Plan 模式,装载需求规格,给出指令进行 Plan │
│ | │
│ v │
│ [模型] 读取 Plan(从 docs/plans/ 加载) │
│ | │
│ v │
│ [模型] 创建 API 测试,实现代码(按 TDD 顺序:先测试后实现) │
│ | │
│ v │
│ [模型] 运行测试 / 浏览器调试 │
│ | │
│ +-- 是否成功? --+ │
│ | | │
│ 是 否 │
│ | | │
│ v v │
│ [模型] 退出 Plan 修复错误(代码/测试),重新运行测试 │
│ | | │
│ | +-------------------------------------│
│ | │
│ v │
│ 结束(或进入下一个 Plan) │
│ │
│ 图例说明: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ [模型] 表示由 AI 模型执行的动作 │ │
│ │ │ │
│ │ 退出循环的出口条件为所有验收测试通过 │ │
│ │ │ │
│ │ 若夜间或长时间运行,可配置超时或人工介入 │ │
│ │ │ │
│ │ 当多次失败且无法自动修复时, │ │
│ │ 允许 ByPass 权限(人工干预) │ │
│ │ 强制退出 Plan │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘关键角色与权限
角色分工
┌─────────────────────────────────────────────────────────┐
│ 关键角色与权限 │
├─────────────────────────────────────────────────────────┤
│ │
│ 角色 职责 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Chat(人类/主管) │ │
│ │ · 进入 Plan 模式 │ │
│ │ · 提供需求规格 │ │
│ │ · 批准 Plan 内容 │ │
│ │ │ │
│ │ AI 模型 │ │
│ │ · 读取 Plan │ │
│ │ · 编写测试/代码 │ │
│ │ · 运行调试 │ │
│ │ · 分析失败并修复 │ │
│ │ · 自主判断是否通过验收 │ │
│ │ │ │
│ │ ByPass 权限 │ │
│ │ · 在模型陷入死循环或无法修复时 │ │
│ │ · 允许人工跳过当前 Plan │ │
│ │ · 或修正方向 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘验收标准示例
API 测试
┌─────────────────────────────────────────────────────────┐
│ 验收标准示例(API 测试) │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 所有 API 端点返回预期的 HTTP 状态码和响应体 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 例如: │ │
│ │ GET /api/users/123 │ │
│ │ 预期:200 OK,返回用户对象 │ │
│ │ │ │
│ │ GET /api/users/999 │ │
│ │ 预期:404 Not Found,返回错误信息 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 2. 数据库状态变更符合预期(通过查询验证) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 例如: │ │
│ │ POST /api/users │ │
│ │ 请求体:{ "name": "Alice" } │ │
│ │ 验证:数据库中新增了 name="Alice" 的用户记录 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 3. 单元测试覆盖率不低于设定阈值(如 80%) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 例如: │ │
│ │ npm run test:cov │ │
│ │ 预期:覆盖率 ≥ 80% │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 4. 无未处理的异常或内存泄漏 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 例如: │ │
│ │ 运行压力测试或内存泄漏检测 │ │
│ │ 预期:无异常退出,内存使用稳定 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘适用场景
AI 自治 Loop 的应用场景
┌─────────────────────────────────────────────────────────┐
│ 适用场景 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 后端微服务接口开发 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ · RESTful API 开发 │ │
│ │ · GraphQL API 开发 │ │
│ │ · 数据库操作开发 │ │
│ │ · 消息队列处理 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 2. 前端页面交互逻辑 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ · 通过浏览器调试工具 │ │
│ │ · 类似 Cypress 或 Playwright 的自动化测试 │ │
│ │ · UI 交互逻辑验证 │ │
│ │ · 页面渲染验证 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 3. 任何可自动化验收的模块迭代 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ · 数据处理管道 │ │
│ │ · 文件转换工具 │ │
│ │ · CLI 工具开发 │ │
│ │ · 自动化脚本 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘注意事项
使用 AI 自治 Loop 的注意事项
┌─────────────────────────────────────────────────────────┐
│ 注意事项 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. Plan 必须足够详尽 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ · 需求描述清晰 │ │
│ │ · 技术方案明确 │ │
│ │ · 接口定义完整 │ │
│ │ · 验收标准可自动化 │ │
│ │ · 避免 AI 在实现中产生二义性 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 2. 测试用例应覆盖全面 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ · 正常路径 │ │
│ │ · 异常路径 │ │
│ │ · 边界条件 │ │
│ │ · 并发场景 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 3. 若测试持续失败 │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 建议检查: │ │
│ │ · Plan 本身是否合理 │ │
│ │ · 是否有外部依赖未满足 │ │
│ │ · 是否有技术债务需要清理 │ │
│ │ · 是否需要 ByPass 权限人工干预 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 4. 该循环可迭代执行多个 Plan │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ · 每个 Plan 独立管理状态 │ │
│ │ · 支持批量执行 │ │
│ │ · 支持断点恢复 │ │
│ │ · 支持失败重试 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘核心价值
AI 自治 Loop 的革命性意义
┌─────────────────────────────────────────────────────────┐
│ 核心价值 │
├─────────────────────────────────────────────────────────┤
│ │
│ AI 自治 Loop 的革命性意义: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. 上下文固化 │ │
│ │ · 所有决策在 Plan 阶段锁定 │ │
│ │ · 避免执行中的上下文漂移 │ │
│ │ · 保证结果的一致性 │ │
│ │ │ │
│ │ 2. 状态可追溯 │ │
│ │ · Plan 文档记录所有状态 │ │
│ │ · 支持断点恢复 │ │
│ │ · 支持分批完成 │ │
│ │ │ │
│ │ 3. 确定性验收 │ │
│ │ · 可自动判定的验收标准 │ │
│ │ · AI 能自主判断是否完成 │ │
│ │ · 无需人工介入 │ │
│ │ │ │
│ │ 4. 自我修复能力 │ │
│ │ · 测试失败后自动修复 │ │
│ │ · 根据错误信息调整代码 │ │
│ │ · 重新测试验证 │ │
│ │ · 形成闭环 │ │
│ │ │ │
│ │ 5. TDD 驱动 │ │
│ │ · 先写测试,后写代码 │ │
│ │ · 红条 → 绿条 → 重构 │ │
│ │ · 保证代码质量 │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ 这就是 AI 自治 Loop 的核心价值: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Plan 驱动的 TDD 自测循环 │ │
│ │ │ │
│ │ 让 AI 能够按计划分批执行、自我修复, │ │
│ │ 并最终退出循环! │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘收尾金句
- 如何让 AI 自主完成开发并自测?
- AI 自治 Loop:Plan 驱动的 TDD 自测循环
- Plan 锁定上下文,测试驱动开发,自主修复,确定性验收
- 让 AI 能够按计划分批执行、自我修复,并最终退出循环!
AI 自治 Loop:Plan 驱动的 TDD 自测循环!
让 AI 能够按计划分批执行、自我修复,并最终退出循环!
