定义
什么是 loop engineering?
Loop engineering 是设计能够自动提示编码代理的系统。你不再一条条喂提示词,而是构建一个循环:它自己发现工作,交给代理处理,验证输出,保存状态,并按计划或触发器再次运行。
旧流程是:你提示代理、等待、检查、再提示。loop engineering 的流程是:你设计一个系统来提示代理,给它工具和上下文,检查它的工作,并只在需要判断或不可逆操作时找你。
Loop engineering 是提示、上下文和 harness 之上的一层:让编码代理按计划发现工作、交给隔离代理执行、独立验证结果、持久化状态,并停在人工闸门前。
cron: 0 8 * * 1-5一次性 worktree
每次运行都有清晰的分支边界,便于审查。
实现代理 + 验证代理
一个代理完成变更,另一个独立检查结果。
定义
Loop engineering 是设计能够自动提示编码代理的系统。你不再一条条喂提示词,而是构建一个循环:它自己发现工作,交给代理处理,验证输出,保存状态,并按计划或触发器再次运行。
旧流程是:你提示代理、等待、检查、再提示。loop engineering 的流程是:你设计一个系统来提示代理,给它工具和上下文,检查它的工作,并只在需要判断或不可逆操作时找你。
四层工程栈
为一次模型响应写好一条指令。
决定当前模型窗口里应该放什么。
为一次代理运行配置工具、权限、恢复机制和完成条件。
调度 harness,协调代理,保存状态,让工作安全地重复发生。
循环结构
Loop engineering 把重复的编码流程变成透明系统:触发、分诊、保留状态、隔离变更、验证输出,并把最终决定交给人。
按天、按小时、CI 触发,或在队列变化时运行。
识别任务类型,并选择合适的操作手册。
保存决策、约束和上一次尝试的结果。
给代理一个隔离的分支和文件系统。
基于本地上下文完成最小有效变更。
运行测试、检查 diff,并挑战假设。
打开 PR、请求审查,或在行动前询问。
循环会留下可审计的产物:分支名、日志、测试输出、摘要、PR 链接和状态更新。
当循环能展示成功率、审查负担、回滚路径,以及自动化停止点时,它才适合进入生产。
循环周期
每个有用的循环都有同一套骨架。少掉任何一步,它要么停下,要么空转,要么制造没人审查的风险。
循环自己从 CI、issue、commit、收件箱、分析数据、文档或队列中找工作,而不是等人列任务。
循环把一个有边界的任务、上下文、约束和隔离工作区打包好,让代理能行动且不踩到其他工作。
独立验证器检查测试、diff、需求和失败模式。生成变更的代理不应该批改自己的作业。
结果、决策、运行日志和下一步状态要写到持久位置:PR、issue、状态文件、看板或数据库。
定时器、webhook、CI 事件或队列触发器让循环再次运行。自动化才让一次代理运行变成真正的 loop。
原语
小橙书把 loop engineering 拆成六个具体组件:自动化、worktree、技能、连接器、子代理和记忆。它们把聪明提示词变成代理工作的操作系统。
Cron、webhook、CI 触发、云端 routine 和队列事件,让循环无需人手按下开始。
每个代理都有自己的分支和文件系统边界,避免并行修复互相覆盖或隐藏变更。
技能保存可复用的分诊和决策逻辑。改一次技能,比在每个定时任务里粘一大段指令更靠谱。
连接器扩大循环半径:issue、GitHub、CI、文档、Slack、数据库、日历和 PR 系统都能进入链路。
把写代码的人和挑毛病的人分开。一个代理生成,另一个最好带着不同指令或不同模型去证明它错了。
代理会忘,仓库不会。状态文件、日志、PR 和看板把上下文带过一轮又一轮。
模式
这些循环适用于 Grok、Claude Code、Codex、GitHub Actions 或自定义 runner,因为核心架构与工具无关。
监控停滞 PR,总结阻塞点,重新运行检查,并在上下文丢失前提醒负责人。
每天早上扫描新 issue,标记紧急程度,查找重复项,并准备给人工批准的队列。
发现重复失败,区分 flaky 测试和真实回归,并打开最小诊断 PR。
合并后移除临时开关、更新文档、关闭关联任务,并确认仓库恢复安静。
组合安全升级,运行兼容性检查,只把需要权衡的包升级交给人。
把已合并工作整理成发布说明,包含链接、范围、风险和迁移提示,供审查发布。
风险
能自己工作的循环,也能自己犯错。真正的 loop engineering 不会掩盖风险,而是把风险写在页面上,并围绕它设计护栏。
循环产生的输出超过人类已验证的范围。错误可能在看似绿色的自动化面板后安静累积。
护栏:安装独立 evaluator,并在合并、部署、计费、删除或关闭 issue 前保留人工审查。
代码库变化速度超过你的心智模型。系统仍归你负责,但你已经不理解循环到底发布了什么。
护栏:审查摘要,抽样阅读 diff,并要求状态更新说明代码为什么变化。
循环太方便,你开始不再保留意见,只接受代理交回来的任何东西。
护栏:保留明确决策点,让人必须选择、拒绝或重新定向循环。
重试、fan-out、长上下文和并行代理会把小自动化变成不可预测的账单。
护栏:上线前设置预算上限、重试次数、模型层级、超时规则和升级阈值。
就绪度
目标不是让代理神秘行动,而是建立一个权限清晰、状态可记录、独立验证、最终由人决定的窄自动化循环。
限制工具、分支写入和破坏性操作。循环必须清楚知道自己能在哪些范围内行动。
输出运行摘要、测试结果、变更文件、提示输入,以及审查者需要的产物链接。
跟踪成功率、节省时间、审查修改量、误报、失败类别和回滚频率。
让循环设计可迁移到 Codex、Claude Code、Grok、GitHub Actions 和支持 MCP 的工具。
从这里开始
初学者的循环应该小、有用、无聊。先只读,证明有价值后再加写权限;扩大规模前,先收紧 evaluator。
循环定时读取什么:CI 失败、issue、commit、客服工单、分析数据还是文档?
跨轮记忆放在哪里:STATE.md、看板、issue 评论、数据库行还是运行日志?
谁负责说“不”:第二个代理、测试套件、确定性 gate,还是人工审查者?
每个并行代理是否有 worktree、分支、沙箱或权限边界?
谁来阻止失控循环、重复失败、昂贵模型或过大的上下文窗口?
在哪一步必须暂停给人审查:合并、部署、关闭、删除、计费还是发布?
给正在搜索什么是 loop engineering、编码代理循环如何工作、如何安全构建第一个 loop 的人看的直接答案。