万字长文谈谈Loop Engineering

一、什么是 Loop Engineering

1.1 引爆点:两句话,百万次转发

2026 年 6 月初,AI 编程社区被两句话点燃:

Peter Steinberger(OpenClaw 创始人):"You shouldn't be prompting coding agents anymore. You should be designing loops that prompt your agents."
Boris Cherny(Anthropic Claude Code 负责人):"I don't prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. My job is to write loops."

这两句话在 X(Twitter)上获得了超过 500 万次浏览。随后,Google 工程师Addy Osmani 发表了一篇博客,将这个概念正式命名为Loop Engineering (循环工程),并给出了清晰的定义框架。开发者Cobus Greyling 则推出了开源参考实现loop-engineering(MIT 协议,7K+ Star),将理念变成了可直接落地的工具集。

那么,Loop Engineering 到底是什么?

1.2 核心定义

Loop Engineering是一种系统设计方法论:你不再亲自给 AI Agent 写提示词,而是设计一套自动化循环系统,让系统自己去发现工作、分配任务、验证结果、持久化状态,并在必要时交还给人。

用 Addy Osmani 的话说:

Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead.

杠杆点已经从"打磨单条 prompt"移到了"设计编排 Agent 的控制系统"。

1.3 AI 工程的四次范式跃迁

过去两年,AI 开发的重心经历了四次清晰的跃迁:

阶段 核心问题 人的角色 典型产物
Prompt Engineering 怎么问 AI? 提示词工匠 精心打磨的 prompt 模板
Context Engineering 给 AI 什么信息? 上下文组织者 AGENTS.mdCLAUDE.md、规则文件
Harness Engineering 如何组织 AI 的能力? 环境搭建者 工具链、MCP 连接器、权限配置
Loop Engineering 如何让 AI 持续创造结果? 系统架构师 自动化循环、状态文件、验证链

每一次跃迁,人的角色都在向上移动:从"操作工"到"监工"再到"架构师"。Loop Engineering 是这条演进路线的当前终点------你不再是那个守在聊天框前不断输入指令的人,你是那个设计自动化循环结构的人。

1.4 Agent Loop vs Loop Engineering

很多人把Agent LoopLoop Engineering 混为一谈------以为在终端里敲/loop 1d就算"做 loop 工程"了。其实不然:

维度 Agent Loop Loop Engineering
本质 运行机制 / 产品功能 系统设计 / 工程方法论
你在做什么 启动一个会重复的 Agent 任务 设计发现→执行→验证→交接的完整系统
粒度 一次递归目标 + 调度 模式、技能、状态 schema、安全策略、成本模型
成功标准 "它又在跑了" "它跑得对、跑得省、出事能停、人能看懂它干了什么"
典型产物 /loop 1d ... 一条命令 STATE.md + Skills + Worktree 策略 + Verifier + Checklist

打个比方:Agent Loopwhile (!done) { agent.run(); }------循环语句本身。Loop Engineering 像写整个main():输入从哪来、状态存哪、谁写谁验、超时怎么办、日志打哪、什么时候break叫人。

1.5 三层概念关系

参考库的 concepts 文档把几层概念捋得很清楚:

ini 复制代码
Harness = 单次 Agent 运行的环境(工具、权限、规则)
Loop    = Harness + 调度 + 状态 + 验证链
Loop Engineering = 设计并运营上述 Loop 系统的工程实践
概念 关注点 类比
Agent Harness Engineering 一次会话里 Agent 能用什么、知道什么 单个工位的工具箱
Agent Loop 让 Agent 按节奏反复跑 传送带的运转
Loop Engineering 整条产线如何发现任务、分工、质检、交接 工厂设计与 SOP

二、Loop Engineering 的六大构件

一个能真正"无人值守"跑起来的 Loop,不是一条长 prompt,而是六个部分精密协作的系统。

2.1 Automations / Scheduling(自动化调度)------ 心跳

没有调度,你只有一个一次性的 Agent 运行。调度是 Loop 的心跳。

常见实现方式: /loop(Grok、Claude Code)------ 定时重复执行/schedule ------ 在特定时间点触发

  • GitHub Actions cron ------ 团队级定时任务/goal ------ 运行直到可验证条件为真
  • 自定义 harness 调度器

关键属性: 间隔时间、是否立即触发、单次还是重复、是否持久化(重启后仍存活)。

2.2 Worktrees(工作树)------ 安全并行

当两个 Agent 同时编辑同一个文件时,你会得到合并地狱。Git worktree(或等效的隔离检出)给每个 Agent 自己的工作目录------共享历史但不共享工作树。

在 Grok 中:传递isolation: "worktree"给子 Agent。在 Claude Code 中:使用--worktree或专用会话。

清理很重要 ------Loop 应该在任务完成或移交时删除 worktree。loop-worktreeCLI 使这变得机械化:每次尝试一个 worktree,在 manifest 中跟踪,在拒绝或升级时清理。

2.3 Skills(技能)------ 意图的持久记忆

一个 Skill(通常是SKILL.md+ 可选的脚本/参考文件)编码了:

  • 项目约定
  • "我们不这样做,因为 X 事故"
  • 构建/测试/lint 命令
  • 审查标准
  • 领域知识

没有 Skills,Loop 每次运行都从零开始重新推导一切------这就是Intent Debt(意图债) 。Skills 是偿还意图债的方式:约定写一次,每次运行都读。

2.4 Plugins & Connectors(MCP)------ 连接真实世界

一个只能读文件系统的 Loop 是受限的。连接器让 Loop 能够:

  • 读写 Linear / Jira 工单
  • 发送 Slack / Discord 消息
  • 查询数据库或内部 API
  • 创建 GitHub 分支和 PR
  • 触发部署或 runbook

MCP(Model Context Protocol)已成为通用基板,为一个工具编写的连接器通常可以在另一个工具中工作。

2.5 Sub-agents(子 Agent)------ Maker / Checker 分离

这是可靠 Loop 最重要的结构模式。

写代码的 Agent 是评判自己工作的糟糕法官。第二个 Agent(有时使用更强的模型,总是使用不同的指令)执行验证。

常见分离模式:

  • Explorer → Implementer → Verifier
  • Implementer → Security reviewer
  • Implementer → Test writer + runner

在无人值守的 Loop 中,Verifier 是让你(人类)能够放心走开的关键。

2.6 Memory / State(记忆/状态)------ 跨会话的脊柱

模型在独立的轮次或会话之间没有长期记忆。Loop 必须读写持久化的东西:

  • 仓库中的 STATE.mdLOOP-STATE.json
  • Linear 看板或 GitHub Project 的专用区域
  • 小型数据库行

好的状态回答三个问题:

  1. 我们当前在做什么?
  2. 上次我们尝试了什么,结果如何?
  3. 什么在等待人类?

状态文件通常是 Loop 产生的最重要的产物。

2.7 构件组装顺序

