AI 工程方法论

Loop Engineering:从提示词走向可运营的 Agent 循环

基于 Addy Osmani 的 loop engineering 文章、Agent Harness Engineering、Anthropic 长运行 agent / effective agents 文章、cobusgreyling/loop-engineering 实践仓库,以及 loop-engineering-orange-book 整理。

发布时间:2026-06-21 主题:Agent Engineering 结论:Loop 位于 Harness 之上
总览:Loop engineering 不是“写一个更长的 prompt”,而是把人原来反复做的发现、分派、检查、记忆、预算控制和升级交给一个可审计的外部循环系统。Harness engineering 解决单次 agent run 如何可靠执行;loop engineering 解决跨时间、跨任务、跨多次运行如何持续发现、推进、验证和交接。真正的工程价值不在“循环调用模型”,而在把循环做成有状态、有成本边界、有验证者、有停机条件的运营系统。
Loop Engineering 运营闭环 信号进入循环,经过状态读取、归类、分派、验证、记录和升级,形成下一轮输入。 Loop Engineering = 可运营的外部控制循环 信号输入 CI / PR / Issue 读取状态 STATE / run log 归类 triage skill 分派 agent / worktree 验证 checker / tests 记录结果 状态、失败原因、预算 升级给人 高风险 / 歧义 / 超预算 关键:循环不是无限重试,而是每一轮都有输入、状态、验证、预算、停机条件和人类交接。
图 1:Loop engineering 把 agent 从“一次聊天”变成“可运行、可记录、可升级”的后台运营流程。

核心判断

1. Loop 是运营层,不是模型能力层

它关注的是系统如何定时或被事件触发,如何读取状态、调用技能、分派子代理、验证结果、记录进度,并在不确定时交给人。

2. Harness 是内层运行环境

Harness 包括 prompt、tools、context policy、sandbox、hooks、subagents、observability。它让一次 agent run 更可靠。

3. Loop 必须建立在 Harness 之上

没有可靠 harness,loop 只是把不可靠行为重复更多次;没有 loop,harness 只能改善单次任务,无法形成持续运营。

4. 第一个 loop 应该 report-only

先让系统发现、整理和记录,不自动改代码。等信号质量稳定,再逐步开放低风险动作。

概念定义

Loop engineering 可以定义为:为 AI agent 设计一个可重复运行的外部控制循环,使它能够按固定节奏或事件触发发现任务、读取上下文、调用技能、分派子代理、隔离执行、验证结果、更新状态,并在高风险或不确定时交还给人。

发现定时或事件触发,扫描 CI、PR、issue、数据源、日志、消息和外部信号。
归类调用 triage skill,把信号分成噪音、建议、待行动和需要人判断的事项。
分派为可行动项开 worktree,交给实现 agent、研究 agent、测试 agent 或专门技能。
验证由独立 checker 运行测试、审查 diff、核对证据、判断是否满足停止条件。
记录把尝试、结果、失败原因、下次动作和人类决策写入外部 state。
升级遇到高风险、歧义、多次失败或预算超限时,带上下文交给人。

这套流程里最关键的不是“循环”两个字,而是循环外部的工程约束:状态文件、预算、权限、停止条件、回滚路径、观察指标和人类交接规则。

Loop、Harness、Model 的层级关系 模型位于最内层,Harness 管理一次运行,Loop 管理跨时间运营,人类治理包在最外层。 Loop 位于 Harness 之上,Governance 位于 Loop 之外 Human Governance 目标、风险边界、预算、发布 gate、kill switch Loop Engineering 调度、状态、队列、验证、运行日志、升级 Harness Engineering prompt / tools / sandbox / hooks Model 越往外,越关注组织责任;越往内,越关注一次推理和一次工具调用。
图 2:Harness 让单次 agent run 更可靠;Loop 把多次 run 组织成可持续运营;治理层决定哪些动作可以自动化。

为什么现在流行

工具原语成熟

调度、skills、MCP connector、subagent、worktree 这些能力已经从自建脚本变成主流 agent 工具的内置能力。工程师开始能把 agent 从“一次聊天”变成“周期性后台流程”。

单次 prompt 的边际收益下降

复杂工程任务的问题不只是模型听不懂,而是它需要跨多个运行窗口保持上下文、处理失败、避免重复劳动、控制成本并知道何时停止。单次 prompt 很难承担这些运营职责。

长任务暴露记忆断层

Anthropic 的长运行 agent 经验强调,多窗口任务会遇到“每个新 session 都像新人接班”的问题。Loop 的 state/memory 机制就是为了解决跨运行交接。

