Loop Engineering

Loop Engineering 指南:构建安全的自主 Agent Loop

Loop engineering 是提示、上下文和 harness 之上的一层:让编码代理按计划发现工作、交给隔离代理执行、独立验证结果、持久化状态,并停在人工闸门前。

基于 Loop Engineering 小橙书
生成器与验证器分离
五个动作、六个组件、清晰护栏
loop.yml
计划触发
cron: 0 8 * * 1-5

一次性 worktree

每次运行都有清晰的分支边界,便于审查。

实现代理 + 验证代理

一个代理完成变更,另一个独立检查结果。

没有人工闸门,就不合并、不部署、不关闭问题。

定义

什么是 loop engineering?

Loop engineering 是设计能够自动提示编码代理的系统。你不再一条条喂提示词,而是构建一个循环:它自己发现工作,交给代理处理,验证输出,保存状态,并按计划或触发器再次运行。

核心变化

旧流程是:你提示代理、等待、检查、再提示。loop engineering 的流程是:你设计一个系统来提示代理,给它工具和上下文,检查它的工作,并只在需要判断或不可逆操作时找你。

四层工程栈

1

Prompt engineering

为一次模型响应写好一条指令。

2

Context engineering

决定当前模型窗口里应该放什么。

3

Harness engineering

为一次代理运行配置工具、权限、恢复机制和完成条件。

4

Loop engineering

调度 harness,协调代理,保存状态,让工作安全地重复发生。

Loop engineering 位于 harness 之上一层:harness 负责跑一次,loop 负责让它自己一轮轮跑下去。

循环结构

Loop engineering 如何把提示词变成自主代理系统

Loop engineering 把重复的编码流程变成透明系统:触发、分诊、保留状态、隔离变更、验证输出,并把最终决定交给人。

1

计划触发器

按天、按小时、CI 触发,或在队列变化时运行。

2

分诊技能

识别任务类型,并选择合适的操作手册。

3

用 STATE.md 保存循环记忆

保存决策、约束和上一次尝试的结果。

4

用 worktree 隔离代理执行

给代理一个隔离的分支和文件系统。

5

负责代码变更的实现代理

基于本地上下文完成最小有效变更。

6

负责独立审查的验证代理

运行测试、检查 diff,并挑战假设。

7

人工审查闸门

打开 PR、请求审查,或在行动前询问。

天生透明

循环会留下可审计的产物:分支名、日志、测试输出、摘要、PR 链接和状态更新。

可衡量的就绪度

当循环能展示成功率、审查负担、回滚路径,以及自动化停止点时,它才适合进入生产。

循环周期

Agent loop 的五个动作

每个有用的循环都有同一套骨架。少掉任何一步,它要么停下,要么空转,要么制造没人审查的风险。

01

发现

循环自己从 CI、issue、commit、收件箱、分析数据、文档或队列中找工作,而不是等人列任务。

02

交接

循环把一个有边界的任务、上下文、约束和隔离工作区打包好,让代理能行动且不踩到其他工作。

03

验证

独立验证器检查测试、diff、需求和失败模式。生成变更的代理不应该批改自己的作业。

04

持久化

结果、决策、运行日志和下一步状态要写到持久位置:PR、issue、状态文件、看板或数据库。

05

调度

定时器、webhook、CI 事件或队列触发器让循环再次运行。自动化才让一次代理运行变成真正的 loop。

Loop 不是重复提示词,而是发现、交接、验证、持久化和调度的组合,并留下维护者可以审计的证据。

原语

生产级 loop engineering 系统的六个组件

小橙书把 loop engineering 拆成六个具体组件:自动化、worktree、技能、连接器、子代理和记忆。它们把聪明提示词变成代理工作的操作系统。

自动化与调度

Cron、webhook、CI 触发、云端 routine 和队列事件,让循环无需人手按下开始。

用于隔离代理执行的 worktree

每个代理都有自己的分支和文件系统边界,避免并行修复互相覆盖或隐藏变更。

可复用工程判断的技能

技能保存可复用的分诊和决策逻辑。改一次技能,比在每个定时任务里粘一大段指令更靠谱。

连接器与 MCP 集成