一个最小可行 Loop 通常从以下开始:

复制代码
调度 + 一个 Skill(分诊)+ 状态文件

然后逐步添加:

  • 当你开始做修改时 → 添加 Worktree 隔离
  • 当 Loop 自主行动时 → 添加子 Agent 验证
  • 当你想让它驱动工单和 PR 时 → 添加连接器

最好的 Loop 是每个新构件只在前一个版本证明了其价值(和失败模式)后才添加的。

三、LangChain 视角:四层 Loop 模型

如果说 Addy Osmani 的六大构件回答了"Loop 由什么组成",那么 LangChain 团队在《The Art of Loop Engineering》中提出的四层 Loop 模型则回答了"Loop 如何层层叠加、持续进化"。Swyx 将这种层层叠加的艺术称为 Loopcraft------"the art of stacking loops"。

这四层 Loop 不是并列关系,而是自底向上、逐层增强的堆叠结构。每一层都建立在下一层之上,外层 Loop 可以"伸手进去"修改内层 Loop 的配置。

3.1 Loop 1:Agent 循环 ------ 最基础的"模型调用工具"

这是所有 Agent 的起点:给 LLM 上下文,让它调用工具,循环直到任务完成。

ini 复制代码
from langchain.agents import create_agent

# 最基础的 Agent Loop:模型 + 工具 = 能行动的 Agent
agent = create_agent(
    model="claude-sonnet-4-20250514",
    tools=[read_file, write_docs, open_pr],
    system_prompt="你是一个文档助手,负责改进项目文档。"
)

# 一次调用,Agent 内部自动循环调用工具直到完成
result = agent.invoke({
    "messages": [{"role": "user", "content": "更新 README 中的安装说明"}]
})

这就是 LangChain create_agent 给的东西。选一个模型,接入工具,你就有了一个能工作的 Agent Loop。以 LangChain 内部的文档 Agent 为例:它接收文档改进请求 → 模型规划并起草修改 → 用工具 clone 仓库、读写文件、打开 PR。

但问题也很明显: Agent 的产出不一定正确或一致。它可能在第一次尝试时就出错,而你没有机制去发现。

3.2 Loop 2:验证循环 ------ "写完不算完,验过才算"

当一致性很重要时,在 Agent Loop 外面包一层验证循环:检查输出,不合格就带着反馈重试。

ini 复制代码
from langchain.agents import create_agent
from deepagents.middleware import RubricMiddleware

# RubricMiddleware 实现验证循环:
# Agent 产出 → Grader 按评分标准检查 → 不合格就带反馈重试
agent = create_agent(
    model="claude-sonnet-4-20250514",
    tools=[read_file, write_docs, open_pr],
    middleware=[
        RubricMiddleware(
            rubric="""
            1. 所有链接必须可解析
            2. 所有 CI 检查必须通过
            3. diff 范围不能超出请求的修改
            """,
            max_retries=3# 最多重试 3 次
        )
    ]
)

验证循环的核心是 Grader(评分器) ------它按评分标准检查 Agent 的输出。Grader 可以是确定性的(如运行测试、检查链接),也可以是 Agentic 的(LLM-as-a-Judge,用另一个模型来评判)。

对于文档 Agent:Grader 在每次尝试后运行测试,检查所有链接是否可解析、CI 是否通过、diff 是否在请求范围内。这些错误类型不需要人工审查就能自动捕获。

代价: 验证循环增加了延迟和每次运行的成本。但当质量比速度更重要时------大多数生产场景都是如此------这个代价是值得的。

3.3 Loop 3:事件驱动循环 ------ "Agent 不再是你手动调用的东西"

前两层 Loop 自动化了"做"和"验",但 Agent 仍然需要你手动触发。事件驱动循环把 Agent 接入你的生态系统------一个新文档到达、一个定时器触发、一个 webhook 到来------Agent 自动运行。

ini 复制代码
from langsmith import deployment

# LangSmith Deployment 支持 cron 和 webhook 触发
# 将 Agent 部署为持续运行的后台服务
deployment.serve(
    agent=agent,
    triggers=[
        # Cron 触发:每天早上 9 点运行
        deployment.CronTrigger(schedule="0 9 * * *"),
        # Webhook 触发:Slack 消息到达时运行
        deployment.WebhookTrigger(
            source="slack",
            channel="#docs-plz"
        )
    ]
)

LangChain 的文档 Agent 就是通过 Fleet (无代码 Agent 构建器)的 channels 和 schedules 来实现事件驱动:每当 #docs-plz Slack 频道有消息,就触发文档 Agent 运行。

关键转变: Agent 不再是你手动调用的东西------它是持续运行在更大系统中的组件。这也是 OpenClaw 中 "heartbeats" 概念的精髓:把你的 Agent 变成一个始终在线、主动出击的助手。

3.4 Loop 4:爬山循环 ------ "自动化改进本身"

前三层 Loop 自动化了工作。第四层------也是最重要的一层------自动化了改进

ini 复制代码
from langsmith import Engine

# LangSmith Engine 分析生产 Trace,自动改进 Harness 配置
engine = Engine(
    agent=agent,
    analysis_prompt="""
    分析最近的 Agent 运行 Trace,找出:
    1. 哪些 prompt 导致了低质量输出?
    2. 哪些工具调用经常失败?
    3. Grader 的评分标准是否需要调整?
    """,
    auto_improve=True  # 自动应用改进
)

# Engine 持续监控,发现问题自动提交改进 PR
engine.monitor()

每一次 Agent 运行都会产生 Trace:模型做了什么、调用了哪些工具、Grader 给了什么反馈。这些 Trace 包含关于"什么有效、什么无效"的高价值信号。爬山循环运行一个分析 Agent 来处理这些 Trace,用发现来重写 Harness 配置------包括 prompt 调整、工具配置优化、Grader 标准改进。

关键动作: 返回箭头不只是回到顶层------它伸手进去直接更新 Agent Loop。外层 Loop 的每一次循环都让内层 Loop 更有效。

对于更进一步的团队,爬山循环还可以:

  • 对使用开源模型的团队,将 Trace 结果作为 RL 微调的训练信号
  • 改进辅助上下文(记忆、检索到的 Skills)
  • 自动 A/B 测试不同的 prompt 策略

3.5 四层 Loop 总览

Loop 做什么 影响 LangChain 原语
1. Agent 循环 模型反复调用工具直到任务完成 自动化工作 create_agent
2. 验证循环 Agent 产出按评分标准检查,不合格带反馈重试 确保质量和正确性 RubricMiddleware
3. 事件驱动循环 事件触发 Agent 运行,更新真实系统 规模化自动工作 LangSmith Deployment (cron/webhook) 或 Fleet channels
4. 爬山循环 生产 Trace 喂给分析 Agent,改进 Harness 配置 Harness 持续改进 LangSmith Engine