团队开始关心运营指标

当 agent 从玩具变成团队工具,问题从“能不能生成代码”变成“能否降低响应时间、减少人类扫尾、稳定处理重复流程”。这天然需要 loop,而不是更多聊天。

与 Harness Engineering 的区别

维度 Harness Engineering Loop Engineering
关注层级 单个 agent run 的上下文、工具、沙箱、提示、hook、观察性。 跨运行、跨时间、跨任务的发现、分派、验证、记忆和升级。
核心问题 怎样让这个 agent 在这次任务中不迷路、不误操作? 怎样让系统每天/每小时自己发现该做什么,并可靠推进?
典型产物 AGENTS.md、skill、工具描述、沙箱规则、hook、测试命令。 STATE.md、调度器、run log、budget、watchlist、handoff inbox。
失败模式 工具危险、上下文不够、prompt 不清、验证缺失。 重复修错、状态漂移、通知疲劳、成本失控、无人确认却自动行动。

一句话:Harness 是给 agent 配工具、护栏和验收标准;loop 是设计班次、工单流、质检、交接记录和升级机制。

Harness 与 Loop 的职责边界 Harness 面向一次运行,Loop 面向跨运行任务流。 职责边界:一次执行 vs 多轮运营 Harness Engineering 输入:一个明确任务 控制:上下文、工具、沙箱、测试 输出:一次 run 的结果与证据 典型问题:这次 agent 会不会乱改? Loop Engineering 输入:持续信号与任务队列 控制:状态、预算、验证、升级 输出:下一轮动作与人类交接 典型问题:系统该不该继续推进? 多次调用 Harness 的失败会被 Loop 放大;Loop 的失败会把成本、噪音和风险放大。
图 3:如果 Harness 不可靠,Loop 只是重复制造问题;如果只有 Harness,没有 Loop,就只能改善单次任务。

工程实践

1. 从 report-only 开始

第一个 loop 不要自动改代码。最稳妥的起点是 Daily Triage:每天或每 2 小时读取 CI、issue、PR、近期 commit、项目状态,输出优先级清单,写入 STATE.md。运行一周后,对比它与人工判断的差异,再决定是否放开行动权限。

2. 把任务写成 skill,而不是写成长 prompt

Loop 的 prompt 应该短,真正的项目规则放在 skill 里。例如 loop-triage 规定如何读 CI、如何判定优先级、输出格式是什么;minimal-fix 规定小修复边界。

3. 会写文件的 loop 应该使用 worktree

并行 agent 最常见的灾难是互相覆盖文件。worktree 把不同 agent 的改动隔离在不同 checkout 里,让并行探索从机械上可控。

4. Maker 与 Checker 必须分离

写代码的 agent 不应该给自己判定“已完成”。至少需要一个独立 verifier:检查 diff 是否只改目标范围、测试是否真的跑过、有没有安全/权限/依赖风险。

5. 状态文件是 loop 的脊柱

每次运行都要先读状态,结束时写状态。最低限度记录:上次运行时间、发现项、行动项、尝试次数、失败原因、等待人类决策的事项、已关闭事项。

6. 预算和停止条件写进系统

高频 loop 很容易烧 token。PR babysitter 或 CI sweeper 每 5 分钟跑一次,如果没有 early exit、预算上限和最大尝试次数,会迅速变成成本黑洞。

GitHub 仓库拆解

cobusgreyling/loop-engineering 的价值不只是整理概念,它更像一个“loop engineering 参考实现”:用文档定义方法论,用 patterns 把方法论产品化,用 starters 降低采用门槛,用 skills 固化执行规则,用 CLI 工具做评分、成本估算和脚手架,再用 GitHub Actions 在仓库自己身上运行这些规则。

