@s4yonnara: https://x.com/s4yonnara/status/2070797048471756948
摘要
一份关于为AI编码智能体构建自主循环的指南,解释了如何设计系统,使智能体能够无需人工干预地重复运行任务,并阐述了何时值得使用循环以及如何安全构建它们。
查看缓存全文
缓存时间: 2026/06/28 01:57
循环工程:如何让你的 AI Agent 自动运行
瓶颈是你,不是模型
大多数人使用编码智能体的方式都一样:输入一个请求,看着它工作,阅读差异,再输入下一个请求。你全程坐在椅子上。智能体在三十秒内表现出色,然后等待你。
这等于手动操作一个本应自动运行的工具。那些真正从这些工具中获得杠杆效应的人已经不再这样做了。
他们构建了一个循环:一个小的系统,它找到工作,交给智能体,对照目标检查结果,记下学到的东西,并决定下一步行动。他们只设置一次。之后,循环坐在椅子上,而不是他们。
你和他们之间的差距不是更智能的模型或秘密提示词。而是三个层级中的十二个动作:决定你是否需要循环,构建核心,然后使其安全且不断积累。这里的每一部分都使用你已经拥有的组件。
保存这个。你会读两遍。
第一层 - 在构建之前决定
1. 转变:你不再是操作员
两年以来,工作一直是手动操作工具。更好的提示,更好的上下文,更好的一次性输出。这个阶段正在结束。
新的工作向上走了一层:设计系统,决定智能体做什么、何时做、用什么检查、在两次运行之间记住什么。你不再写下一条消息。你在构建那个写消息的东西。
如果你只记住一句话:循环就是一个系统替你发送的提示。
2. 四条件测试(在构建任何东西之前运行)
循环并不总是值得的。只有在四个条件都成立时,它才值得付出成本。缺少一个,它的成本就会超过回报。
-
任务重复。 循环通过在多次运行中摊销其设置成本。对于一次性工作,一个好的提示更快、更便宜。如果不重复,你就没有循环,只有一次性的脚本。
-
验证是自动化的。 必须有不需你在场就能拒绝工作的东西:测试、类型检查、linter、构建。没有自动化的门,你就回到椅子上阅读每个差异,这正是循环本应消除的工作。
-
预算能吸收浪费。 循环会重新读取上下文、重试和探索。这会消耗 token,无论这次运行是否交付任何东西。在无限量计划上免费,在 20 美元的计划上则痛苦。
-
智能体有真正的工具。 日志、运行它所写代码的方法,以及查看出了什么问题。没有这些,循环会在盲目中迭代。
如果你不满足其中一个条件,诚实的答案是:暂时不要构建循环。一个精心瞄准的提示对于一次性任务和需要判断的工作仍然胜出。
3. 知道哪些工作交给它
好的第一个循环是乏味的且可被机器检查的:
-
CI 失败分类:每晚,分类失败,为简单的失败起草修复。
-
依赖更新:每周,测试兼容性,打开 PR。
-
在每个 PR 上运行 lint-and-fix。
-
不稳定测试复现:循环直到某个理论成立。
坏的第一个循环需要人在椅子上:架构重写、认证或支付代码、生产部署、任何“完成”需要判断的事情。让循环停留在测试套件可以拒绝的小改动上。
第二层 - 构建核心
4. 首先让一次手动运行变得可靠
循环会放大它下面的东西。把它包裹在一个弱设置上,你得到的是更快的垃圾输出,而不是自主性。
所以在自动化任何东西之前,先让一次手动运行稳固。CLAUD.md 中的常事实,正确的工具连接,一个清晰的验证目标。循环在每次迭代中重新使用所有这些,所以每个弱点都会被运行次数放大。先修复运行。然后再循环。
5. 给它一个目标和独立的评分器
循环需要一个停止条件,而不是“智能体觉得完成了”。目标给你一个:一个客观标准,循环不断迭代直到独立检查说它已满足。
/goal 所有测试通过且 lint 干净。 分类失败,起草修复,重复直到目标成立。
关键词是独立。决定“完成”的东西不能是执行工作的那个东西。这一个分离使得循环变得值得信赖,而不是一个自我表扬的机器。
6. 将制造者与检查者分开
为什么独立的评分器优于自我审查是结构性的,而不是努力的问题。评估自己输出的模型会看到自己的推理,并偏好与其已写内容一致的结论。一个全新的智能体,拥有自己干净的上下文,只看到工件和标准。它对制造者的选择没有利害关系。
所以将验证器定义为一个子智能体:
你并没有产生这项工作。对照目标和项目规则进行检查。自己运行测试。报告通过或失败,并给出具体原因和文件引用。不要宽容。
现在循环有了制造者和检查者,检查者掌握着门。
7. 给它一个定时器,然后放到云端
一个目标驱动的运行仍然等你来启动它。增加一个节奏。一个周期性循环在时间间隔内重复运行提示,这样智能体就能逐渐处理积压任务,而不是等待人类。
/loop 30m 拉取新的失败测试,在 claude/ 分支中起草修复,每个交给验证器。/goal main 是绿色的。
然后让你的笔记本电脑脱离其中。云例程在受管理的基础设施上按计划或事件运行保存的配置,你的机器可以关闭。定时器把运行变成习惯。云端把习惯变成基础设施。
8. 给它一个能恢复的记忆
这一步把配置好的循环变成一个会改进的系统。智能体在两次运行之间会忘记一切。循环不必如此。一个状态文件记录尝试了什么、什么有效、什么失败、什么变成了规则。
State - payments-service
Verified facts
- Webhook secret 在 STRIPE_WEBHOOK_SECRET 中,而不是仪表盘。
- prc 列是整数分。通过 SELECT MIN/MAX 确认。
Lessons learned
- e2e checkout 在 webhook 竞争条件下不稳定。在测试中添加 settle delay。
Last run
2026-06-22 - 3 个修复合并,2 个升级。下一步:验证 rate-limit 修复。
两条规则使其累积而不是单纯增长:在运行结束前写入,在下次运行开始时读取。跳过任何一个,明天就从零开始。
第三层 - 使其安全且累积
9. 将经验提炼为技能
状态文件是项目记忆。它随项目消亡。那些通用的经验——在下个项目也有用的——晋升为技能:智能体运行的流程,每次以新方式失败时都会被强化。
Known failure modes
- tls-handshake: Windows runners 在 PowerShell 中 TLS 1.2 失败。使用 bash。
- db-migration: 超过 1M 行的表上的 ALTER 超时。按 10k 块分批。
Anti-patterns
- 永远不要禁用失败测试来使 CI 变绿。而是归档它。
当循环遇到障碍时,经验进入技能,未来每个项目上的每个循环都会继承它。这就是一个每次重新推导你的设置的智能体和一个建立在之前学到的一切基础上的智能体之间的区别。
10. 用护栏使其安全失效
无人值守的循环也是无人值守的攻击面。没有人监视每一步,所以护栏不是可选的。钩子是模型无法绕过的一堵墙。
{ “permissions”: { “allow”: [“Read(*)”, “Bash(npm run test *)”], “deny”: [“Bash(git push origin main)”, “Bash(rm *)”, “Edit(.env)”] }, “hooks”: { “PreToolUse”: [ { “matcher”: “Bash”, “hooks”: [ { “type”: “command”, “command”: “./.claude/hooks/block-dangerous.sh” } ] } ] } }
一个无人值守运行且无法进行不可逆操作的循环,是你真正可以不管的循环。让人留在合并按钮上,以及任何无法撤销的事情上。
11. 按成本路由工作
一个始终在顶级模型上运行的循环,会在更便宜的模型也能完成的工作上浪费钱。按此路由:协调器用重量级模型,高容量任务用更便宜的模型,顶级模型拒绝的任务有退路。验证器和简单分类器可以低成本运行。把昂贵的模型留给困难推理。
12. 跟踪一个数字,了解循环如何死亡
唯一重要的指标是每次接受的变更成本。不是消耗的 token,不是尝试的任务,不是调度的循环次数。如果你接受的比例不到循环产出的一半,你就还在做循环本应节省的审查工作,它在亏损。
循环悄然死亡的三种方式:
-
Ralph Wiggum 循环。 它把一个半完成的工作称为完成,因为“完成”是智能体的意见,而不是测试。解决方法:一个真实的门可以拒绝工作。
-
目标漂移。 长时间运行后,原始约束逐渐消失。“不要动计费”的规则在第 47 次迭代时不见了。解决方法:一个常设规范,智能体每次运行都重新读取。
-
理解债务。 循环交付你没有编写的代码越快,仓库内容和你理解之间的差距就越大。解决方法:阅读差异,让循环保持在小改动上,绝不让它碰架构。
让循环变成钱坑的错误
-
跳过四条件测试。大多数人至少不满足一个条件,但还是构建了。
-
没有客观的门。另一个智能体被要求“审查”而没有测试,只是第二个乐观者。
-
一个智能体同时做工作和验证。它总是给自己打 A。
-
没有状态文件,所以每次运行从零开始。
-
没有硬停止,所以循环一直运行直到你注意到账单。
-
无人值守的循环权限太宽。拒绝和钩子不是可选的。
-
每次迭代都用顶级模型。按任务路由,否则烧钱。
关键点
一个提示者拥有强大的工具,并手动操作它。一个循环设计师构建一个自动运行的系统,只在需要人的部分才叫他们进来:目标、标准、合并按钮、任何不可逆的事情。
从一个到另一个的转变是一个序列,不是秘密:把智能体看作一个循环,让一次运行可靠,给它一个目标和诚实的评分器,放上定时器,然后教它记住并安全失效。中心的模型从未改变。所有改进都是你围绕它构建的循环。
选择你还没有做的一个步骤——可能是独立的评分器、状态文件或一个安全钩子——今天添加它。然后下一个。停止手动操作。构建循环。
如果这对你有帮助,关注我。我每周分解 AI 工具和预测市场,没有废话。
相似文章
@ericzakariasson: https://x.com/ericzakariasson/status/2070493377267646797
一份实用指南,介绍如何为AI编码代理设置迭代循环,包括定义的停止条件、云端执行和通知渠道,以便卸载工作而无需持续监控。
@shmidtqq: https://x.com/shmidtqq/status/2068704187492221405
一份关于AI编程代理循环工程的深入指南,解释了如何构建自动循环来重复提示代理、验证结果并避免失控成本,并通过一位工程师一个月内提交259个拉取请求的案例研究加以说明。
@0xCodez: https://x.com/0xCodez/status/2064374643729773029
一个包含14个步骤的循环工程路线图,指导开发者从手动提示AI编码代理到设计自动化系统,由系统自行处理提示、验证和迭代。
@jasonzhou1993: https://x.com/jasonzhou1993/status/2067937943545897143
循环工程是一种系统设计实践,让AI代理自主决定工作内容、执行并迭代,通过构建跨领域复合的外循环来超越手动提示。文章解释了两层代理框架,以及如何在循环间共享工件以促进累积学习。
@bibryam: 实用循环工程 https://addyo.substack.com/p/practical-loop-engineering… @addyosmani 讨论目标、循环、等
Addy Osmani 讨论了面向AI代理的实用循环工程,涵盖目标、自主反馈循环,以及使用Claude Code和Codex等工具来管理并行代理任务。