LangChain 团队的核心观点: Loop 1 和 Loop 2 我们已经思考了很久。但重点应该转向 Loop 3 和 Loop 4------把 Agent 嵌入你的生态系统,让它们根据你的标准持续改进。这才是价值复利产生的地方。

Satya Nadella 对此有一个精辟的总结:"那些早期构建学习循环的公司------人类判断力和 token 资本共同复利------将建立起难以复制的优势。"

3.6 四层模型与六大构件的关系

LangChain 的四层模型和 Addy Osmani 的六大构件是互补视角,而非竞争关系:

六大构件 在四层模型中的位置
Scheduling(调度) Loop 3 的核心------cron/webhook 触发
Worktrees(工作树) Loop 1/2 的隔离基础------并行安全
Skills(技能) Loop 1 的上下文注入 + Loop 4 的优化目标
MCP Connectors(连接器) Loop 1 的工具层 + Loop 3 的事件源
Sub-agents(子 Agent) Loop 2 的 Maker/Checker 分离
State/Memory(状态) 跨所有 Loop 的持久化脊柱

简单来说:六大构件是"零件清单",四层模型是"组装说明书"。

四、如何设计一个 Loop

4.1 Loop 的解剖结构

一个完整的 Loop 运行周期包含以下阶段:

4.2 自主级别:L0 → L1 → L2 → L3

Loop Engineering 强调分阶段放权,绝不一步到位。完整的自主级别从 L0 草稿开始:

级别 描述
L0 Draft Loop 设计文档 + 手动触发,验证流程正确性
L1 Report Only 分诊 → 写入状态,不自动执行任何操作
L2 Assisted 小型自动修复 + Verifier 验证
L3 Unattended 无需人工监控,自主运行

L0 Draft 是大多数团队忽略的起点: 你先写一份 LOOP.md 设计文档,手动运行每个步骤,确认分诊逻辑、状态读写、升级触发都符合预期。L0 阶段不涉及任何自动化------你在验证"这个 Loop 的设计本身是否正确"。

关键原则:永远不要在新模式的生产仓库上跳过 L1。 从 L0 到 L3,每一级都必须在前一级稳定运行后才推进。

4.3 Loop 设计的前提

在启用生产 Loop 之前,必须通过以下 10 个维度的检查:

1. 目的与范围

  • 单一明确目标------一句话:这个 Loop 完成什么?
  • 明确的非目标------这个 Loop ** 不会** 做什么?
  • 监控范围------哪些仓库、分支、PR 或工单?
  • 分阶段上线------先只报告,再小步行动?

2. 调度

  • 选择节奏------间隔匹配紧急程度
  • 是否立即触发------启动时运行,还是等待间隔?
  • 持久化------如果需要,是否在会话/工具重启后存活?
  • 自我清理------监控列表为空时 scheduler_delete

3. Skills

  • 分诊 Skill 存在,输出格式紧凑
  • 操作 Skill(minimal-fix 等)匹配项目约定
  • Skill 描述无聊且具体(良好的自动触发)

4. Maker / Checker 分离

  • Implementer 和 Verifier 是分离的(Agent、模型或指令)
  • Implementer 不能 标记自己的工作为"完成"
  • Verifier 在隔离环境(worktree)中运行测试后才批准

5. 状态 / 记忆

  • 状态文件或看板 schema 已文档化
  • Loop 每次运行开始时读取先前状态
  • Loop 写入结果、时间戳、最后操作
  • 每次运行清理已解决/已合并/已关闭的项目

6. 人工交接

  • 升级触发器明确(最大尝试次数、风险路径、模糊性)
  • 路径黑名单------auth、payments、secrets、infra
  • 通知规则------仅在需要人类行动时 ping

7. 连接器(MCP)

  • 连接器最小权限(读 vs 写)
  • Loop 可以打开/更新 PR 或工单(如果行动),而不仅仅是建议
  • Bot 身份在 PR 评论上清晰可见

8. 成本与限制

  • Token 预算已估算loop-budget.md 包含每日上限和终止开关loop-run-log.md 用于追加式运行历史
  • 每个项目每次运行的最大迭代次数
  • 每天最大自动 PR 数

9. 可观测性

  • 记录每次运行:开始时间、发现项目、采取行动、升级
  • 成功指标已选择
  • 团队可以在不阅读聊天日志的情况下检查状态文件

10. 安全

  • 没有明确允许列表的情况下不自动合并
  • 密钥/env 文件在黑名单中
  • Flake 处理------不要仅用重试来"修复"间歇性测试

4.4 Loop 设计的栏栅

如果 Loop 如果中断,在继续之前停止并修复,参考样例:

  • 同一个 PR 有超过 3 次自动修复尝试但没有进展
  • Verifier 和 Implementer 是同一个 Agent 会话
  • 没有状态文件------Loop 每次运行都失忆
  • 每次运行都通知,无论是否有发现
  • 自动合并启用但没有路径允许列表

4.5 Loop 设计的反模式

以下反模式是设计阶段就必须避免的错误------它们不是运行时故障,而是架构层面的根本缺陷。启用无人值守 Loop 之前,逐条自查:

# 反模式 为什么致命 正确做法
1 同一个 Agent 实现并验证 自己写的代码自己检查,等于没检查。模型会无意识地偏向自己的实现 Implementer 和 Verifier 必须是不同 Agent、不同模型或不同指令
2 没有 Early Exit 监控列表为空时仍然全量扫描,每天烧掉数百万 token 无用功 空列表在 ~3-5k token 内退出,不要"以防万一"多跑一遍
3 状态文件形同虚设 写了状态但下次运行不读,或者状态 schema 不清晰,等于每次从零开始 状态文件必须文档化 schema,每次运行开头强制读取上次状态
4 无分支允许列表的自动合并 Loop 可以直接合并到main,一旦出错直接污染主干 自动合并必须配置分支和路径双重允许列表
5 用重试"修复" Flake 测试 间歇性失败测试被重试掩盖,真正的 bug 被埋藏 Flake 测试应标记为@flake 并排除,或升级给人类处理
6 每次运行都发通知 团队很快学会忽略 Loop 消息,真正需要关注时也错过 只在需要人类行动时 ping------"发现 3 个高优 Issue"比"运行完成"有价值
7 无 Token 预算上限 一个失控的 Loop 可以在 48 小时内烧掉 800 万 token 设置每日 token 上限,80% 时切换为报告模式,100% 时终止
8 Verifier 与 Implementer 共享会话 上下文污染------Verifier 看到了 Implementer 的推理过程,丧失独立性 Verifier 必须在全新会话/worktree 中运行,只看代码 diff
9 无限修复循环 同一个 Issue 反复修复失败,Loop 永不停止 每项最多 3 次尝试,超过后自动升级给人类
10 跳过 L1 直接上 L3 从"只报告"直接跳到"自动合并",中间没有任何验证 必须经历 L0→L1→L2→L3,每一级稳定 1-2 周才推进