loop-engineering 仓库结构图 文档、模式、starter、skill、工具和 GitHub Actions 构成参考实现。 参考实现:从方法论到可运行 loop docs 原语 / 安全 / 清单 patterns daily triage 等模式 starters 最小可运行结构 skills triage / verify / budget tools init / audit / cost Actions 定时运行与验证 State run log / budget 读法:docs 解释原则,patterns 固化模式,starters 让你复制起步,skills 约束执行,tools 做检查,Actions 负责周期运行。
图 4:这个仓库的价值在于把“loop engineering”拆成可复制的材料链,而不是只写一篇概念文。
层级 仓库里的对应物 工程含义
概念层 docs/primitives.mddocs/loop-design-checklist.mddocs/safety.mddocs/operating-loops.md 把 loop 拆成调度、状态、技能、验证、预算、升级等原语,避免大家把它误解成“定时 prompt”。
模式层 patterns/*.mdpatterns/registry.yaml 把常见 loop 做成可选模式,例如 daily triage、PR babysitter、CI sweeper、dependency sweeper。registry.yaml 让模式可以被工具读取。
脚手架层 starters/*templates/* 把“我想试试”变成“复制一套最小可运行结构”。每个 starter 通常包含 LOOP.md、state 示例、预算和运行日志模板。
技能层 skills/loop-triageloop-verifierloop-budgetminimal-fix 把执行纪律写进可复用 skill:如何 triage、如何验收、如何控制预算、如何限制小修复边界。
工具层 tools/loop-initloop-auditloop-cost 把方法论变成可运行命令:初始化 loop、检查成熟度、估算 token 成本。
运行层 LOOP.mdSTATE.mdloop-budget.mdloop-run-log.md.github/workflows/* 仓库自己 dogfood:记录活跃 loop、预算、状态、运行历史,并用 CI 做 registry/audit 验证。

1. LOOP.md 是运营合同,不是普通 README

它列出当前活跃 loop:Daily Triage 是 L1 report-only,PR Babysitter 是 L2 assisted,Dependency Sweeper 是 L2 patch-only,Changelog Drafter 是 L1 draft-only。每个 loop 都有 cadence、状态文件、技能、允许动作和人类交接规则。这相当于把“自动化可以做什么、不能做什么、什么时候升级”写成仓库级合同。

2. loop-audit 把“成熟度”变成可检查信号

这个 CLI 会给项目打 0-100 的 Loop Readiness 分数,检查是否有 state file、triage skill、verifier、LOOP.mdAGENTS.md、safety docs、GitHub workflow、MCP/connectors、worktree evidence、registry、budget、run log 和真实活动证据。最重要的是 L3 不是“文件齐了就行”,还要求 verifier、状态、成本可观测性和 proven loop activity。

3. loop-cost 把 token 成本放到设计阶段

高频 loop 最大的问题不是写不出来,而是运行成本被 cadence 线性放大。仓库里的 cost model 区分 no-op、full triage、action every run 和 realistic blend。比如 CI sweeper、PR babysitter 这类 5-15 分钟级 loop,如果没有 early exit 和预算上限,很容易从“自动化助手”变成成本黑洞。

4. loop-init 解决采用门槛,但也暴露模板化风险

它可以按 pattern 和工具生成 starter,例如 daily-triage、pr-babysitter、ci-sweeper,并支持 Grok、Claude、Codex 等不同运行环境。好处是团队能快速起步;风险是容易 cargo cult:文件都复制了,但没有结合本项目修改 allowlist、denylist、状态字段、预算和验收标准。

5. Skills 是执行纪律的载体

loop-triage 要求只输出今天工程师真正该关心的高优先级事项;loop-verifier 默认从怀疑出发,要求检查 scope、测试、diff 和风险;loop-budget 在运行前检查预算和 kill switch,在结束时记录 run log;minimal-fix 限制 agent 只解决一个明确问题。这些 skill 把“经验丰富的工程师会怎么做”沉淀成可重复约束。

6. GitHub Actions 的 dogfood 很关键,但它不是魔法自治

daily-triage.yml 会更新状态、追加 run log、跑 validate/audit gates,并通过 PR 形式写回仓库。这个设计很实际:先用确定性 CI 和脚本承载 loop 外壳,再逐步加入 agent 能力。它说明 loop engineering 的第一步不是追求完全自主,而是把后台运行、状态变更、验证和人类 review 通路先搭起来。

仓库优点与不足

优点:方法论有可执行物

不是只讲概念,而是提供 starter、skill、registry、CLI 和 workflow。读完可以直接在项目里试一个 L1 loop。

优点:治理意识强

预算、运行日志、kill switch、human gate、denylist、maker/checker 分离都是默认一等公民。

优点:从 L1 到 L3 有梯度

先 report-only,再 assisted,再 unattended-capable,符合真实团队采用自动化的信任曲线。

不足:评分不等于业务价值

loop-audit 能检查结构完整性,但不能证明 loop 真能减少人工负担、降低故障时间或提高交付质量。

不足:安全多数仍是策略层

文档和 denylist 很重要,但更强的生产级方案还需要权限隔离、沙箱、密钥边界、审计日志和回滚机制配合。

不足:非代码场景样例还少

仓库以工程仓库维护为主。研究、投研、内容分析、知识库维护这类 loop,需要再抽象 object type、证据标准和发布 gate。

我的判断:这个仓库目前最适合当“loop 工程化检查表 + starter kit”,不应该直接当生产系统照搬。真正落地时,要把它的结构迁移到自己的工作流:明确数据源、状态字段、预算、动作边界、验收人和发布规则。

工程价值

响应速度

CI 红了、PR 卡住、issue 噪音增加时,不再等人主动巡检。

质量控制

Maker/checker 分离让验证成为流程,而不是事后补救。

组织记忆

state、run log、skills 把隐性经验变成可读资产。

并行吞吐

worktree + subagent 让探索、实现、验证可以并行,但仍受 review 边界约束。

运营化

Agent 不再只是“问一下”,而是团队工程系统中的 watcher、triager、drafter、sweeper。

治理

权限、记录、升级和停止条件显式化,自动化行为可以被审计。

风险与反模式

反模式 表现 治理方式
Prompt cron只把长 prompt 放进定时器,没有 state、预算、验证。补齐 state、run log、skill、early exit。
自我验收同一个 agent 写代码并宣布完成。独立 verifier;必要时更强模型或人工 gate。
无限修复循环同一个 PR/CI 失败被反复修改,越修越乱。最大尝试次数;三次失败自动升级给人。
通知疲劳每次运行都 ping 人,导致人忽略真正信号。只在需要决策、超预算或高风险时通知。
理解债务loop 产出越来越多,人越来越不理解系统。定期读 diff、写决策记录、限制自动改动范围。

落地建议

Loop Engineering L0 到 L3 落地路径 从设计草案,到报告型,再到协助型,最后到半无人值守。 采用路径:先建立信任,再开放动作 L0 草案 定义目的与边界 只写设计文档 L1 报告型 发现与整理信号 不改业务代码 L2 协助型 起草 PR / 小修复 人类确认合并 L3 半无人值守 allowlist 内自动动作 审计 / 回滚 / kill switch 不要跳级:L1 的信号质量、L2 的返工率、L3 的事故率,决定下一步能不能放权。
图 5:Loop 的成熟度不是“越自动越好”,而是在人类信任、验证证据和回滚能力足够后逐步放权。
阶段 目标 允许动作 退出条件
L0 草案定义 loop 目的、范围、非目标。只写设计文档。有 owner、cadence、数据源、状态格式。
L1 报告型自动发现和整理信号。写报告、更新 state,不改业务代码。连续一周信号质量稳定,噪音可控。
L2 协助型处理低风险小动作。开 worktree、起草 PR、补测试、修格式。验证通过率高,人工返工率低。
L3 半无人值守在 allowlist 内持续运行。有限自动提交、自动评论、自动关单。有预算、日志、审计、回滚和 kill switch。

推荐第一个 loop:Daily Research Triage

每天从指定来源发现高价值 AI engineering / agent engineering 信号,写入 research-triage-state.md:候选主题、证据链接、对象类型、优先级、建议动作。L1 阶段只整理,不自动发布;发布需要人确认。

组件 建议设计 原因
输入源Follow/RSS、GitHub trending、用户丢来的 URL、OpenClaw memory、已有报告索引。先覆盖高信号入口,不追求全网爬取。
对象类型博客文章、GitHub 仓库、技术点、论文/标准、产品发布、争议话题。不同对象不能用同一套分析模板,否则会变浅。
分析模板博客看论点链路;仓库看架构、文件结构、工具链、维护活跃度;技术点看定义、边界、替代方案和实践路径。深度来自对象适配,而不是加长 prompt。
状态文件research-triage-state.md + research-run-log.md避免重复研究同一话题,保留上次判断和待验证假设。
预算无新高信号来源时 early exit;深研任务单独申请预算。日常 triage 低成本,深研按需启动。
发布 gateL1 只产出候选;L2 可起草 Pages 报告;发布前保留人工确认。研究报告会影响判断,不能把自动发布作为默认动作。

适合 OpenClaw / 个人工作流的三个候选

研究报告 loop

从 Follow、RSS、GitHub、博客里发现候选话题,先做 triage,再由人选题深研。

项目维护 loop

定时检查 Pages 发布、数据抓取、脚本失败、仓库状态,只在异常时提醒。

链接深读 loop

收到博客、GitHub 仓库或技术链接时,自动识别对象类型,选择对应分析模板。

PR/CI 辅助 loop

先只报告红灯和卡点,稳定后再允许小修复和 verifier 审查。

资料来源