-
Notifications
You must be signed in to change notification settings - Fork 2
PDCA Workflow
wangliang edited this page Jul 25, 2026
·
2 revisions
Plan → Do → Check → Act 闭环,每次编码任务都会运行。这是防止"AI 修了 bug X 却搞坏了功能 Y"的核心机制。
PDCA(Plan-Do-Check-Act)是一个四阶段质量管理循环,针对 AI 辅助编码进行了适配。ai-coding-ok 在每次任务前、中、后强制执行这个循环。
graph LR
P[Plan 规划<br/>读取记忆<br/>理解上下文] --> D[Do 执行<br/>写代码<br/>写测试]
D --> C[Check 检查<br/>运行测试<br/>验证无回归]
C --> A[Act 记录<br/>更新记忆<br/>关闭循环]
A -.->|下一个任务| P
触发条件: 安装了 ai-coding-ok 的项目中的任何开发任务。
执行内容: AI 按顺序读取 7 个文件:
| # | 文件 | 提供什么 |
|---|---|---|
| 1 | AGENTS.md |
架构速查、项目概述 |
| 2 | .github/agent/system-prompt.md |
Agent 角色、行为边界 |
| 3 | .github/agent/workflows.md |
场景工作流(功能/修复/重构/发布) |
| 4 | .github/agent/coding-standards.md |
编码规范 |
| 5 | .github/agent/memory/project-memory.md |
长期项目事实与约束 |
| 6 | .github/agent/memory/decisions-log.md |
历史技术决策(ADR) |
| 7 | .github/agent/memory/task-history.md |
近期任务上下文(最近 30 条) |
耗时: 约 30 秒。三个记忆文件合计通常 <10KB。
产出: AI 拥有完整上下文——知道架构、约束、历史决策和近期变更。
执行内容:
- 编写实现代码
- 同步编写测试
- 遵守
coding-standards.md中的编码规范 - 遵守
workflows.md中的场景工作流 - 对照
project-memory.md中的约束自检
执行内容:
- 运行测试套件
- 验证无关联功能回归
- 检查安全约束
- 确认变更符合计划
| 文件 | 更新条件 | 频率 |
|---|---|---|
task-history.md |
始终——每个任务一条记录 | 每次任务 |
decisions-log.md |
架构/技术决策有变化 | 架构变更时 |
project-memory.md |
项目事实有变化(新模块、新依赖等) | 很少 |
| Agent 文档 | 内容过时 | 当内容陈旧时 |
每条任务历史记录格式:
### [TASK-XXX] 简要标题
- **日期**:YYYY-MM-DD
- **类型**:feat / fix / refactor / chore
- **摘要**:做了什么以及为什么
- **变更文件**:关键修改文件
- **注意事项**:后续会话需要知道的重要信息没有 Act 阶段,你的记忆文件就是一个会腐烂的快照:
| 迭代次数 | 没有 Act | 有 Act |
|---|---|---|
| 1 | 记忆准确(刚安装) | 记忆准确 |
| 5 | 记忆过时(3 个功能未记录) | 记忆反映 5 个任务的上下文 |
| 20 | 记忆无用(架构已变,记忆说旧东西) | 记忆有 20 条累积上下文 |
| 50 | AI 基于错误信息做决策 | AI 读取 50 条准确历史 |
Act 阶段将记忆从快照变成活记录。
ai-coding-ok 使用五层防御体系确保 PDCA 永不跳过:
| 层级 | 机制 | 平台 |
|---|---|---|
| 1 |
CLAUDE.md STOP 指令 |
Claude Code |
| 2 |
AGENTS.md Plan 7 步强制要求 |
全平台 |
| 3 |
copilot-instructions.md 强制输出章节 |
全平台 |
| 4 |
.claude/settings.local.json hooks(Stop hook exit 2) |
Claude Code |
| 5 | 安装时自动配置 | Claude Code |
Plan(规划):
→ 读取 project-memory.md:"FastAPI + SQLite,商品表在 products.py"
→ 读取 decisions-log.md:"ADR-003:用 SQLite FTS5 做全文搜索"
→ 读取 task-history.md:"TASK-012:上周新增了商品表"
→ AI 现在知道:用 FTS5,不建新表,在 test_products.py 中写测试
Do(执行):
→ 在 api/products.py 中添加搜索接口
→ 在 tests/test_products.py 中添加测试
→ 遵守 coding-standards.md(类型注解、文档字符串、pytest 夹具)
Check(检查):
→ 运行 pytest:47 通过,0 失败
→ 现有商品接口无回归
→ 空查询返回 400(已处理)
Act(记录):
→ task-history.md:[TASK-013] 添加商品搜索接口
→ (无架构变化,decisions-log.md 和 project-memory.md 不更新)
→ 输出包含"## 记忆更新"章节确认更新
| 方法 | Plan | Do | Check | Act |
|---|---|---|---|---|
| 随意的 AI 编码 | ❌ 跳过 | ✅ 编码 | ❌ 跳过 | |
| TDD | ✅ 编码+测试 | ✅ 测试 | ❌ 跳过 | |
| superpowers | ✅ 头脑风暴 | ✅ 执行 | ✅ 审查 | ❌ 跳过 |
| ai-coding-ok | ✅ 读 7 个文件 | ✅ 编码+测试 | ✅ 验证 | ✅ 写记忆 |
ai-coding-ok 是唯一通过 Act 关闭循环的方法——将记忆写回,让下一次会话继承全部上下文。
🧠 ai-coding-ok — AI 编程的 PDCA 记忆闭环。
GitHub · Issues · MIT License