最重要的反模式是 #1#8 ------它们本质上说的是同一件事:独立性是验证的前提。一个看过实现过程的验证者,无论多强,都已经丧失了独立判断的能力。

4.6 Loop 设计的事故响应流程

当 Loop 在生产中出事(例如自动合并了错误代码、烧爆了预算、修改了不该碰的文件),按以下四步流程处理:

第 1 步:立即停止

执行 loop-pause-all(全局暂停所有 Loop)或 scheduler_delete(删除特定 Loop 的调度任务)。这不是"建议暂停"------是立刻、马上、现在停止。

第 2 步:根因分析

不要急于修复。先问三个问题:

  1. 哪个安全机制本该阻止这件事但没生效?
  2. 这个 Loop 在哪个级别运行?是否跳级了?
  3. 状态文件和运行日志说了什么?

第 3 步:修复并降级

修好根因后,不要恢复原级别。将 Loop 降级至少一级:

  • L3 出事 → 降回 L2,人工闸门重新启用
  • L2 出事 → 降回 L1,只报告不行动
  • L1 出事 → 回到 L0,重新审视设计

第 4 步:记录教训

stories/ 目录下写一份诚实的事后复盘,格式参考 why-we-killed-ci-sweeper.md。这份文档的价值不在于"我们学到了什么"------而在于下一个团队不需要再踩同样的坑

五、Loop 模式设计

5.1 Daily Triage(每日分诊)

目标: 每天早上(或活跃时段)获得优先排序的、可操作的待办事项图景------无需手动检查 CI、issues、PR 和聊天。

典型周期: 调度触发 → 分诊 Skill 摄入 CI 失败(24h)、开放 issues/工单、最近提交、先前 STATE.md → 高优先级项目追加到状态并建议下一步行动 → 清理已解决项目 → 记录运行后复盘。

最佳入门 Loop。 先跑 1-2 周只报告模式,测量分诊准确率后再启用 L2。

5.2 PR Babysitter(PR 保姆)

目标: 减少人类在 PR 审查、CI、rebase 和合并上花费的时间,同时保持人类在判断席位上。

典型周期: 发现团队开放的 PR → 对每个 PR 运行分诊 → CI 红了就生成修复 → 有审查评论就提出最小补丁 → 准备就绪就标记"ready to merge" → 模糊或高风险就升级给人。

5.3 CI Sweeper(CI 清扫者)

目标: 快速响应 main 或活跃分支上的 CI 失败------诊断、提出最小修复,无法自信解决时升级。

关键安全措施: 分类 flake vs 真实回归 vs 基础设施;flake 不自动修复;同一失败最多 3 次尝试后升级;loop-guard熔断器防止无限循环。

5.3.1 真实失败案例:Why We Killed Our CI Sweeper

loop-engineering 记录了一次真实事故------这正是 CI Sweeper 被标记为"L2 谨慎模式"的原因:

维度 详情
触发条件 loop 5m 在 main 分支红色期间运行,恰逢 flaky 迁移分支
损失 48h 烧掉 ~800 万 token;11 个 PR 中 3 个是症状修复,1 个破坏生产配置(人工拦截)
根因 1 没有 L1 阶段------直接跳到自动修复
根因 2 Verifier 与 Implementer 在同一会话(一半的运行)
根因 3 没有分支允许列表------扫到了已知 CI 红色的 feature 分支
根因 4 没有每日预算------调度器从不暂停
事后处理 删除所有调度任务 → 切换为 main 失败事件驱动 → 先只报告 1 周 → Verifier 独立子 Agent → 每日 200 万 token 上限 → 分支允许列表仅 main

教训提炼: 这个案例暴露了 Loop Engineering 中最危险的认知偏差------"自动化 = 安全" 。实际上,自动化程度越高,需要的安全机制越严格。CI Sweeper 的模式文档之所以存在,正是因为有人付出了真金白银的代价。

记住: L2 不是 L1 的升级版,而是 L1 加上安全网之后的谨慎延伸。

5.4 Dependency Sweeper(依赖清扫者)

目标: 自动化补丁和低风险 CVE 依赖更新,减少"依赖过期焦虑"。

典型周期: 调度触发(建议每周一次,非高峰时段)→ 扫描 package.json / requirements.txt / Cargo.toml → 过滤:仅补丁版本 + 低风险 CVE → 对每个候选依赖创建独立 Worktree → 运行 npm update / pip install --upgrade → 执行测试套件 → 测试通过则创建 PR,失败则记录原因并跳过。

关键安全措施:

  • 前 30 天仅补丁 + 低风险 CVE ------主版本和黑名单包(如 authcrypto 相关)需要人工闸门
  • 每个依赖独立 PR------避免一个 PR 改 20 个包导致无法定位回归
  • 锁定文件变更必须可审查 ------如果 package-lock.json diff 超过 500 行,升级给人类
  • 不碰 peer dependency------这类变更几乎总是需要人工判断

为什么从补丁开始: 补丁版本更新是最"无聊"的工作------收益明确(修 bug、堵漏洞),风险极低(SemVer 保证向后兼容)。让 Loop 处理无聊的事,人类处理需要判断的事。

5.5 Changelog Drafter(变更日志起草者)

目标: 从合并的 PR 和提交自动生成发布说明草稿,消除"发布前赶写 changelog"的痛苦。

典型周期: 调度触发(建议每次发布前,或每周五下午)→ 拉取自上次发布以来的所有合并 PR → 按标签分类(bugfeaturebreakingdocsdeps)→ 提取 PR 标题和描述中的关键信息 → 按分类生成 Markdown 草稿 → 标注需要人工补充的部分(如"这个 breaking change 的迁移指南需要你写")。

关键设计决策:

  • 只起草,不发布------最终版本永远由人类编辑和签署
  • 标注置信度------对每个条目标注"自动提取"或"需要人工确认"
  • 关联 Issue------自动链接相关的 Issue 编号,方便读者追溯
  • 与 Post-Merge Cleanup 配合------Cleanup 清理代码,Drafter 记录变更,两者是天然搭档

低风险、高价值。 这是最适合作为第二个 Loop 的模式------在 Daily Triage 稳定后,Changelog Drafter 几乎零风险,但能显著减少发布摩擦。

5.6 Post-Merge Cleanup(合并后清理)

目标: 识别合并后可以清理的内容------死代码、过时注释、TODO 债务、未使用的导入。

典型周期: 调度触发(建议非高峰时段,如凌晨 2 点)→ 扫描最近合并的 PR 涉及的文件 → 检测模式:被注释掉的代码块、TODO / FIXME 标记、未使用的导入、重复代码片段 → 对每个发现生成清理建议 → 创建单个"清理 PR"(而非每个发现一个 PR)。

关键安全措施:

  • 非高峰时段运行------避免与活跃开发冲突
  • 最低紧急程度------清理 PR 永远不阻塞任何东西
  • 仅限最近合并的文件------不扫描整个代码库(范围过大容易引入回归)
  • 不碰测试文件------测试中的"死代码"可能是故意保留的边界用例
  • 单个清理 PR------方便一次性审查和合并,避免 PR 洪水

