循环工程:设计能提示AI编码代理的系统
停止手动提示AI代理。学习如何设计循环,通过模式、CLI工具和记忆来编排代理,实现生产级自动化。
循环工程:设计能提示AI编码代理的系统
如果你还在手动向Claude Code、Grok或Codex输入提示,那你正在浪费杠杆效应。AI辅助开发的下一阶段不是更好的提示——而是设计循环,让循环为你提示代理。
正如Peter Steinberger所说:“你不应该再手动提示编码代理了。你应该设计循环,让循环来提示你的代理。” Anthropic的Claude Code负责人Boris Cherny也呼应道:“我不再手动提示Claude了。我有循环在运行,它们提示Claude并决定该做什么。我的工作是编写循环。”
这就是循环工程的核心思想,一个由Cobus Greyling创建的实用参考仓库,提供构建代理编排系统的模式、入门模板和CLI工具。它受Addy Osmani关于该主题的工作启发,专为使用Grok、Claude Code、Codex、Cursor和其他AI编码代理的开发者设计。
为什么这很重要
杠杆点已经转移。你不再需要精心设计单个提示,而是设计随时间编排代理的控制系统。这意味着:
- 按节奏自动化:代理按计划运行(每小时、每天、PR时),无需你在场。
- 安全的并行执行:工作树隔离更改,防止代理相互干扰。
- 持久的项目知识:技能文件编码你的项目约定、架构和约束。
- 真实的工具集成:MCP(模型上下文协议)连接器让代理访问你的实际工具——Git、工单、CI。
- 记忆和状态:在任何对话之外有一个持久的主干,确保代理在运行之间不会忘记上下文。
五个构建块 + 记忆
该仓库定义了构成任何循环基础的五个原语:
| 原语 | 循环中的职责 |
|---|---|
| 自动化/调度 | 按节奏发现和分类 |
| 工作树 | 安全的并行执行 |
| 技能 | 持久的项目知识 |
| 插件和连接器 | 接入你的真实工具(MCP) |
| 子代理 | 执行者/验证者分离 |
| + 记忆/状态 | 任何对话之外的持久主干 |
详细信息见 docs/primitives.md,跨工具矩阵见 docs/primitives-matrix.md。
循环的解剖结构
一个典型的循环流程如下:
flowchart LR
A[调度/自动化] --> B[分类技能]
B --> C[读取+写入状态/记忆]
C --> D[隔离的工作树]
D --> E[执行子代理]
E --> F[验证子代理<br/>测试+门控]
F --> G[MCP/Git/工单]
G --> H{人工门控?}
H -->|安全/白名单| I[提交/PR/操作]
H -->|风险/模糊| J[升级给人类<br/>附带完整上下文]
I --> A
J --> A
这个循环按计划运行,读取和写入状态,在隔离环境中执行,验证结果,然后要么提交要么升级。人工门控是一个关键的安全机制——无人值守的循环可能会犯无人值守的错误。
生产模式
该仓库包含七种生产就绪的循环模式,每种都有定义的节奏、入门模板和预估令牌成本:
| 模式 | 节奏 | 入门模板 | 第一周 | 令牌成本 |
|---|---|---|---|---|
| 每日分类 | 1天–2小时 | minimal-loop | L1报告 | 低 |
| PR保姆 | 5–15分钟 | pr-babysitter | L1监控 | 高 |
| CI清理器 | 5–15分钟 | ci-sweeper | L2谨慎 | 非常高 |
| 依赖清理器 | 6小时–1天 | dependency-sweeper | L2仅补丁 | 中等 |
| 变更日志起草器 | 1天或标签 | changelog-drafter | L1草稿 | 低 |
| 合并后清理 | 1天–6小时 | post-merge-cleanup | L1非高峰 | 低 |
| 问题分类 | 2小时–1天 | issue-triage | L1仅提议 | 低 |
不确定选哪个?使用交互式模式选择器或查看 patterns/registry.yaml 获取机器可读索引。
5分钟快速入门
# 1. 搭建并获取你的循环就绪分数(自动打印)
npx @cobusgreyling/loop-init . --pattern daily-triage --tool grok
# 2. 估算你的节奏的令牌消耗
npx @cobusgreyling/loop-cost --pattern daily-triage --level L1
# 3. 改进后重新审计
npx @cobusgreyling/loop-audit . --suggest
# 可选:将循环就绪徽章粘贴到你的README中
npx @cobusgreyling/loop-audit . --badge
# 4. 查看分数攀升:空 → L1 → L2
bash scripts/before-after-demo.sh
# 5. 以仅报告模式启动(Grok示例)
/loop 1d Run loop-triage. Update STATE.md. No auto-fix in week one.
所有三个CLI都从标记版本发布到npm——无需克隆。如果你从源码贡献,可以从单体仓库开发:
cd tools/loop-init && npm ci && npm test && node dist/cli.js /path/to/project --pattern daily-triage --tool grok
cd tools/loop-audit && npm ci && npm test && node dist/cli.js /path/to/project --suggest
cd tools/loop-cost && npm ci && npm test && node dist/cli.js --pattern ci-sweeper --cadence 15m
建议分阶段推出:L1(仅报告)→ L2(辅助修复)→ L3(无人值守)。详情见循环设计检查清单。
CLI工具
该仓库包含多个npm包:
- loop-audit:循环就绪分数CLI(v1.5 + 约束评分)—
npx @cobusgreyling/loop-audit . --suggest - loop-init:搭建入门模板 + 预算/运行日志 + 约束 —
npx @cobusgreyling/loop-init . --pattern daily-triage --tool grok - loop-cost:令牌消耗估算器 —
npx @cobusgreyling/loop-cost - loop-sync:STATE.md和LOOP.md之间的漂移检测 —
npx @cobusgreyling/loop-sync . - loop-context:有状态记忆管理器 + 长时间运行的断路器 —
npx @cobusgreyling/loop-context --check --ledger run.json - loop-mcp-server:MCP运行时查找模式、技能、状态(仓库v1;npm待定)
操作与安全
循环工程放大了判断力——无论是好是坏。关键注意事项:
- 令牌成本可能爆炸,尤其是使用子代理和长时间运行的循环时。
- 验证仍然取决于你。 无人值守的循环会犯无人值守的错误。
- 理解债务增长更快,除非你阅读循环交付的内容。
- 两个人运行同一个循环可能得到相反的结果。 循环不知道。你知道。
该仓库包含全面的安全文档:
- 故障模式 — 事件风格目录
- 反模式 — 生产前的设计错误
- 多循环协调 — 当循环冲突时
- 操作循环 — 成本、日志记录、何时终止
- 安全 — 黑名单、自动合并、MCP范围
- 安全性 — 报告和无人值守自动化风险
贡献
该项目欢迎贡献,尤其是故障故事和新的模式映射。查看贡献者快速入门了解约10分钟到1小时的任务,故事和采用者当天即可获得审查。
结论
循环工程是一种范式转变。你不再是提示代理的人,而是设计提示代理的系统的人。这个仓库为你提供了模式、工具和安全实践,使这种转变变得实用。
正如Addy Osmani所说:“构建循环。但要像打算长期担任工程师的人那样构建,而不仅仅是按下启动按钮的人。”
本文基于Cobus Greyling的循环工程仓库,采用MIT许可。