@shmidtqq: https://x.com/shmidtqq/status/2068704187492221405
摘要
一份关于AI编程代理循环工程的深入指南,解释了如何构建自动循环来重复提示代理、验证结果并避免失控成本,并通过一位工程师一个月内提交259个拉取请求的案例研究加以说明。
查看缓存全文
缓存时间: 2026/06/22 05:37
循环工程:一个循环如何每月交付259个PR
去年十二月,一位工程师在一个月内交付了259个完成的代码变更(专业术语称为PR,即拉取请求)。他的AI写了每一个。他说他从未打开过代码编辑器。
Peter Steinberger用两行话总结,超过800万人看过:
Peter Steinberger @steipete·6月8日 这是每月提醒:你不应该再给编码智能体写提示词了。 你应该设计循环来驱动你的智能体。 1.8K 2.8K 19K 8.3M
同月出现了反面案例。某人的循环无人看管运行了11天,烧掉了47,000美元才被发现。所以这里有两项技能,而通常只教授第一项:构建一个能做事的循环,以及构建能防止它把你推下悬崖的刹车。
一张图看懂循环
循环是一个包裹在智能体周围的小程序。智能体执行一步。某物检查结果。没完成?继续下一步。如此循环,直到你的条件满足或你手动停止。
一个问题的答案能区分真正的循环和烧钱机器:是否存在诚实的方式判断工作是否做对?一个通过或失败的测试。一个能编译或不能编译的构建。没有检查,智能体只会原地自说自话,然后把账单寄给你。
第0步:30秒测试——你是否需要循环
循环在四个条件下才有回报。缺失一个,成本就超过收益。
- 任务至少每周重复。否则就是一次性脚本,不是循环。
- 验证是自动化的。测试、linter(代码风格检查器)、构建。没有检查,你就得手动审阅每个变更。
- 你的预算能承受浪费。循环会重新读取上下文并进行探索,因此即使在空跑时也会烧钱。
- 智能体拥有工程师的工具。日志、可复现失败的环境、运行自身代码的能力。
结构:任何循环的6个部分
剥离噪音后,一个可工作的循环包含六个部分。你不再需要手工构建它们:它们内置于工具中,并以相同方式映射到 Claude Code 和 OpenAI Codex 应用。
1. 状态:下一次运行唯一继承的东西
模型在运行结束时忘记一切。聊天的内存随之消失,因此记忆必须存在于磁盘上。实践中,就是一个文件。
把循环看作夜班。评判你的标准不是凌晨三点做了什么,而是九点桌上留下的便签。设计好便签,循环就设计好了一半。
2. 自动化:如何让一次运行变成循环
当循环自动启动时,它才成为循环。在 Codex 中这是“自动化”选项卡:项目、提示词、计划。在 Claude Code 中是三个独立的命令,而这里正是流行叙述常出错的地方,所以精确来说:
关键是 /goal。写代码的智能体无权给自己评分。像写合同一样写停止条件:“测试目录 test/auth 中的所有测试通过”是一个合同,“让它更好”是让循环一直旋转到发薪日的方法。
3. 工作树:并行智能体而不混乱
两个智能体写入同一个文件,就像两个工程师默默编辑同一行代码。git worktree 是它们之间的墙:一个独立的文件夹,在自己的分支上,共享历史。
工具不会提及的警告:工作树消除了冲突,但没有消除瓶颈。瓶颈是你。无论你启动多少个智能体,你的审查速度决定了你能信任多少个。
4. 技能:你的意图,一次编写,放在外部
智能体从零开始,并用自信的猜测填补任何空白。技能是你的意图,写在模型每次读取的地方。格式到处都一样:一个包含 SKILL.md 文件的文件夹。
没有技能,循环每次从头重新学习你的项目。有了技能,它每天早晨变得更智能。
5. 连接器:让循环采取行动,而不仅仅是说话
一个只看文件的循环只是个玩具。连接器(MCP 标准)让智能体读取你的问题追踪器、访问预发布服务器、发布到聊天频道。
这是“这是修复方法”与一个循环自行打开拉取请求、链接工单、报告测试变绿之间的区别。两个工具都支持 MCP,因此一个工具用的连接器通常可直接用于另一个。回报最快的连接器:代码追踪器、问题追踪器(Linear、Jira)、聊天(Slack)、错误追踪器。
6. 子智能体:编写者与检查者分离
最有价值的操作:将编写者与检查者分开。一个模型自我审查总会通过。第二个智能体,使用不同的指令和不同的模型,能捕捉到第一个智能体自圆其说的错误。
一个探索,一个编写,一个对照规范检查。这就是 /goal 在底层做的事情。第二个意见需要花钱,因为每个智能体运行自己的模型。在犯错代价高昂的地方,请使用它。
一个完整的循环
将六个部分组合起来,一条单线程就变成了一台机器。
- 每个早晨,自动化在项目上运行。
- 分诊技能读取一夜的失败、问题和提交,并将发现写入 STATUS.md。
- 对于每个发现,打开一个单独的工作树。
- 一个子智能体编写修复,第二个对照你的测试检查修复。
- 连接器打开拉取请求并更新工单。
- 任何失败的内容留在分诊收件箱中。STATUS.md 记住其余部分。
你醒来看到的不是一堆日志,而是一段简短便签:
在引擎启动前先装上刹车
那47,000美元的账单不是邪恶的AI造成的。而是两个智能体礼貌地互相要求更多工作:没有步骤限制,没有资金上限,没有停止条件。任何一个上限都会在第一天就阻止它。
核心规则:根据循环可能破坏的范围来限定,而不是根据你想让它做什么。先确定爆炸半径,再确定任务。并且诚实定价:
这三种情况下的技术是相同的。唯一区别是刹车是否已启动。
循环的四种死法
- 失控递归。两个智能体互相提供工作,永无止境。解决:步骤上限和资金上限。
- 静默死亡。上下文填满,循环停滞,但看起来还活着并报告“进度”。解决:心跳信号以及每个阶段使用新上下文。
- 原地打转。没有可验证的条件,循环偏离目标。绿色测试是一个可达成的点。“看起来完成”不是。
- 理解债务。循环编写代码的速度越快,你读得越少,你就离自己的项目越远。解决:强制添加“人类已阅读此步骤”,且绝不跳过。
一个附带名称的奖励:“Ralph 循环”。智能体过早发出“完成”信号并中途退出。这发生在没有真正的检查者和硬性停止条件时。一个有用的自我检查指标:计数不按 token,而按每个被接受变更的成本。如果接受率低于一半,循环就在亏本运行。
常规预算:5个更经济的玩法
这个循环是为那些不直接支付 token 费用的人构建的。以下是如何用更低的成本获得大部分价值。
- 在 token 消耗前多思考。“构建登录功能”会猜测30步。一份完整的规范(登录方式、token 存活时间、错误状态、完成定义)能在一次通过中命中目标。
- 规划用廉价模型,执行用昂贵模型。你的顶级模型不应该读取文件。将读取和规划交给一个小模型,将困难部分留给强智能体。
- 启用缓存。循环每一步都发送相同的上下文,而缓存正是让重复成本更低的关键。15分钟的更改能将重复输入减少约90%。
- 精简上下文。来自 Devin 团队的规则:委派读取,集中写入。将庞大的搜索交给一个廉价的子智能体,主智能体读取一份简短摘要,而不是40个文件。
- 你自己就是循环。你引导的三次成功胜过无人看管的三十次。如果自动化,按步骤数设定上限。
当一个循环值得时:终点线是绿色测试,运行有界,并且你的一小时时间价值超过 token 成本。隔夜重构以及你无法手动清理的大量积压任务正是这种形状。但这只是工作中很窄的一部分。
构建循环。保持工程师身份
两个人构建相同的循环却得到相反的结果。一个在他们深刻理解的工作上加速。另一个则完全不再理解工作。循环无法区分他们。但你可以。
杠杆已经转移:从提示词到循环,从打字到判断。这是一份更难的工作,而不是更轻松的工作。
所以,有意地从小处入手。明天早上,拿一份你仍在手动完成的最无聊的工作:分诊失败、关闭陈旧问题、追逐间歇性测试。围绕它包裹一个带上限的循环。先装刹车。足够小,让你能阅读每个变更。
没有一个每月交付两百个变更的人是从一百个智能体开始的。他们始于一个他们信赖的循环。构建那一个。
相似文章
@0xCodez: https://x.com/0xCodez/status/2064374643729773029
一个包含14个步骤的循环工程路线图,指导开发者从手动提示AI编码代理到设计自动化系统,由系统自行处理提示、验证和迭代。
@akshay_pachaar:关于循环工程。这周大家都在说同一件事。你不再提示代理,而是设计循环来提示它们……
这篇文章讨论了AI代理的循环工程,并介绍了Opik——一个来自Comet ML的开源工具,用于生成式AI应用的调试、评估和优化,重点在于自动化失败处理以及根据真实失败构建回归测试。
@jasonzhou1993: https://x.com/jasonzhou1993/status/2067937943545897143
循环工程是一种系统设计实践,让AI代理自主决定工作内容、执行并迭代,通过构建跨领域复合的外循环来超越手动提示。文章解释了两层代理框架,以及如何在循环间共享工件以促进累积学习。
@akshay_pachaar: https://x.com/akshay_pachaar/status/2069118430582866051
本文解释了AI代理中的循环工程概念,强调核心循环很简单,但关键工作在于模型周围的“束具”,包括知道何时停止以及防止上下文腐败。
@omarsar0: https://x.com/omarsar0/status/2068008743153832264
这篇文章解释了从手动提示编码助手到设计自动循环来提示它们的转变,详细说明了这些循环是什么、它们的历史演变以及在生产中构建它们所需的组件。