为什么需要这个模式: 代码库的熵增是必然的。每次合并都在增加复杂度------临时代码变成永久代码、注释过时、TODO 永远不做。Post-Merge Cleanup 是对抗熵增的自动化手段。

5.7 Issue Triage(Issue 分诊)

目标: 自动分类新 Issue------标记重复、建议优先级、路由到正确的团队。仅建议,不自动关闭。

典型周期: Webhook 触发(新 Issue 创建时)→ 读取 Issue 标题和正文 → 与已有 Issue 做相似度匹配(检测重复)→ 按模板检查信息完整性(是否有复现步骤、环境信息、期望行为)→ 建议标签(bug / feature / question / duplicate)和优先级 → 如果信息不足,生成友好的追问评论 → 将分诊结果写入 STATE.md

关键设计决策:

  • 只建议,不执行------标签和关闭操作由人类确认
  • 重复检测用相似度而非精确匹配------避免漏掉换了一种说法描述的同一个 bug
  • 信息不足时追问而非关闭------"请补充复现步骤"比"信息不足已关闭"友好得多
  • 路由建议基于历史数据------分析过去 3 个月每个标签的实际处理人,而非静态的 CODEOWNERS

与 Daily Triage 的关系: Issue Triage 是事件驱动的"实时分诊",Daily Triage 是定时驱动的"全局分诊"。两者互补------Issue Triage 保证新 Issue 不被遗漏,Daily Triage 保证全局视角不被丢失。

5.8 模式选择与 LangChain 映射

上面七个模式覆盖了软件工程中最常见的自动化场景。选择哪个模式取决于你的痛点风险承受能力------而不是"哪个模式更酷"。

选择指南:

你的痛点 推荐模式 起始级别 为什么从这个级别开始
"每天早上不知道项目什么状态" Daily Triage L1 零风险,纯信息输出
"PR 审查太花时间" PR Babysitter L1 → L2 先看 Agent 的建议质量,再开自动修复
"CI 经常红,没人及时看" CI Sweeper L1 → L2 必须从 L1 开始------参考 5.3.1 事故案例
"依赖更新总是忘记" Dependency Sweeper L2 仅补丁 补丁更新风险极低,适合直接 L2
"发布说明写起来很痛苦" Changelog Drafter L1 零风险,纯文本生成
"代码库越来越乱" Post-Merge Cleanup L1 先看清理建议是否合理
"Issue 积压严重" Issue Triage L1 只建议不执行,零风险

模式与 LangChain 四层模型的映射:

每个模式都可以用 LangChain 原语实现,映射关系如下:

模式 核心 Loop 层 LangChain 关键原语 说明
Daily Triage Loop 1 + Loop 3 create_agent + CronTrigger Agent 执行分诊,cron 定时触发
PR Babysitter Loop 1 + Loop 2 create_agent + RubricMiddleware Agent 修复 + Grader 验证
CI Sweeper Loop 1 + Loop 2 + Loop 3 create_agent + RubricMiddleware + WebhookTrigger CI 事件触发,修复后验证
Dependency Sweeper Loop 1 + Loop 3 create_agent + CronTrigger 定时检查 + 自动补丁 PR
Changelog Drafter Loop 1 + Loop 3 create_agent + CronTrigger 定时生成发布说明草稿
Post-Merge Cleanup Loop 1 + Loop 3 create_agent + CronTrigger 非高峰定时清理
Issue Triage Loop 1 + Loop 3 create_agent + WebhookTrigger Issue 事件触发分诊

进阶实践: 当所有模式都稳定运行后,引入 Loop 4(LangSmith Engine)对所有模式的生产 Trace 进行统一分析。Engine 能发现跨模式的改进机会------例如 CI Sweeper 和 PR Babysitter 在重复修复同一类问题时,Engine 可以建议合并或调整分工。这就是"爬山循环"的真正价值:不是改进单个 Loop,而是优化整个 Loop 生态。

5.9 模式背后的设计原则

七个模式看似各不相同,但背后共享着五条设计原则。理解这些原则,你就能设计自己的模式,而不只是复制别人的。

原则一:从 L1 开始,永远从 L1 开始。 这不是保守,是工程纪律。L1 让你在零风险下验证 Agent 的判断质量。Daily Triage 跑两周只报告,你就能知道它的分诊准确率。CI Sweeper 的事故正是因为跳过了这一步。L1 不是"功能不完整",而是"安全网就位前的必要观察期"。

原则二:Maker/Checker 分离不是可选项。 七个模式中,凡是涉及代码修改的(PR Babysitter、CI Sweeper、Dependency Sweeper、Post-Merge Cleanup),都要求 Implementer 和 Verifier 是独立子 Agent。这不是过度设计------CI Sweeper 事故中,一半的运行 Verifier 和 Implementer 在同一会话,导致"自己验证自己"的盲区。AI 不能给自己的代码打分。

原则三:范围越小,信任越高。 Dependency Sweeper 只做补丁更新(范围极小)→ 可以直接 L2。CI Sweeper 要诊断任意 CI 失败(范围极大)→ 必须从 L1 开始。这不是双标,是风险与范围的匹配。设计模式时,先问"这个 Loop 的 blast radius 有多大",再决定自主级别。

原则四:事件驱动优于定时轮询------但有前提。 Issue Triage 用 Webhook 触发(事件驱动),比定时扫描更及时且更省 token。但 CI Sweeper 的事故正是因为定时轮询 (loop 5m) 在错误的时间反复触发。事件驱动的前提是:你明确知道"什么事件值得响应"。如果不确定,先用定时 + L1 观察。

原则五:每个模式都要回答"什么时候升级给人类"。 这不是"如果出问题了怎么办"的兜底方案,而是模式设计的核心约束。PR Babysitter 的升级条件是"情况模糊或高风险",CI Sweeper 是"3 次尝试失败",Dependency Sweeper 是"主版本或黑名单包"。没有明确定义升级条件的 Loop,不是一个完整的 Loop。

六、示例代码(LangChain)

下面用 LangChain 生态来实现 Loop Engineering 的核心模式。LangChain 提供了从基础 Agent Loop 到事件驱动、验证循环、爬山循环的完整原语,让我们可以直接在框架层面构建 Loop,而不需要从零写调度器和状态管理。

6.1 项目结构

perl 复制代码
my-loop-project/
├── agent.py                # Agent 定义与配置
├── tools/
│   ├── github_tools.py     # GitHub PR/Issue 工具
│   └── ci_tools.py         # CI 状态查询工具
├── skills/
│   ├── triage.md           # 分诊 Skill(Markdown 格式)
│   └── minimal_fix.md      # 最小修复 Skill
├── middleware/
│   └── rubric.py           # 验证评分标准
├── deployment.py           # 事件驱动部署配置
└── engine_config.py        # 爬山循环(Engine)配置

