内容
# 🤖 克劳德工程循环
停止对您的AI代理进行人工干预。 为克劳德代码带来可预测、结构化的软件开发周期。
---
## 问题
如果让克劳德代码自主运行,它会无目标地生成代码,忘记自己的上下文,并在验证结果之前宣布完成。 您最终会花费时间调试AI生成的错误,而不是交付功能。
这是一个可以直接使用的 `CLAUDE.md` 模板,它强制执行强制性的规划阶段,限制重试循环的次数,并在克劳德消耗您的API积分之前提供自动逃脱机制。
---
## 🎯 功能介绍
一个单独的 `CLAUDE.md` 文件,定义了每个任务的强制性9阶段流程:
```
接收 → 理解 → 分解 → 规划 → 对齐 → 执行 → 验证 → [间隙? → 规划]
```
**它强制执行的关键行为:**
- 代理在触摸任何代码之前确认理解
- 每个任务被分解成块,每个块都有明确的计划
- 计划在执行开始前进行一致性审查
- 执行结果与原始目标进行验证 - 而不仅仅是“编译通过”
- 无限重试循环被硬性逃脱机制终止
- 可以禁用人工确认门户以实现完全自主运行
---
## 🗺️ 工作原理
```mermaid
flowchart TD
START([🆕 新任务]) --> QA{Pure 知识问题?\n无代码 · 无操作}
QA -->|✅ 是| ANSWER([💬 直接回答])
QA -->|否| INIT[会话初始化\n交互式 · 自主式 · 只是聊天?]
INIT -->|只是聊天| CHAT([💬 只是聊天\n循环暂停])
INIT -->|交互式或自主式| P0[阶段 0:接收\n收集所有上下文]
P0 --> P1[阶段 1:理解\n重述并确认目标]
P1 --> TRACK{微任务?\n所有条件都满足?}
TRACK -->|✅ 快速通道| EX_FT[阶段 6:执行]
TRACK -->|完整循环| P2[阶段 2:分解\n分解成块]
P2 --> P3[阶段 3:规划\n每个块最多 5–7 步]
P3 --> P4[阶段 4:审查\n一致性检查]
P4 --> P5[阶段 5:对齐\n呈现计划 → 批准]
P5 --> P6[阶段 6:执行\n逐块执行]
EX_FT --> P7
P6 --> P7[阶段 7:验证\n测试 · 场景 · 计划 vs 结果]
P7 --> P8[阶段 8:目标检查\n原始目标是否实现?]
P8 -->|✅ 是| DONE([🏁 完成])
P8 -->|❌ 发现间隙| ESC{逃脱机制\n触发?}
ESC -->|否 — 迭代次数 ≤ 3| P3
ESC -->|是| STOP([🛑 停止并升级\n报告给人工])
style STOP fill:#ff4444,color:#fff
style DONE fill:#22c55e,color:#fff
style ANSWER fill:#94a3b8,color:#fff
style CHAT fill:#94a3b8,color:#fff
style START fill:#6366f1,color:#fff
style TRACK fill:#f59e0b,color:#fff
style ESC fill:#f59e0b,color:#fff
style QA fill:#f59e0b,color:#fff
```
---
## 🚀 快速开始
```bash
curl -o CLAUDE.md https://raw.githubusercontent.com/sidan93/claude-eng-loop/main/CLAUDE.md
```
审查文件,填写 `## 项目上下文` 部分,然后启动克劳德代码并给它一个任务。 它将询问如何继续,然后再触摸任何内容。
---
## 💬 直接回答纯知识问题
询问概念、工具或技术 - 而不是这个项目? 代理立即回答,无需阶段,无需跟踪:
- “什么是提示缓存?” → 直接回答
- “git rebase 如何工作?” → 直接回答
- “我们应该如何在代码库中处理这个问题?” → 循环(有操作含义)
- “为什么这段代码运行缓慢?” → 循环(调试任务)
检查非常严格:如果问题引用项目,包含任何操作词(修复、添加、检查、审查……),或可能产生后续任务 - 循环照常运行。
---
## ⚡ 微任务快速通道
修复一个错别字? 重命名一个变量? 代理检测到微任务并跳过大量规划:
```
接收 → 理解 → 执行 → 验证
```
条件:单个自包含更改,无架构决策,无歧义,耗时不到 5 分钟。 其他情况均采用完整循环。
---
## 🔧 执行模式
在每个任务开始时,代理会询问一次(如果您的环境支持,点击选项):
| 模式 | 何时使用 | 会发生什么 |
|------|------------|-------------|
| **交互式** (默认) | 需求不明确,风险高 | 代理在每个关键步骤前确认理解和计划 |
| **自主式** | 任务定义明确,您想离开 | 代理在不批准的情况下继续,仅在硬阻碍时停止 |
| **只是聊天** | 问题,探索,集思广益 | 循环暂停 - 代理直接回答,无阶段或规划 |
**完全自主运行的两个独立设置:**
- **CLAUDE.md 自主模式** (在会话开始时选择)- 控制代理在阶段门是否等待批准
- **克劳德代码自动模式** (`Shift+Tab` 循环)- 控制克劳德是否在每个文件编辑或 shell 命令上请求许可
两者可以独立设置。自主模式无自动模式仍会在每个文件/ shell 操作上提示。自动模式无自主模式仍会在阶段门暂停。
> **安全性:** 克劳德代码自动模式允许克劳德在无操作确认的情况下执行操作。仅在隔离环境中使用 - 永远不要访问生产系统或凭证。
---
## 🛡️ 逃脱机制
循环永远不会无限运行。 当以下情况发生时,克劳德停止并询问您:
- 相同间隙在两次迭代中出现
- 块失败超过两次
- 根原因超出克劳德的控制(第三方错误,缺少访问权限,需求变更)
- 超过 3 次完整循环迭代仍未达到目标
---
## 📋 9 个阶段
| 阶段 | 会发生什么 |
|-----------------|-------------|
| 0 — 接收 | 读取整个任务和所有链接上下文,然后再形成任何意见 |
| 1 — 理解 | 重述任务;与您确认(交互式)或记录并继续(自主式) |
| 2 — 分解 | 分解为独立可规划的块 |
| 3 — 规划 | 为每个块编写明确的逐步计划(最多 5–7 步) |
| 4 — 审查 | 一起阅读所有计划,检查与原始目标的一致性 |
| 5 — 对齐 | 简单任务的摘要;复杂任务的完整计划;等待批准或根据模式继续 |
| 6 — 执行 | 使用可用工具和技能逐块运行 |
| 7 — 验证 | 测试,核心场景,计划 vs 结果 - 在声明完成之前强制执行 |
| 8 — 目标检查 | 我们是否实现了实际要求的内容? 如果不是 - 间隙分析,返回阶段 3 |
---
## 💰 Token 使用
目标不是节省 token - 而是实现您要求的内容。 没有结构,克劳德会生成输出。 有了循环,克劳德会生成正确的输出。
在第 3 阶段捕获错误的方法比在第 6 阶段取消更便宜。
- **交互模式** 是成本效益高的 - 您在模型执行之前审查计划,因此可以早期发现错误
- **自主模式** 在大型或模糊任务上可能很昂贵 - 迭代间隙分析会迅速增加上下文。 在严格范围的任务上使用它。 在自主运行前在克劳德代码设置中设置预算限制
- **计划冗余** 默认情况下每个块限制为 5–7 步
---
## 📦 设置选项
**每个项目(推荐):** 将 `CLAUDE.md` 放入您的仓库根目录并填写 `## 项目上下文` 部分。 特别注意 **禁止区域** - 这可以防止克劳德在未经审查的情况下触摸生产数据库,强制推送主分支或执行任何不可逆操作。
**全局(所有项目):** 将 `CLAUDE.md` 放在 `~/.claude/` 并删除 `## 项目上下文` 部分 - 在全局级别上它没有任何意义。
| 范围 | 位置 | 项目上下文 |
|-------|----------|----------------|
| 全局 | `~/.claude/CLAUDE.md` | 删除它 |
| 每个项目 | `<repo-root>/CLAUDE.md` | 填写它 |
两者可以共存:全局设置流程,每个项目覆盖特定细节。 克劳德代码首先加载全局配置,然后加载项目配置 - 后面的指令优先于相同的主题。
**现有的CLAUDE.md:** 在现有的指令之前或之后粘贴工程循环的内容。 项目特定指令优先于循环。
---
## 🛠️ 适用范围
- **裸克劳德代码** - 无需额外设置
- **MCP服务器** (Jira,GitLab,Figma,Confluence等)- 循环告诉代理何时以及如何使用它们
- **超级powers插件** - 技能引用直接映射到超级powers技能;如果没有它,它们会描述手动操作的方法
---
## 🔍 如何验证循环是否正常工作
克劳德应该在每次转换时命名当前阶段。 如果它悄悄跳转到编写代码 - 它没有遵循循环。
**正常工作的迹象:**
- 第一条消息询问“交互式、自主式还是只是聊天?”
- 响应中提到了阶段:“阶段 0:阅读票证...”,“阶段 3:编写计划...”
- 微任务获得:`“快速通道:[原因]。跳过阶段 2–5。”`
- 在只是聊天模式下:没有提到阶段 - 这是正确的,不是损坏的
**不工作的迹象:** 立即开始编码而不询问模式问题,在交互式/自主式中从不提及阶段,在未验证的情况下声明完成。
如果不工作:重启会话,确认 `CLAUDE.md` 位于项目根目录或 `~/.claude/`。
---
## ✏️ 自定义
循环故意设计得通用。 在您的 `CLAUDE.md` 中扩展它:
- 为每个阶段添加项目特定步骤(`"在阶段 6 中,在提交前始终运行 make lint"`)
- 为您的堆栈覆盖并行规则
- 添加特定领域的逃脱机制条件
- 用具体的工具名称替换通用技能引用
---
## License
MIT