Loop Engineering:从提示词到循环系统

文章目录

  • [1 -> 先看结论](#1 -> 先看结论)
  • [2 -> 一张图看懂 Loop Engineering](#2 -> 一张图看懂 Loop Engineering)
  • [3 -> 为什么它会出现](#3 -> 为什么它会出现)
  • [4 -> 它和 Prompt Engineering 的区别](#4 -> 它和 Prompt Engineering 的区别)
  • [5 -> Loop Engineering 的四层结构](#5 -> Loop Engineering 的四层结构)
    • [5.1 -> Agent Loop:让 AI 动手](#5.1 -> Agent Loop:让 AI 动手)
    • [5.2 -> Verification Loop:让结果可证明](#5.2 -> Verification Loop:让结果可证明)
    • [5.3 -> Event Loop:让任务自动触发](#5.3 -> Event Loop:让任务自动触发)
    • [5.4 -> Improvement Loop:让系统越跑越准](#5.4 -> Improvement Loop:让系统越跑越准)
  • [6 -> 一个完整 Loop 的组成部分](#6 -> 一个完整 Loop 的组成部分)
  • [7 -> 真实案例:它不是纯概念](#7 -> 真实案例:它不是纯概念)
    • [7.1 -> RepoMirror:一夜跑出多个迁移项目](#7.1 -> RepoMirror:一夜跑出多个迁移项目)
    • [7.2 -> Ralph Wiggum Loop:简单循环也能产生长期进展](#7.2 -> Ralph Wiggum Loop:简单循环也能产生长期进展)
    • [7.3 -> PR Babysitter:更适合生产环境的形态](#7.3 -> PR Babysitter:更适合生产环境的形态)
  • [8 -> Loop Engineering 的优势](#8 -> Loop Engineering 的优势)
    • [8.1 -> 把一次性工作变成生产线](#8.1 -> 把一次性工作变成生产线)
    • [8.2 -> 把人脑记忆变成外部状态](#8.2 -> 把人脑记忆变成外部状态)
    • [8.3 -> 把「看起来完成」变成「被验证完成」](#8.3 -> 把「看起来完成」变成「被验证完成」)
    • [8.4 -> 支持并行分工](#8.4 -> 支持并行分工)
  • [9 -> Loop Engineering 的风险](#9 -> Loop Engineering 的风险)
    • [9.1 -> Token 和成本失控](#9.1 -> Token 和成本失控)
    • [9.2 -> 错误反馈会让系统越跑越偏](#9.2 -> 错误反馈会让系统越跑越偏)
    • [9.3 -> 自动化会放大风险](#9.3 -> 自动化会放大风险)
    • [9.4 -> 复杂度转移到工程系统](#9.4 -> 复杂度转移到工程系统)
  • [10 -> 适用性矩阵](#10 -> 适用性矩阵)
  • [11 -> 放到 AI 获客项目里怎么用](#11 -> 放到 AI 获客项目里怎么用)
    • [11.1 -> 客户发现 Loop](#11.1 -> 客户发现 Loop)
    • [11.2 -> 客户画像 Loop](#11.2 -> 客户画像 Loop)
    • [11.3 -> 触达准备包 Loop](#11.3 -> 触达准备包 Loop)
    • [11.4 -> 回复分类与归因 Loop](#11.4 -> 回复分类与归因 Loop)
  • [12 -> 推荐落地路线](#12 -> 推荐落地路线)
    • [12.1 -> 第一步:只读报告型 Loop](#12.1 -> 第一步:只读报告型 Loop)
    • [12.2 -> 第二步:客户画像质量 Loop](#12.2 -> 第二步:客户画像质量 Loop)
    • [12.3 -> 第三步:触达准备包草稿 Loop](#12.3 -> 第三步:触达准备包草稿 Loop)
    • [12.4 -> 第四步:回复分类与归因 Loop](#12.4 -> 第四步:回复分类与归因 Loop)
    • [12.5 -> 第五步:小批量半自动执行](#12.5 -> 第五步:小批量半自动执行)
  • [13 -> 最小可行 Loop 模板](#13 -> 最小可行 Loop 模板)
  • [14 -> 最终判断](#14 -> 最终判断)

1 -> 先看结论

Loop engineering 可以理解为:

不再由人一轮一轮手动 prompt AI,而是设计一个会持续提示、执行、观察、校验和改进的系统。

它真正有价值的地方,不是让 AI 更聪明,而是把重复性工作变成可管理的生产线。

适合它的任务通常有四个特征:

  • 重复发生。
  • 有明确输入输出。
  • 有可验证标准。
  • 失败可以停止、回滚或交给人。

不适合它的任务通常是:

  • 开放式战略判断。
  • 缺少验证标准的创意判断。
  • 高风险生产操作。
  • 自动客户触达、自动报价、自动承诺交期库存。

2 -> 一张图看懂 Loop Engineering

#mermaid-svg-F2KRw39PsHvhd8eR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-F2KRw39PsHvhd8eR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-F2KRw39PsHvhd8eR .error-icon{fill:#552222;}#mermaid-svg-F2KRw39PsHvhd8eR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-F2KRw39PsHvhd8eR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-F2KRw39PsHvhd8eR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-F2KRw39PsHvhd8eR .marker.cross{stroke:#333333;}#mermaid-svg-F2KRw39PsHvhd8eR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-F2KRw39PsHvhd8eR p{margin:0;}#mermaid-svg-F2KRw39PsHvhd8eR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-F2KRw39PsHvhd8eR .cluster-label text{fill:#333;}#mermaid-svg-F2KRw39PsHvhd8eR .cluster-label span{color:#333;}#mermaid-svg-F2KRw39PsHvhd8eR .cluster-label span p{background-color:transparent;}#mermaid-svg-F2KRw39PsHvhd8eR .label text,#mermaid-svg-F2KRw39PsHvhd8eR span{fill:#333;color:#333;}#mermaid-svg-F2KRw39PsHvhd8eR .node rect,#mermaid-svg-F2KRw39PsHvhd8eR .node circle,#mermaid-svg-F2KRw39PsHvhd8eR .node ellipse,#mermaid-svg-F2KRw39PsHvhd8eR .node polygon,#mermaid-svg-F2KRw39PsHvhd8eR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-F2KRw39PsHvhd8eR .rough-node .label text,#mermaid-svg-F2KRw39PsHvhd8eR .node .label text,#mermaid-svg-F2KRw39PsHvhd8eR .image-shape .label,#mermaid-svg-F2KRw39PsHvhd8eR .icon-shape .label{text-anchor:middle;}#mermaid-svg-F2KRw39PsHvhd8eR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-F2KRw39PsHvhd8eR .rough-node .label,#mermaid-svg-F2KRw39PsHvhd8eR .node .label,#mermaid-svg-F2KRw39PsHvhd8eR .image-shape .label,#mermaid-svg-F2KRw39PsHvhd8eR .icon-shape .label{text-align:center;}#mermaid-svg-F2KRw39PsHvhd8eR .node.clickable{cursor:pointer;}#mermaid-svg-F2KRw39PsHvhd8eR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-F2KRw39PsHvhd8eR .arrowheadPath{fill:#333333;}#mermaid-svg-F2KRw39PsHvhd8eR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-F2KRw39PsHvhd8eR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-F2KRw39PsHvhd8eR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-F2KRw39PsHvhd8eR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-F2KRw39PsHvhd8eR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-F2KRw39PsHvhd8eR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-F2KRw39PsHvhd8eR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-F2KRw39PsHvhd8eR .cluster text{fill:#333;}#mermaid-svg-F2KRw39PsHvhd8eR .cluster span{color:#333;}#mermaid-svg-F2KRw39PsHvhd8eR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-F2KRw39PsHvhd8eR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-F2KRw39PsHvhd8eR rect.text{fill:none;stroke-width:0;}#mermaid-svg-F2KRw39PsHvhd8eR .icon-shape,#mermaid-svg-F2KRw39PsHvhd8eR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-F2KRw39PsHvhd8eR .icon-shape p,#mermaid-svg-F2KRw39PsHvhd8eR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-F2KRw39PsHvhd8eR .icon-shape .label rect,#mermaid-svg-F2KRw39PsHvhd8eR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-F2KRw39PsHvhd8eR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-F2KRw39PsHvhd8eR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-F2KRw39PsHvhd8eR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 通过
不通过


目标

Goal
上下文

Context
AI 判断下一步

Reasoning
调用工具 / 执行动作

Action
观察结果

Observation
验证

Verification
记录状态

State / Memory
修正策略

Retry / Adjust
是否达到停止条件?
停止 / 交给人

Done / Human Gate

这张图里的关键不是「循环」本身,而是三件事:

  1. 有状态:系统知道上次做到了哪里。
  2. 有验证:不是 AI 说完成就算完成。
  3. 有停止条件:不会无限消耗 token、时间和权限。

3 -> 为什么它会出现

过去使用 AI 的主流方式是 prompt engineering:人写一个 prompt,AI 给一个结果;人检查,再继续追问。

这种方式适合:

  • 写草稿。
  • 解释代码。
  • 问答。
  • 生成单个方案。

但很多真实任务不是一次性问答,而是持续工作:

  • CI 失败了,要定位、修复、跑测试、再修。
  • 客户池要每天新增、清洗、评分、抽样审核。
  • PR 要持续跟踪 review comment、冲突、测试状态。
  • 依赖要定期升级、验证、开 PR。
  • 营销触达要持续统计渠道、话术、资料包和回复质量。

这些任务天然是循环。Loop engineering 就是把这些循环系统化。

Addy Osmani 的说法很直接:Loop engineering 是「替代你作为提示 agent 的人」,你设计的是会提示 agent 的系统,而不是每一轮都靠人输入。Addy Osmani: Loop Engineering

4 -> 它和 Prompt Engineering 的区别

维度 Prompt Engineering Loop Engineering
关注点 单次输入怎么写 系统如何持续运行
主要对象 一条 prompt 目标、状态、工具、验证器、调度器
典型形态 人问,AI 答 AI 执行,系统校验,人把关
成功标准 这次回答是否好 多轮运行后是否稳定达成目标
最大风险 回答不准 自动化放大错误
最适合 草稿、问答、解释 修复、研究、分类、复盘、监控

一句话:

Prompt engineering 解决「怎么问」。

Loop engineering 解决「怎么让 AI 在边界内持续做事」。

5 -> Loop Engineering 的四层结构

LangChain 把 loop engineering 拆成几层来看,这个视角很实用。LangChain: The Art of Loop Engineering
#mermaid-svg-SpRzEIof0FC3HJFo{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-SpRzEIof0FC3HJFo .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-SpRzEIof0FC3HJFo .error-icon{fill:#552222;}#mermaid-svg-SpRzEIof0FC3HJFo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-SpRzEIof0FC3HJFo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-SpRzEIof0FC3HJFo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-SpRzEIof0FC3HJFo .marker.cross{stroke:#333333;}#mermaid-svg-SpRzEIof0FC3HJFo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-SpRzEIof0FC3HJFo p{margin:0;}#mermaid-svg-SpRzEIof0FC3HJFo .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-SpRzEIof0FC3HJFo .cluster-label text{fill:#333;}#mermaid-svg-SpRzEIof0FC3HJFo .cluster-label span{color:#333;}#mermaid-svg-SpRzEIof0FC3HJFo .cluster-label span p{background-color:transparent;}#mermaid-svg-SpRzEIof0FC3HJFo .label text,#mermaid-svg-SpRzEIof0FC3HJFo span{fill:#333;color:#333;}#mermaid-svg-SpRzEIof0FC3HJFo .node rect,#mermaid-svg-SpRzEIof0FC3HJFo .node circle,#mermaid-svg-SpRzEIof0FC3HJFo .node ellipse,#mermaid-svg-SpRzEIof0FC3HJFo .node polygon,#mermaid-svg-SpRzEIof0FC3HJFo .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-SpRzEIof0FC3HJFo .rough-node .label text,#mermaid-svg-SpRzEIof0FC3HJFo .node .label text,#mermaid-svg-SpRzEIof0FC3HJFo .image-shape .label,#mermaid-svg-SpRzEIof0FC3HJFo .icon-shape .label{text-anchor:middle;}#mermaid-svg-SpRzEIof0FC3HJFo .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-SpRzEIof0FC3HJFo .rough-node .label,#mermaid-svg-SpRzEIof0FC3HJFo .node .label,#mermaid-svg-SpRzEIof0FC3HJFo .image-shape .label,#mermaid-svg-SpRzEIof0FC3HJFo .icon-shape .label{text-align:center;}#mermaid-svg-SpRzEIof0FC3HJFo .node.clickable{cursor:pointer;}#mermaid-svg-SpRzEIof0FC3HJFo .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-SpRzEIof0FC3HJFo .arrowheadPath{fill:#333333;}#mermaid-svg-SpRzEIof0FC3HJFo .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-SpRzEIof0FC3HJFo .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-SpRzEIof0FC3HJFo .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-SpRzEIof0FC3HJFo .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-SpRzEIof0FC3HJFo .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-SpRzEIof0FC3HJFo .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-SpRzEIof0FC3HJFo .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-SpRzEIof0FC3HJFo .cluster text{fill:#333;}#mermaid-svg-SpRzEIof0FC3HJFo .cluster span{color:#333;}#mermaid-svg-SpRzEIof0FC3HJFo div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-SpRzEIof0FC3HJFo .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-SpRzEIof0FC3HJFo rect.text{fill:none;stroke-width:0;}#mermaid-svg-SpRzEIof0FC3HJFo .icon-shape,#mermaid-svg-SpRzEIof0FC3HJFo .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-SpRzEIof0FC3HJFo .icon-shape p,#mermaid-svg-SpRzEIof0FC3HJFo .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-SpRzEIof0FC3HJFo .icon-shape .label rect,#mermaid-svg-SpRzEIof0FC3HJFo .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-SpRzEIof0FC3HJFo .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-SpRzEIof0FC3HJFo .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-SpRzEIof0FC3HJFo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第一层:Agent Loop

AI 调工具,观察结果,再行动
第二层:Verification Loop

测试 / 规则 / Reviewer / 人工审核
第三层:Event Loop

定时任务 / Webhook / PR 更新 / 客户回复
第四层:Improvement Loop

基于 trace、反馈、指标改进规则和 prompt

5.1 -> Agent Loop:让 AI 动手

最基础的一层是:

text 复制代码
看上下文 -> 决定下一步 -> 调用工具 -> 读取结果 -> 继续

对代码任务来说,可能是:

  • 读文件。
  • 改文件。
  • 跑测试。
  • 读报错。
  • 再改。

OpenAI 在 Codex 相关资料里描述过类似机制:模型每轮要么返回最终答案,要么请求工具调用;工具结果追加回上下文后,模型继续判断下一步。OpenAI Codex: Follow a goal

5.2 -> Verification Loop:让结果可证明

只让 AI 动手不够,还要验证。

验证器可以是:

  • 单元测试。
  • lint / typecheck。
  • 构建。
  • 浏览器截图。
  • 数据质量规则。
  • LLM reviewer。
  • 人工审核。

没有 verification loop,AI 很容易把「看起来完成」误判成「真的完成」。

5.3 -> Event Loop:让任务自动触发

任务不一定由人点击开始,也可以由事件触发:

  • 每天 9 点跑客户发现。
  • PR 更新后自动检查。
  • CI 失败后自动分析。
  • 收到客户回复后自动分类。
  • 每周生成 ROI 报告。

Claude Code 文档里有 /loop 和定时任务能力,可以用于重复运行 prompt、轮询状态或执行计划任务。Claude Code scheduled tasks

5.4 -> Improvement Loop:让系统越跑越准

更高级的一层,是把历史结果变成改进信号:

  • 哪些客户被业务判为无效,下次降低权重。
  • 哪些话术回复率低,下次减少使用。
  • 哪类 CI 修复经常失败,下次交给人。
  • 哪些模型判断容易幻觉,下次加入证据校验。

OpenAI Cookbook 里也有用 traces、evals 和 Codex 建 agent improvement loop 的思路:从真实 trace 出发,把反馈变成 eval,再用证据推动下一轮 harness 改动。OpenAI Cookbook: Agent improvement loop

6 -> 一个完整 Loop 的组成部分

#mermaid-svg-EBXFqW6CK6aL5Xa0{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .error-icon{fill:#552222;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .marker.cross{stroke:#333333;}#mermaid-svg-EBXFqW6CK6aL5Xa0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EBXFqW6CK6aL5Xa0 p{margin:0;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge{stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 text{fill:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth--1{stroke-width:17;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-0{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-0{stroke-width:14;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-1{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-1{stroke-width:11;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 text{fill:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-2{stroke-width:8;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-3{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-3{stroke-width:5;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-4{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-4{stroke-width:2;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-5{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-5{stroke-width:-1;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-6{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-6{stroke-width:-4;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-7{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-7{stroke-width:-7;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-8{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-8{stroke-width:-10;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-9{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-9{stroke-width:-13;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 polygon,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 text{fill:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .node-icon-10{font-size:40px;color:black;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge-depth-10{stroke-width:-16;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:lightgray;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .disabled text{fill:#efefef;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-root rect,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-root path,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-root circle,#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-root text{fill:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-root span{color:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .section-2 span{color:#ffffff;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .edge{fill:none;}#mermaid-svg-EBXFqW6CK6aL5Xa0 .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-EBXFqW6CK6aL5Xa0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Loop
目标
成功条件
停止条件
输入
文件
数据库
API
网页
工具
搜索
代码执行
浏览器
CRM
状态
STATE.md
SQLite
Issue
表格
校验
测试
规则
Reviewer
人工审核
护栏
预算
权限
allowlist
kill switch
输出
PR
报告
草稿
待审核队列

一个可靠 loop 至少应该回答这 12 个问题:

问题 要回答什么
目标 这个 loop 到底要完成什么?
输入 它读取哪些数据?
输出 它产出什么?
状态 它如何知道上次做到哪?
工具 它能调用哪些工具?
权限 它不能做什么?
验证 谁判断结果是否合格?
预算 最多跑多久、花多少钱?
停止条件 什么情况下停止?
人类闸门 哪些动作必须人批准?
日志 如何审计它做了什么?
回滚 出错后怎么恢复?

7 -> 真实案例:它不是纯概念

7.1 -> RepoMirror:一夜跑出多个迁移项目

RepoMirror 团队在 YC Agents hackathon 里把 Claude Code 放进 headless while-loop,目标是让 agent 持续做代码库迁移。公开报告里提到,一夜之间产生 1000+ commits 和多个 ported codebases。RepoMirror report

这个案例说明了 loop 的优势:吞吐量非常高

但它也说明了边界:很多迁移结果接近可用,但最后仍需要人把 90% 推到 100%。Loop 擅长批量推进,不等于能完全替代工程判断。

7.2 -> Ralph Wiggum Loop:简单循环也能产生长期进展

Geoffrey Huntley 推广过 Ralph Wiggum loop,本质是让 Claude Code 在一个循环里反复执行同一个长期目标。这个模式被用于长期代码生成、修复和探索。Geoffrey Huntley: Ralph

Ralph 的启发是:有时「简单循环 + 文件状态 + 明确目标」就足以推动复杂项目。

它的风险也同样清楚:如果目标不清、验证不足,agent 会长时间沿错误方向消耗 token。

7.3 -> PR Babysitter:更适合生产环境的形态

cobusgreyling/loop-engineering 收集了很多实用 pattern,例如 PR babysitter、dependency sweeper、CI sweeper、docs loop。cobusgreyling/loop-engineering

PR babysitter 的结构大概是:
#mermaid-svg-UwF57nwmQo0rZCxU{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-UwF57nwmQo0rZCxU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-UwF57nwmQo0rZCxU .error-icon{fill:#552222;}#mermaid-svg-UwF57nwmQo0rZCxU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UwF57nwmQo0rZCxU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UwF57nwmQo0rZCxU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UwF57nwmQo0rZCxU .marker.cross{stroke:#333333;}#mermaid-svg-UwF57nwmQo0rZCxU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UwF57nwmQo0rZCxU p{margin:0;}#mermaid-svg-UwF57nwmQo0rZCxU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-UwF57nwmQo0rZCxU .cluster-label text{fill:#333;}#mermaid-svg-UwF57nwmQo0rZCxU .cluster-label span{color:#333;}#mermaid-svg-UwF57nwmQo0rZCxU .cluster-label span p{background-color:transparent;}#mermaid-svg-UwF57nwmQo0rZCxU .label text,#mermaid-svg-UwF57nwmQo0rZCxU span{fill:#333;color:#333;}#mermaid-svg-UwF57nwmQo0rZCxU .node rect,#mermaid-svg-UwF57nwmQo0rZCxU .node circle,#mermaid-svg-UwF57nwmQo0rZCxU .node ellipse,#mermaid-svg-UwF57nwmQo0rZCxU .node polygon,#mermaid-svg-UwF57nwmQo0rZCxU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UwF57nwmQo0rZCxU .rough-node .label text,#mermaid-svg-UwF57nwmQo0rZCxU .node .label text,#mermaid-svg-UwF57nwmQo0rZCxU .image-shape .label,#mermaid-svg-UwF57nwmQo0rZCxU .icon-shape .label{text-anchor:middle;}#mermaid-svg-UwF57nwmQo0rZCxU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-UwF57nwmQo0rZCxU .rough-node .label,#mermaid-svg-UwF57nwmQo0rZCxU .node .label,#mermaid-svg-UwF57nwmQo0rZCxU .image-shape .label,#mermaid-svg-UwF57nwmQo0rZCxU .icon-shape .label{text-align:center;}#mermaid-svg-UwF57nwmQo0rZCxU .node.clickable{cursor:pointer;}#mermaid-svg-UwF57nwmQo0rZCxU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-UwF57nwmQo0rZCxU .arrowheadPath{fill:#333333;}#mermaid-svg-UwF57nwmQo0rZCxU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UwF57nwmQo0rZCxU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UwF57nwmQo0rZCxU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UwF57nwmQo0rZCxU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-UwF57nwmQo0rZCxU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UwF57nwmQo0rZCxU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-UwF57nwmQo0rZCxU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UwF57nwmQo0rZCxU .cluster text{fill:#333;}#mermaid-svg-UwF57nwmQo0rZCxU .cluster span{color:#333;}#mermaid-svg-UwF57nwmQo0rZCxU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UwF57nwmQo0rZCxU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-UwF57nwmQo0rZCxU rect.text{fill:none;stroke-width:0;}#mermaid-svg-UwF57nwmQo0rZCxU .icon-shape,#mermaid-svg-UwF57nwmQo0rZCxU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UwF57nwmQo0rZCxU .icon-shape p,#mermaid-svg-UwF57nwmQo0rZCxU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-UwF57nwmQo0rZCxU .icon-shape .label rect,#mermaid-svg-UwF57nwmQo0rZCxU .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UwF57nwmQo0rZCxU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-UwF57nwmQo0rZCxU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-UwF57nwmQo0rZCxU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 通过
不通过
定时检查 PR
读取 STATE.md
分析 CI / Review Comment
提出最小修复
Verifier 检查
评论 / 开补丁
停止或交给人
Human Gate:是否合并

这个形态比「AI 自动改一切」可靠得多,因为它有:

  • 状态文件。
  • 最小修复原则。
  • verifier。
  • 人工合并闸门。

8 -> Loop Engineering 的优势

8.1 -> 把一次性工作变成生产线

单次 prompt 适合生成一个结果。Loop 适合持续生产、筛选、修正和复盘。

例如:

  • 每天发现客户。
  • 每天补全客户画像。
  • 每天分类回复。
  • 每天扫描 CI。
  • 每周生成渠道 ROI。

8.2 -> 把人脑记忆变成外部状态

长对话会丢上下文,但状态文件、数据库和 issue 不会。

常见状态载体:

  • STATE.md
  • SQLite / Postgres
  • GitHub issue / PR comment
  • CRM 字段
  • 飞书 / Airtable / Google Sheets
  • trace / eval 记录

8.3 -> 把「看起来完成」变成「被验证完成」

可靠 loop 一定有 verifier。

代码任务的 verifier:

  • 测试。
  • lint。
  • typecheck。
  • 构建。
  • 浏览器验证。

业务任务的 verifier:

  • 证据链接。
  • 字段完整度。
  • 人工抽样审核。
  • 成本模型。
  • 回复率 / 有效回复率 / 销售机会率。

8.4 -> 支持并行分工

一个 agent 可以做实现,另一个 agent 做审查,一个脚本做统计,一个 workflow 做调度。

这也是 worktrees、skills、plugins/connectors、sub-agents 重要的原因。它们让多个 loop 能隔离运行,而不是互相踩工作区。

9 -> Loop Engineering 的风险

9.1 -> Token 和成本失控

Loop 会反复调用模型和工具。多 agent、多 verifier、多轮重试会让成本快速扩大。

所以必须有:

  • 最大轮数。
  • 最大预算。
  • 超时限制。
  • 失败次数上限。
  • 自动停止条件。

9.2 -> 错误反馈会让系统越跑越偏

如果 verifier 不可靠,loop 会优化错误目标。

例子:

  • 测试覆盖不完整,agent 只修到测试通过。
  • 客户评分规则错了,AI 不断找来错误客户。
  • LLM reviewer 判断错了,阻止正确改动。

Loop engineering 的核心不是循环次数,而是反馈信号质量。

9.3 -> 自动化会放大风险

AI 手动犯错影响一次。AI loop 犯错可能影响一批。

必须人工把关的动作:

  • merge。
  • deploy。
  • 数据删除。
  • 生产凭证使用。
  • 客户触达。
  • 自动报价。
  • 自动承诺库存、交期、MOQ。

9.4 -> 复杂度转移到工程系统

Loop engineering 不会减少工程责任,而是把责任转移到系统设计上。

你需要设计:

  • 状态怎么存。
  • 错误怎么停。
  • 权限怎么限制。
  • 日志怎么审计。
  • 成本怎么封顶。
  • 结果怎么回滚。
  • 人什么时候介入。

10 -> 适用性矩阵

场景 适用程度 原因
CI 失败分析与小修复 有测试、有日志、有停止条件
依赖升级 可隔离、可验证、可回滚
大规模代码迁移 中高 吞吐量高,但最后需要人收尾
文档漂移检查 低风险、可重复
PR babysitter 状态清楚,人工合并
客户发现 可批量、可抽样审核
客户画像补全 字段结构清晰,证据可验证
触达话术草稿 中高 AI 适合生成草稿,但必须人工审核
自动群发客户消息 风控、品牌和合规风险高
自动报价 / 自动承诺交期 很低 商业风险高,必须人工控制
开放式战略判断 成功标准不清晰
生产权限 / 支付 / 删除数据 很低 必须强人工闸门

11 -> 放到 AI 获客项目里怎么用

最好的方式不是做一个「全自动获客机器人」,而是做三个小 loop。
#mermaid-svg-UILTpvkBfR4K3RZM{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-UILTpvkBfR4K3RZM .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-UILTpvkBfR4K3RZM .error-icon{fill:#552222;}#mermaid-svg-UILTpvkBfR4K3RZM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UILTpvkBfR4K3RZM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UILTpvkBfR4K3RZM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UILTpvkBfR4K3RZM .marker.cross{stroke:#333333;}#mermaid-svg-UILTpvkBfR4K3RZM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UILTpvkBfR4K3RZM p{margin:0;}#mermaid-svg-UILTpvkBfR4K3RZM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-UILTpvkBfR4K3RZM .cluster-label text{fill:#333;}#mermaid-svg-UILTpvkBfR4K3RZM .cluster-label span{color:#333;}#mermaid-svg-UILTpvkBfR4K3RZM .cluster-label span p{background-color:transparent;}#mermaid-svg-UILTpvkBfR4K3RZM .label text,#mermaid-svg-UILTpvkBfR4K3RZM span{fill:#333;color:#333;}#mermaid-svg-UILTpvkBfR4K3RZM .node rect,#mermaid-svg-UILTpvkBfR4K3RZM .node circle,#mermaid-svg-UILTpvkBfR4K3RZM .node ellipse,#mermaid-svg-UILTpvkBfR4K3RZM .node polygon,#mermaid-svg-UILTpvkBfR4K3RZM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UILTpvkBfR4K3RZM .rough-node .label text,#mermaid-svg-UILTpvkBfR4K3RZM .node .label text,#mermaid-svg-UILTpvkBfR4K3RZM .image-shape .label,#mermaid-svg-UILTpvkBfR4K3RZM .icon-shape .label{text-anchor:middle;}#mermaid-svg-UILTpvkBfR4K3RZM .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-UILTpvkBfR4K3RZM .rough-node .label,#mermaid-svg-UILTpvkBfR4K3RZM .node .label,#mermaid-svg-UILTpvkBfR4K3RZM .image-shape .label,#mermaid-svg-UILTpvkBfR4K3RZM .icon-shape .label{text-align:center;}#mermaid-svg-UILTpvkBfR4K3RZM .node.clickable{cursor:pointer;}#mermaid-svg-UILTpvkBfR4K3RZM .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-UILTpvkBfR4K3RZM .arrowheadPath{fill:#333333;}#mermaid-svg-UILTpvkBfR4K3RZM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UILTpvkBfR4K3RZM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UILTpvkBfR4K3RZM .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UILTpvkBfR4K3RZM .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-UILTpvkBfR4K3RZM .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UILTpvkBfR4K3RZM .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-UILTpvkBfR4K3RZM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UILTpvkBfR4K3RZM .cluster text{fill:#333;}#mermaid-svg-UILTpvkBfR4K3RZM .cluster span{color:#333;}#mermaid-svg-UILTpvkBfR4K3RZM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UILTpvkBfR4K3RZM .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-UILTpvkBfR4K3RZM rect.text{fill:none;stroke-width:0;}#mermaid-svg-UILTpvkBfR4K3RZM .icon-shape,#mermaid-svg-UILTpvkBfR4K3RZM .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UILTpvkBfR4K3RZM .icon-shape p,#mermaid-svg-UILTpvkBfR4K3RZM .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-UILTpvkBfR4K3RZM .icon-shape .label rect,#mermaid-svg-UILTpvkBfR4K3RZM .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UILTpvkBfR4K3RZM .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-UILTpvkBfR4K3RZM .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-UILTpvkBfR4K3RZM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Loop 3:回复分类 / 归因
读取触达记录
分类回复
识别有效回复
销售承接清单
渠道 / 话术 / 客户类型归因
下一轮建议
Loop 2:触达准备包
读取高潜客户
生成切入角度
匹配资料页
生成话术草稿
人工审核
Loop 1:客户发现 / 画像质量
公开渠道搜索
候选客户去重
证据链接记录
画像补全
业务抽样审核
更新关键词和评分规则

11.1 -> 客户发现 Loop

输入:

  • 官网。
  • Instagram。
  • TikTok。
  • Shopee。
  • Tokopedia。
  • LinkedIn。
  • Google/Bing 搜索结果。

输出:

  • 候选客户。
  • 客户主体判断。
  • 产品方向。
  • 证据链接。
  • 初步评分。

人工闸门:

  • 每天抽样审核。
  • 错误客户类型加入负样本。
  • 修改关键词和评分规则。

11.2 -> 客户画像 Loop

每个画像至少分三类信息:

类型 说明
事实 页面上直接看到的信息,例如产品、链接、联系方式
推断 AI 根据证据做出的判断,例如可能需要某类面料
不确定 证据不足、需要人工确认的地方

这能避免 AI 把推断写成事实。

11.3 -> 触达准备包 Loop

AI 适合生成:

  • 客户需求判断。
  • 推荐面料方向。
  • 首轮话术草稿。
  • 匹配资料页。
  • 风险提醒。

但不应该自动:

  • 发送消息。
  • 报价。
  • 承诺库存。
  • 承诺交期。
  • 承诺 MOQ。

11.4 -> 回复分类与归因 Loop

这一环节很适合自动化,因为分类标准清楚。

分类可以包括:

  • 询价。
  • 样品。
  • 产品细节。
  • 合作兴趣。
  • 无效回复。
  • 需要销售承接。

最终要回答:

  • 哪个渠道有效?
  • 哪类客户回复率高?
  • 哪种话术有效?
  • 哪个资料包能带来销售机会?
  • 单有效回复成本是多少?
  • 单销售机会成本是多少?

12 -> 推荐落地路线

#mermaid-svg-3LnfDUPhFCzlxVsr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3LnfDUPhFCzlxVsr .error-icon{fill:#552222;}#mermaid-svg-3LnfDUPhFCzlxVsr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3LnfDUPhFCzlxVsr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3LnfDUPhFCzlxVsr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3LnfDUPhFCzlxVsr .marker.cross{stroke:#333333;}#mermaid-svg-3LnfDUPhFCzlxVsr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3LnfDUPhFCzlxVsr p{margin:0;}#mermaid-svg-3LnfDUPhFCzlxVsr .mermaid-main-font{font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3LnfDUPhFCzlxVsr .exclude-range{fill:#eeeeee;}#mermaid-svg-3LnfDUPhFCzlxVsr .section{stroke:none;opacity:0.2;}#mermaid-svg-3LnfDUPhFCzlxVsr .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-3LnfDUPhFCzlxVsr .section2{fill:#fff400;}#mermaid-svg-3LnfDUPhFCzlxVsr .section1,#mermaid-svg-3LnfDUPhFCzlxVsr .section3{fill:white;opacity:0.2;}#mermaid-svg-3LnfDUPhFCzlxVsr .sectionTitle0{fill:#333;}#mermaid-svg-3LnfDUPhFCzlxVsr .sectionTitle1{fill:#333;}#mermaid-svg-3LnfDUPhFCzlxVsr .sectionTitle2{fill:#333;}#mermaid-svg-3LnfDUPhFCzlxVsr .sectionTitle3{fill:#333;}#mermaid-svg-3LnfDUPhFCzlxVsr .sectionTitle{text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3LnfDUPhFCzlxVsr .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-3LnfDUPhFCzlxVsr .grid .tick text{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-3LnfDUPhFCzlxVsr .grid path{stroke-width:0;}#mermaid-svg-3LnfDUPhFCzlxVsr .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-3LnfDUPhFCzlxVsr .task{stroke-width:2;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskText{text-anchor:middle;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutsideRight{fill:black;text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-3LnfDUPhFCzlxVsr .task.clickable{cursor:pointer;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskText0,#mermaid-svg-3LnfDUPhFCzlxVsr .taskText1,#mermaid-svg-3LnfDUPhFCzlxVsr .taskText2,#mermaid-svg-3LnfDUPhFCzlxVsr .taskText3{fill:white;}#mermaid-svg-3LnfDUPhFCzlxVsr .task0,#mermaid-svg-3LnfDUPhFCzlxVsr .task1,#mermaid-svg-3LnfDUPhFCzlxVsr .task2,#mermaid-svg-3LnfDUPhFCzlxVsr .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutside0,#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutside2{fill:black;}#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutside1,#mermaid-svg-3LnfDUPhFCzlxVsr .taskTextOutside3{fill:black;}#mermaid-svg-3LnfDUPhFCzlxVsr .active0,#mermaid-svg-3LnfDUPhFCzlxVsr .active1,#mermaid-svg-3LnfDUPhFCzlxVsr .active2,#mermaid-svg-3LnfDUPhFCzlxVsr .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-3LnfDUPhFCzlxVsr .activeText0,#mermaid-svg-3LnfDUPhFCzlxVsr .activeText1,#mermaid-svg-3LnfDUPhFCzlxVsr .activeText2,#mermaid-svg-3LnfDUPhFCzlxVsr .activeText3{fill:black!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .done0,#mermaid-svg-3LnfDUPhFCzlxVsr .done1,#mermaid-svg-3LnfDUPhFCzlxVsr .done2,#mermaid-svg-3LnfDUPhFCzlxVsr .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-3LnfDUPhFCzlxVsr .doneText0,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText1,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText2,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText3{fill:black!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .doneText0.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText0.taskTextOutsideRight,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText1.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText1.taskTextOutsideRight,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText2.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText2.taskTextOutsideRight,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText3.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .crit0,#mermaid-svg-3LnfDUPhFCzlxVsr .crit1,#mermaid-svg-3LnfDUPhFCzlxVsr .crit2,#mermaid-svg-3LnfDUPhFCzlxVsr .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-3LnfDUPhFCzlxVsr .activeCrit0,#mermaid-svg-3LnfDUPhFCzlxVsr .activeCrit1,#mermaid-svg-3LnfDUPhFCzlxVsr .activeCrit2,#mermaid-svg-3LnfDUPhFCzlxVsr .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-3LnfDUPhFCzlxVsr .doneCrit0,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCrit1,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCrit2,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-3LnfDUPhFCzlxVsr .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-3LnfDUPhFCzlxVsr .milestoneText{font-style:italic;}#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText0,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText1,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText2,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText3{fill:black!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText0.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText0.taskTextOutsideRight,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText1.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText1.taskTextOutsideRight,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText2.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText2.taskTextOutsideRight,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText3.taskTextOutsideLeft,#mermaid-svg-3LnfDUPhFCzlxVsr .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .vert{stroke:navy;}#mermaid-svg-3LnfDUPhFCzlxVsr .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .activeCritText0,#mermaid-svg-3LnfDUPhFCzlxVsr .activeCritText1,#mermaid-svg-3LnfDUPhFCzlxVsr .activeCritText2,#mermaid-svg-3LnfDUPhFCzlxVsr .activeCritText3{fill:black!important;}#mermaid-svg-3LnfDUPhFCzlxVsr .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3LnfDUPhFCzlxVsr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2026-07-05 2026-07-07 2026-07-09 2026-07-11 2026-07-13 2026-07-15 2026-07-17 2026-07-19 2026-07-21 2026-07-23 2026-07-25 2026-07-27 2026-07-29 2026-07-31 2026-08-01 2026-08-03 2026-08-05 2026-08-07 2026-08-09 只读报告型 Loop 客户画像质量 Loop 触达准备包草稿 Loop 回复分类与归因 Loop 小批量半自动执行 第一步 第二步 第三步 第四步 第五步 AI 获客项目中的 Loop Engineering 落地路线

12.1 -> 第一步:只读报告型 Loop

先不要让 AI 改数据,也不要自动发送。

只做:

  • 读取客户池。
  • 统计质量。
  • 找缺口。
  • 输出报告。
  • 给出下一轮建议。

12.2 -> 第二步:客户画像质量 Loop

让 AI 批量检查:

  • 是否有证据链接。
  • 是否是真实客户主体。
  • 是否符合目标品类。
  • 是否有联系方式。
  • 是否过度推断。

12.3 -> 第三步:触达准备包草稿 Loop

让 AI 生成草稿,但全部进入人工审核队列。

12.4 -> 第四步:回复分类与归因 Loop

触达后,把回复和未回复都纳入统计,形成成本模型。

12.5 -> 第五步:小批量半自动执行

只有在质量稳定后,才考虑小批量半自动执行。即使如此,也应保留人工确认。

13 -> 最小可行 Loop 模板

可以直接用这个模板设计任何一个 loop:

markdown 复制代码
## Loop 名称

### 目标
这个 loop 要完成什么?

### 输入
读取哪些数据?

### 输出
产出什么文件、报告、队列或 PR?

### 状态
如何记录上次运行结果?

### 工具
允许调用哪些工具?

### 禁止事项
哪些动作绝对不能自动做?

### 验证方式
如何判断结果合格?

### 停止条件
什么情况下停止?

### 预算上限
最多跑多久、花多少钱、循环多少次?

### 人工闸门
哪些动作必须人批准?

### 日志和审计
如何记录做了什么?

14 -> 最终判断

Loop engineering 是一个真实方向,但不是魔法。

它真正的价值在于:

  • 把重复工作系统化。
  • 把 AI 输出变成可验证流程。
  • 把人从低价值重复操作里解放出来。
  • 让团队更快获得反馈和归因。

它真正的风险在于:

  • 成本失控。
  • 错误反馈。
  • 自动化放大事故。
  • 缺少人类闸门。
  • 误把 AI 的自信当成事实。

最务实的原则是:

让 AI loop 做批量生产、检查、分类和复盘;让人负责审核、承诺、上线、触达和最终决策。

对 AI 获客项目来说,最适合先做的是客户发现、画像质量、触达准备包和回复归因。最不应该先做的是无人审核的自动发送和自动销售承诺。


感谢各位大佬支持!!!
互三啦!!!

相关推荐
zhanghaofaowhrql1 小时前
Spring Data JPA Repository 详解:从基础到高级用法
java·数据库·sql
阿成学长_Cain10 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库
OceanBase数据库官方博客12 小时前
OceanBase AI 时代,数据库的变与不变(技术解析与实践)
数据库·人工智能·oceanbase
阿成学长_Cain14 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
ywl47081208714 小时前
Mysql 平衡二叉树、红黑树、B树、B+树区别以及应用场景(五)
数据库·b树·mysql
IvorySQL15 小时前
IvorySQL Agent 探索与实践
数据库·人工智能·postgresql·oracle·ivorysql
SelectDB15 小时前
美团数十 PB 规模 Apache Doris 实践:从统一 OLAP 到 AI-Native 数据基座
大数据·数据库·性能优化
Database_Cool_16 小时前
阿里云RDS主从延迟解决方案_只读实例半同步复制最佳实践
数据库·人工智能
KaMeidebaby16 小时前
卡梅德生物技术快报|小 RNA 适配体合成 + 多方法亲和力表征全流程标准化操作手册
前端·网络·数据库·人工智能·算法