6.2 Loop 1:Agent 循环 ------ create_agent

最基础的 Agent Loop:模型 + 工具 + 系统提示词。

ini 复制代码
# agent.py
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model

# 初始化模型
model = init_chat_model("claude-sonnet-4-20250514")

# 定义工具
from tools.github_tools import (
    list_open_prs, get_pr_details, create_pr, add_pr_comment,
    get_ci_status, get_recent_commits
)

# 创建 Agent ------ 这就是 Loop 1
agent = create_agent(
    model=model,
    tools=[
        list_open_prs,      # 列出开放 PR
        get_pr_details,     # 获取 PR 详情
        get_ci_status,      # 查询 CI 状态
        get_recent_commits, # 获取最近提交
        create_pr,          # 创建 PR
        add_pr_comment,     # 添加 PR 评论
    ],
    system_prompt="""你是一个 PR 保姆 Agent。
每天早上检查所有开放 PR 的状态:
1. 如果 CI 失败,分析原因并提出修复建议
2. 如果有未回复的审查评论,生成最小补丁
3. 如果一切就绪,标记为 ready-to-merge
4. 如果情况模糊或高风险,升级给人类
"""
)

# 单次调用
result = agent.invoke({
    "messages": [{"role": "user", "content": "检查所有开放 PR 的状态"}]
})

6.3 Loop 2:验证循环 ------ RubricMiddleware

在 Agent Loop 外面包一层验证:产出 → 评分 → 不合格就带反馈重试。

ini 复制代码
# middleware/rubric.py
from deepagents.middleware import RubricMiddleware

# 定义评分标准
pr_review_rubric = RubricMiddleware(
    rubric="""
    对 Agent 的每次 PR 修复产出,按以下标准评分(每项 0-10 分):

    1. 正确性(权重 40%):修复是否真正解决了 CI 失败或审查意见?
       - 10 分:修复精确针对问题,不引入新错误
       - 0 分:修复与问题无关,或引入了新问题

    2. 最小性(权重 30%):diff 是否尽可能小?
       - 10 分:只改了必要的行,无无关变更
       - 0 分:重构了无关模块,或改了超过 10 个文件

    3. 安全性(权重 30%):是否触及了黑名单路径?
       - 10 分:未触及 auth/、payments/、secrets/ 等敏感路径
       - 0 分:触及了黑名单路径 → 立即升级

    总分低于 7 分 → 带反馈重试
    触及黑名单 → 不重试,直接升级给人类
    """,
    max_retries=3,  # 最多重试 3 次
    on_max_retries="escalate"# 超过重试次数后升级
)

# 将验证中间件挂载到 Agent
agent_with_verification = create_agent(
    model=model,
    tools=[list_open_prs, get_pr_details, get_ci_status,
           create_pr, add_pr_comment, get_recent_commits],
    middleware=[pr_review_rubric],
    system_prompt="你是一个 PR 保姆 Agent..."
)

6.4 Loop 3:事件驱动循环 ------ LangSmith Deployment

把 Agent 部署为持续运行的后台服务,通过 cron 或 webhook 触发。

ini 复制代码
# deployment.py
from langsmith import deployment

# 部署 Agent,配置触发方式
deployment.serve(
    agent=agent_with_verification,
    name="pr-babysitter",
    triggers=[
        # Cron 触发:每 15 分钟检查一次 PR 状态
        deployment.CronTrigger(
            schedule="*/15 * * * *",
            input_template="检查所有开放 PR 的状态"
        ),
        # Webhook 触发:当有新 PR 或 CI 状态变更时立即响应
        deployment.WebhookTrigger(
            source="github",
            events=["pull_request.opened", "check_run.completed"]
        ),
    ],
    # 运行时配置
    runtime={
        "max_concurrency": 3,       # 最多 3 个并发运行
        "timeout_seconds": 600,     # 单次运行超时 10 分钟
        "error_policy": "escalate", # 出错时升级给人类
    }
)

6.5 Loop 4:爬山循环 ------ LangSmith Engine

分析生产 Trace,自动改进 Harness 配置。

ini 复制代码
# engine_config.py
from langsmith import Engine

# Engine 持续分析 Agent 运行 Trace,自动改进
engine = Engine(
    agent=agent_with_verification,
    analysis_prompt="""
    分析最近 100 次 Agent 运行的 Trace,找出改进点:

    1. Prompt 问题:
       - 哪些系统提示词导致了低质量输出?
       - Agent 是否经常误解某些指令?

    2. 工具问题:
       - 哪些工具调用经常失败或超时?
       - 工具描述是否准确?

    3. Grader 问题:
       - 评分标准是否过于宽松/严格?
       - 是否有"通过验证但实际有问题"的案例?

    4. 模式问题:
       - 哪些类型的 PR 修复成功率最低?
       - 是否有反复出现的失败模式?

    对每个发现的问题,提出具体的改进建议。
    """,
    auto_improve=True,  # 自动应用非破坏性改进
    improvement_policy={
        "prompt_tweaks": "auto",       # prompt 微调自动应用
        "tool_config": "auto",         # 工具配置自动应用
        "rubric_changes": "review",    # 评分标准变更需人工审查
        "model_switch": "review",      # 模型切换需人工审查
    },
    schedule="0 2 * * 1",  # 每周一凌晨 2 点运行分析
)

# 启动 Engine 监控
engine.monitor()

6.6 Human-in-the-Loop:人工介入点

LangChain 将 Human-in-the-Loop 作为一等公民,在每一层 Loop 都可以插入人工审查:

ini 复制代码
from langchain.agents import create_agent
from deepagents.middleware import HumanInTheLoopMiddleware

agent_with_human = create_agent(
    model=model,
    tools=[create_pr, add_pr_comment, merge_pr],
    middleware=[
        # 在敏感操作前要求人工确认
        HumanInTheLoopMiddleware(
            require_approval_for=[
                "merge_pr",           # 合并 PR 必须人工确认
                "create_pr",         # 创建 PR 前人工确认(可选)
            ],
            auto_approve_for=[
                "add_pr_comment",    # 添加评论自动通过
            ],
            approval_timeout_hours=24,  # 24 小时未响应则自动拒绝
        ),
        pr_review_rubric,
    ],
    system_prompt="你是一个 PR 保姆 Agent..."
)

6.7 完整示例:Daily Triage Loop

将以上组件组装成一个完整的 Daily Triage Loop:

ini 复制代码
# daily_triage.py ------ 完整的 Daily Triage Loop
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from deepagents.middleware import RubricMiddleware
from langsmith import deployment

model = init_chat_model("claude-sonnet-4-20250514")