连接器扩大循环半径:issue、GitHub、CI、文档、Slack、数据库、日历和 PR 系统都能进入链路。

生成器与 evaluator 子代理

把写代码的人和挑毛病的人分开。一个代理生成,另一个最好带着不同指令或不同模型去证明它错了。

落盘状态与记忆

代理会忘,仓库不会。状态文件、日志、PR 和看板把上下文带过一轮又一轮。

模式

面向软件团队的 loop engineering 模式

这些循环适用于 Grok、Claude Code、Codex、GitHub Actions 或自定义 runner,因为核心架构与工具无关。

PR babysitter 循环

监控停滞 PR,总结阻塞点,重新运行检查,并在上下文丢失前提醒负责人。

每日分诊循环

每天早上扫描新 issue,标记紧急程度,查找重复项,并准备给人工批准的队列。

CI 清扫循环

发现重复失败,区分 flaky 测试和真实回归,并打开最小诊断 PR。

合并后清理循环

合并后移除临时开关、更新文档、关闭关联任务,并确认仓库恢复安静。

依赖升级清扫循环

组合安全升级,运行兼容性检查,只把需要权衡的包升级交给人。

变更日志草稿循环

把已合并工作整理成发布说明,包含链接、范围、风险和迁移提示,供审查发布。

风险

无人值守 agent loop 的风险与成本

能自己工作的循环,也能自己犯错。真正的 loop engineering 不会掩盖风险,而是把风险写在页面上,并围绕它设计护栏。

验证债

循环产生的输出超过人类已验证的范围。错误可能在看似绿色的自动化面板后安静累积。

护栏:安装独立 evaluator,并在合并、部署、计费、删除或关闭 issue 前保留人工审查。

理解腐烂

代码库变化速度超过你的心智模型。系统仍归你负责,但你已经不理解循环到底发布了什么。

护栏:审查摘要,抽样阅读 diff,并要求状态更新说明代码为什么变化。

认知投降

循环太方便,你开始不再保留意见,只接受代理交回来的任何东西。

护栏:保留明确决策点,让人必须选择、拒绝或重新定向循环。

Token 失控

重试、fan-out、长上下文和并行代理会把小自动化变成不可预测的账单。

护栏:上线前设置预算上限、重试次数、模型层级、超时规则和升级阈值。

就绪度

Loop engineering 安全性:可观测、可回退、有人把关

目标不是让代理神秘行动,而是建立一个权限清晰、状态可记录、独立验证、最终由人决定的窄自动化循环。

安全边界

限制工具、分支写入和破坏性操作。循环必须清楚知道自己能在哪些范围内行动。

可观测性

输出运行摘要、测试结果、变更文件、提示输入,以及审查者需要的产物链接。

就绪指标

跟踪成功率、节省时间、审查修改量、误报、失败类别和回滚频率。

工具无关架构

让循环设计可迁移到 Codex、Claude Code、Grok、GitHub Actions 和支持 MCP 的工具。

合并前需要人工批准
独立验证步骤
每次运行后更新状态
明确的回滚或丢弃路径

从这里开始

第一个 loop engineering 检查清单

初学者的循环应该小、有用、无聊。先只读,证明有价值后再加写权限;扩大规模前,先收紧 evaluator。

发现源

循环定时读取什么:CI 失败、issue、commit、客服工单、分析数据还是文档?

状态文件

跨轮记忆放在哪里:STATE.md、看板、issue 评论、数据库行还是运行日志?

独立验证器

谁负责说“不”:第二个代理、测试套件、确定性 gate,还是人工审查者?

隔离

每个并行代理是否有 worktree、分支、沙箱或权限边界?

Token 与重试上限

谁来阻止失控循环、重复失败、昂贵模型或过大的上下文窗口?

人工审查点

在哪一步必须暂停给人审查:合并、部署、关闭、删除、计费还是发布?

Loop engineering 常见问题

给正在搜索什么是 loop engineering、编码代理循环如何工作、如何安全构建第一个 loop 的人看的直接答案。

开始构建安全的自主编码代理循环

用自动化消除重复提示,而不是消除判断。从一个窄小的重复流程开始,加入状态、隔离、验证和人工闸门;等循环赢得信任后再扩张。