# 分诊 Agent:只读、只报告、不修改
triage_agent = create_agent(
    model=model,
    tools=[
        get_ci_status,
        list_open_prs,
        get_recent_commits,
        list_open_issues,
    ],
    system_prompt="""你是 Daily Triage Agent。
每天早上扫描项目状态:
1. 检查 CI 状态(过去 24 小时的失败)
2. 列出所有开放 PR 及其状态
3. 检查是否有过期依赖
4. 将发现写入 STATE.md

规则:
- 只报告,不自动执行任何操作
- 高优先级项目标记为需要人工关注
- 已解决的项目从 STATE.md 中清理
""",
    middleware=[
        RubricMiddleware(
            rubric="""
            分诊结果必须:
            1. 每个发现都有明确的优先级(high/medium/low)
            2. 每个发现都有建议的下一步行动
            3. 不遗漏任何 CI 失败或超过 3 天未活动的 PR
            """,
            max_retries=2
        )
    ]
)

# 部署为每天早上 9 点运行
deployment.serve(
    agent=triage_agent,
    name="daily-triage",
    triggers=[
        deployment.CronTrigger(
            schedule="0 9 * * 1-5",  # 工作日早上 9 点
            input_template="执行每日分诊,扫描 CI、PR、Issues 和依赖状态"
        )
    ]
)

七、Loop Engineering 进阶

7.1 成本管理

Token 成本是 Loop Engineering 最现实的约束。一个设计不当的 Loop 可能在一天内烧掉数百万 token。

成本估算公式

scss 复制代码
每日 Token ≈ 每次运行 Token × 每天运行次数 × (1 + 子 Agent 倍数)
因素 影响
节奏(Cadence) 线性乘数(5 分钟 vs 1 天 = 288× 运行次数/天)
每次运行的子 Agent 数 每个 = 完整模型 + 工具往返
上下文大小 大型仓库 + 完整 CI 日志 = 昂贵的分诊
Verifier 模型 Verifier 上使用更强的模型 = 值得(无人值守时)

成本控制最佳实践

分诊先行: 先用廉价的分诊扫描(~5k token),只有发现可操作项目时才启动子 AgentEarly Exit: 监控列表为空时在 ~3-5k token 内退出预算上限: loop-budget.md 设置每日 token 上限,超限自动暂停熔断器: 同一项目超过 3 次尝试自动升级,防止无限修复循环非高峰降速: 夜间和周末使用更慢的节奏

减速 / 暂停 / 杀死:三档应急标准

成本控制不只是"省钱"------当 Loop 行为异常时,你需要明确的应急标准。以下是生产级 Loop 的三档响应:

档位 触发条件 执行动作 恢复方式
🟡 减速 单次运行 token 超预算 50%,或连续 2 次运行无进展 节奏降为原来的 1/2,切换到更便宜的模型做分诊 下一轮运行恢复正常即自动升速
🟠 暂停 日 token 达到预算 80%,或loop-pause-all 被激活 当前轮完成后退出,调度器标记为 paused 人工执行loop-resume 恢复
🔴 杀死 日 token 达到预算 100%,或检测到危险路径修改 立即终止当前运行,不等待完成 人工根因分析后重新从 L0 开始

loop-pause-all 是全局紧急开关 ------执行后所有 Loop 在当前轮结束后立即退出。它不是"建议暂停",而是硬性终止。配合 loop-constraints.md 中的 If loop-pause-all is active, exit immediately 规则,确保即使调度器来不及取消,Loop 自身也会主动退出。

7.2 状态同步

当多个 Loop 或人类同时修改状态时,会出现漂移。Codex CLI 的 state 子命令可以检测 STATE.mdLOOP.md 之间的不一致:

perl 复制代码
# 检查状态一致性
codex state diff --state STATE.md --loop LOOP.md

# 自动修复可安全合并的冲突
codex state sync --state STATE.md --loop LOOP.md --auto-resolve

状态设计原则:

  • 一个模式一个状态文件,或清晰分隔的区域
  • 每次运行必须清理已关闭/已合并的项目
  • 人类覆盖必须记录在状态中
  • 状态文件是 Loop 最重要的产物------它应该是团队可以不读聊天日志就能理解的

7.3 上下文管理(loop-context)

Codex CLI 内置了状态化记忆管理和长运行熔断器,通过 context 子命令实现:

perl 复制代码
# 注入历史状态到当前运行上下文
codex context inject --state STATE.md --since "24h"

# 修剪过时条目,防止状态文件无限增长
codex context prune --state STATE.md --older-than "7d"

# 检测同一失败的重复尝试,触发升级
codex context guard --state STATE.md --max-retries 3

它解决三个问题:

1. 上下文注入: 在每次运行开始时注入相关的历史状态2. 上下文修剪: 清理过时条目,防止状态文件无限增长3. 熔断器: 检测同一失败的重复尝试,触发升级

7.4 Worktree 管理(loop-worktree)

Codex CLI 通过 worktree 子命令管理每次修复尝试的隔离 git worktree:

css 复制代码
# 创建隔离 worktree
codex worktree create --run-id <id> --pattern <p>

# 锁定路径(防止多 Loop 冲突)
codex worktree lock --paths <globs> --owner <pattern>

# 解锁
codex worktree unlock --owner <pattern>

# 清理已完成或已放弃的 worktree
codex worktree cleanup --older-than "1h"

关键原则: 一次尝试一个 worktree,在 manifest 中跟踪,拒绝或升级时清理。

7.5 Goal Engineering(目标工程)

Goal Engineering 是 Loop Engineering 的伴侣概念。如果说 Loop 负责"发现和持续",Goal 负责"聚焦和完成":

Loops discover, goals finish.

Goal 是一个可验证的停止条件------Agent 持续迭代直到条件满足:

csharp 复制代码
/goal All tests on main pass and lint is clean
/goal Keep working on this PR until CI is green and no blocking comments remain

Goal 使用新鲜模型来判断停止条件是否满足------这是 Maker/Checker 思想的另一种应用。

7.6 Loop-Gate(循环闸门)

Codex CLI 的 gate 子命令从 gate.yaml 机械执行路径黑名单和自动合并允许列表:

scss 复制代码
# 检查是否可以自动合并
codex gate check --action auto-merge --paths <f1,f2,...>

# 检查路径是否在黑名单中
codex gate check --action deny --paths <f1,f2,...>

退出码约定:

  • 0 --- 通过,可以继续
  • 2 --- 升级给人类

这与 codex context guard 使用相同的约定,因此控制脚本可以链式调用两者。

Loop Constraints(约束机制)

loop-constraints.md 是比 gate.yaml 更高层的安全机制------它是自然语言编写的硬性规则 ,Loop 在每次运行开始时逐字读取并遵守。与 gate.yaml 的机械路径检查互补,loop-constraints 覆盖的是"意图层面"的约束。

典型的 loop-constraints.md 包含五个维度的规则:

维度 示例规则 为什么需要
Push & Merge 永远不自动合并到 main;先创建草稿 PR 防止未经审查的代码进入主干
Paths 永不编辑 .env、auth/、payments/、secrets/ 保护敏感配置和凭据
Code 每次修复前先跑测试;永不禁用测试来让 CI 变绿;每次运行最多 3 次尝试 防止虚假修复和无限循环
Communication 做之前先告诉我;未经批准不关闭 Issue/PR 保持人类对关键决策的控制权
Budget token 达到 80% 日上限时切换为只报告;loop-pause-all 激活时立即退出 成本兜底

约束是绑定的(binding) ------Agent 必须遵守。它们不像系统提示词那样可以被"灵活理解",而是作为硬性检查写入 Loop 的运行流程。配合 Codex CLI 的 context guard 机械执行(记录每次尝试到 loop-ledger.json,重试前运行 codex context guard --check),约束从"建议"变成了"不可绕过的护栏"。

7.7 多 Loop 协调

在一个仓库中运行多个 Loop 是正常的。没有边界地运行它们就是 Loop 互相打架的方式。

核心原则

1. 一个分支一个所有者 ------ 每小时最多一个 Loop 可以修改一个分支

2. 分离状态文件 ------ STATE.md 用于分诊;模式特定文件用于操作 Loop

3. 分诊报告,操作 Loop 执行 ------ L1 的 Daily Triage 从不与 CI Sweeper 修复竞争

4. 共享黑名单 ------ 将相同的路径黑名单复制到每个 LOOP.md

5. 聚合 token 预算 ------ 所有 Loop 共享一个预算上限

冲突优先级

7.8 必须正视的三笔"债"

Intent Debt(意图债)

每个 session Agent 都是"冷启动"。团队约定、构建命令、"我们从不那样做"------若不写进 Skills /AGENTS.md,每轮 loop 都在重新猜。Skills 是偿还意图债的方式。

Comprehension Debt(理解债)

Loop 越快,仓库里"你写过但没读过"的代码越多。Loop 交付了,不代表你理解了。更快的 Loop 运送更多你没写过的代码------理解债增长,除非你阅读 Loop 做了什么。

Cognitive Surrender(认知投降)

最危险的用法:把 Loop 当成逃避思考的按钮。Addy Osmani 警告:

Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go.

同一个 Loop 设计,可以加速真工程师,也可以加速"只会按 Go 的人"------区别在你有没有把判断力编码进 Skills 和 Verifier。

7.9 十大常见失败模式

1. 无限修复循环: 同一 PR 被自动修复 5+ 次,永不收敛。缓解:硬上限 3 次 → 升级给人

2. 状态腐烂: STATE.md 引用已合并的 PR、已关闭的工单。缓解:每次运行清理

3. Verifier 表演: Verifier "批准"但 CI 测试失败。缓解:Verifier 必须运行测试并报告输出

4. 通知疲劳: 每 5 分钟 ping 一次;团队静音机器人。缓解:仅在需要人类决策时通知

5. Token 燃烧: 账单飙升;Loop 在空或嘈杂的分诊上运行完整子 Agent 链。缓解:廉价分诊先行

6. 越界: Loop 重构无关模块。缓解:路径黑名单 + "最小可能 diff"

7. 理解债螺旋: 速度上升,但没人能解释最近的变更。缓解:非平凡 PR 强制人类审查

8. 认知投降: "Loop 会处理"------对正确性或设计没有意见。缓解:每个模式中明确的人工闸门

9. 并行冲突: 两个子 Agent 编辑相同文件。缓解:worktree 隔离 + 状态锁

10. 升级失败: Loop 卡在重试中;人类从未被通知。缓解:连接器在升级时 ping

八、与未来展望

趋势一:从"写代码"到"设计系统"

工程师的角色正在从"代码生产者"转变为"系统设计者"。未来的高级工程师不是写得最多的人,而是设计出最好的 Loop 系统的人。Boris Cherny 的实践已经证明了这一点------他同时管理 15+ 个并行 Agent 实例,专注于代码审查和方向把控。

趋势二:Loop 即代码(Loop as Code)

就像 Infrastructure as Code 改变了运维,Loop as Code 将改变软件开发。Loop 配置(LOOP.md、gate.yaml、loop-constraints.md)将成为项目的标准组成部分,就像 CI 配置一样。

趋势三:多 Agent 编排标准化

MCP(Model Context Protocol)正在成为 Agent 间通信的通用基板。未来,不同厂商的 Agent 将能够通过标准化协议协作------一个 Claude Code Agent 做分诊,一个 Codex Agent 做修复,一个 Gemini Agent 做验证。

趋势四:Goal Engineering 与 Loop Engineering 融合

Loop 负责"发现和持续",Goal 负责"聚焦和完成"。两者的融合将产生更强大的自主开发系统------Loop 发现需要做的事情,Goal 确保每件事做到位。

趋势五:安全与治理成为一等公民

随着 Loop 从 L1 走向 L3,安全机制将从"最佳实践"变为"硬性要求"。路径黑名单、自动合并允许列表、MCP 权限最小化、人工闸门------这些将成为任何生产 Loop 的标配。

趋势六:成本优化自动化

未来的 Loop 系统将内置智能成本管理------根据预算自动调整节奏、在低价值任务上使用更便宜的模型、在关键验证上使用更强的模型。Token 预算将从静态配置变为动态优化。

趋势七:从个人工具到团队基础设施

Loop Engineering 目前主要是个人实践(Boris 的 15 个并行 Agent),但正在快速演变为团队基础设施。共享的 Skills 库、团队级状态看板、跨项目的 Loop 模式------这些将成为工程组织的标准配置。

参考

  1. addyosmani.com/blog/loop-e...
  2. www.langchain.com/blog/the-ar...
  3. www.oreilly.com/radar/loop-...
  4. github.com/alchaincyf/...
  5. github.com/cobusgreyli...
相关推荐
To_OC13 小时前
再也不用手动整理会议纪要!我给 Claude 封装了一套永久自动化 Skill
人工智能·agent·claude
付玉祥14 小时前
多 Agent 协作:从委派到受限执行
agent
用户77833661321115 小时前
SERP API + Claude function calling:从 tool use 到 agent 的完整实现
agent
新知图书16 小时前
工作流编排
人工智能·agent·ai agent·智能体·扣子
不能只会打代码18 小时前
Day 006 — Multi-Agent + MCP/A2A + 安全 + 可观测性
agent·token·sse·multi-agent·mcp·a2a
小月土星19 小时前
(实战篇)RAG-demo 深度解析:162行代码中的检索增强生成全景 (含Top-k法)
javascript·数据库·llm
新知图书19 小时前
测试与发布(新闻早报智能体开发)
人工智能·agent·ai agent·智能体·扣子
武子康19 小时前
OpenAI 为什么需要 FDE:模型公司正在变成交付公司
人工智能·llm·openai
Flandern111120 小时前
从“能跑”到“可运营”:Agent Harness 工程化建设指南
学习·agent·claudecode·harness