一只阿木木

我做了 30 天 Loop Engineering:一份不吹捧、不劝退的真实记录


三十天前,我同时读到了两条帖子,发布时间相差不到六个小时。

第一条是一个工程师写的,他说他让 AI Agent 过夜运行,第二天早上起来,发现 PR 已经提好了,代码质量出乎意料地稳,他在帖子末尾用了一个词:震撼。

第二条是另一个工程师写的,他说他搭了一个多 Agent 循环,让两个 Agent 互相 review,跑了六十轮,什么有用的东西都没产出,最后收到了 Anthropic 的账单,比他一个月的咖啡钱还多,他在帖子末尾用了一个词:骗局。

这两条帖子底下的评论都是几百条,两边的人都在点头,都在说"对,就是这样"。

两个人描述的是同一类工具。两个人的描述都是真的。

这是最让我不安的地方。当一件事能同时支持两个完全相反的结论,通常意味着这件事本身不是问题所在——是使用条件在决定结果,而大多数讨论都在谈论工具,没有人在谈论条件。

我决定做一件很无聊但我认为必要的事:花三十天,在我自己的真实项目里,用 Loop Engineering 处理三十个真实任务,如实记录每一次的结果,然后把数据摆出来,不预设结论。

这篇文章是这三十天的完整记录。

数字是真实的,失败是真实的,那些说不清楚的结果也是真实的。

一、实验设计:我是怎么避免自我欺骗的

在写结果之前,我需要先说清楚这个实验是怎么设计的,因为设计本身决定了数据的可信程度。

任务来源。 三十个任务全部来自我实际工作中需要处理的事,不是为了演示专门构造的案例。其中十一个来自 GitHub issue 队列,八个来自 CI 失败,六个来自代码审查反馈,五个来自文档更新需求。

对照基准。 在有记录的历史里,我找到了和每种任务类型最接近的人工处理案例,用来做时间和质量的对比。没有历史记录的任务类型,我在做 Loop 之前先用人工做一遍,计时,然后重置,再用 Loop 做。

结果判定。 每次任务有三种结果:

  • 成功:任务完成,输出被实际采用(代码合并、文档发布、报告被使用),且人工检查没有发现隐藏问题。
  • 失败:Loop 未能完成任务,或者完成了但输出存在我不接受的问题(隐藏 bug、弱化测试、理解债务等)。
  • 不确定:任务在技术上完成了,但我无法判断它的质量是否达标,或者完成所花的代价是否值得。

防止自我欺骗的机制。 我让另一个同事帮我做了抽样审查——从三十次里随机抽取十次,他独立判断每次的结果分类,和我的判断做对比。一致率是 86%,不一致的四次我们讨论后重新分类,最终数据以讨论后的版本为准。

这不是严格的科学实验,但它比"我感觉它很有用"或者"我感觉它是骗局"更可靠。

二、最终数据:先把答案放在这里

不把数据藏到文章最后。

text

三十天,三十个任务:

成功:14 次(47%)
失败:9 次(30%)
不确定:7 次(23%)

总成本:$3.84
总节省时间(成功任务):约 9.3 小时
总浪费时间(失败任务):约 4.1 小时
净收益:约 5.2 小时

成功任务的平均 ROI:每花 $0.18,节省 1 小时
失败任务的平均成本:每次 $0.31,浪费 27 分钟

我知道这些数字看起来不像营销材料里的那种数据。没有"效率提升 10 倍",没有"成本降低 90%",只有 47% 的成功率和一张混着成功和失败的流水账。

但这就是三十天的真实情况。

我打算用接下来的篇幅解释这些数字背后的东西:为什么成功的成功了,为什么失败的失败了,以及那 23% 的"不确定"到底意味着什么。

三、十四次成功——它们的公因子

我把十四次成功任务铺在桌上,逐一检查,想找到它们的共同点。

不是找"哪个任务做得好",而是找"是什么条件让这些任务做得好"。

这个区别很重要。如果只说"CI 修复做得好",对你没有多大用,因为不是所有 CI 修复都做得好,我的失败里也有 CI 修复。条件,才是可以被迁移的东西。

花了大约一个小时,我找到了三个条件,十四次成功里,所有任务至少满足其中两个,大多数三个都满足。

条件一:验证是机器能做的事。

这是三个条件里最关键的一个。

成功任务里,有八次的验收标准可以被程序完全自动化验证:pytest 零失败、lint 零警告、CI 全绿、文件包含必要的章节标题、API 返回了预期的状态码。

这类任务有一个根本性的优势:判断函数不需要依赖人的感觉。它不需要问"这代码好不好",它只需要问"这测试过没有"。这个问题有一个客观的、程序可以回答的答案。

我在前面两篇文章里反复强调判断函数的重要性,在十四次成功里我看到了这个重要性的反面证明:所有机器可验证的任务,成功率是 100%。十一次,全部通过。

三次机器不可完全验证的成功任务,是怎么成功的?它们有人工审批节点——Loop 完成后,我会在 commit 的时候做一次快速 review,这个 review 是验收流程的一部分,不是事后检查。

条件二:任务边界清晰且范围有限。

成功的任务,没有一个让 AI 做"优化整个模块"或者"改善性能"这种宽泛的事。

最宽的成功任务是:给一个六百行的模块补充单元测试,覆盖所有 public 函数的主路径和一个边界条件。六百行不小,但边界很清晰——哪些函数要测,测到什么程度,都被明确了。

清晰边界的价值,不只是让 AI 知道做什么,更重要的是让判断函数知道验什么。一个任务如果连"做完了"的定义都模糊,判断函数就没有立足点,整个 Loop 就没有可靠的停止条件。

我在这里想说一件反直觉的事:你在 Loop 开始前花在"定义任务边界"上的时间,不是额外成本,是节省的成本。五分钟把任务定义清楚,比在五轮 Loop 之后发现方向错了要便宜得多。

条件三:失败代价低,可以回滚。

十四次成功任务里,没有一次涉及不可逆操作。代码改坏了,git reset 一下,重来。文档写错了,撤回重写。没有发邮件,没有写数据库,没有上线。

这个条件之所以重要,是因为它决定了 Loop 在设计上可以有多大胆。如果一次失败代价很高,Loop 需要极高的验证标准,需要多重人工确认,设计复杂度会大幅提高。

相反,如果失败代价低,Loop 可以用一个更简单的设计,在允许出错的前提下,用迭代来逼近正确答案。这正是 while 循环最擅长的事。

把十四次成功的数据按类型拆开来看:

任务类型
次数
平均轮次
平均成本
平均节省时间
成功率
CI 修复
5
2.4 轮
$0.033
31 分钟
5/5
单元测试生成
3
2.1 轮
$0.021
24 分钟
3/3
lint 清理
3
1.3 轮
$0.009
18 分钟
3/3
PR 说明生成
2
1.1 轮
$0.011
14 分钟
2/2
依赖升级
1
4.0 轮
$0.051
43 分钟
1/1

这张表有一个值得注意的细节:依赖升级花了最多的轮次,也花了最多的钱,但节省的时间也最多——43 分钟,是所有类型里最高的。

这符合一个规律:Loop Engineering 在那些"本来就很繁琐、步骤多、需要反复试验"的任务上,价值最高。因为人工做这类任务的时间也长,Loop 的迭代特性在这里得到了最大的发挥。

四、九次失败——我在哪里判断错了

失败更值得细说,因为失败有规律。

九次失败不是随机分布的,它们聚集在三个可以被识别的模式里。

失败模式一:目标模糊(3 次)

这三次失败有一个共同的特征:我在开始之前,没有把"完成"定义清楚。

最典型的案例,是我让 Loop 优化一个内部工具的"用户体验"。

那个工具是一个给团队用的脚本界面,功能是对的,但用起来有点别扭。我的任务描述大概是这样的:

text

改善这个脚本的用户体验,让它更友好、更直观。
涉及文件:cli/main.py, cli/commands.py

Loop 跑了七轮。

每一轮 AI 都在做事:第一轮改了菜单的排列顺序,第二轮加了颜色高亮,第三轮改了帮助文档的措辞,第四轮把确认提示从"y/n"改成了"yes/no",第五轮加了进度条,第六轮调整了错误信息的格式,第七轮在帮助文档里加了示例。

每一轮做完,判断函数返回了 True——因为我的判断函数只检查了"文件是否被修改"和"CLI 是否能正常启动"。两者都满足。

七轮之后,那个工具被改了很多地方,有些改动是好的,有些我不确定,有些和我心里想要的方向不一样。整理这些修改花了我一个下午,最后我接受了三处改动,回滚了四处。

成本:$0.31,用在了七轮 AI 工作上。 代价:半个下午,用在了整理和决策上。

教训是什么?

"用户体验"不是一个可以被验证的标准。它是一个感觉,而感觉无法被编码成判断函数。Loop 不知道七轮之后该停在哪里,因为没有一个客观的"到了"。所以它就一直在做,一直在改,用 AI 的逻辑把所有它认为能改善用户体验的地方都改了一遍。

这不是 AI 的错,这是我在开始前没有做完思考就把任务扔给了 Loop。

把"改善用户体验"翻译成 Loop 可以处理的目标,应该是这样的:

text

具体问题:用户在使用 --config 参数时,
如果 config 文件不存在,脚本会直接报错退出,
没有给出友好的提示或建议。

期望行为:检测 config 文件不存在时,打印具体的错误信息,
说明期望的文件路径,并提供使用 --init 命令创建默认配置的提示。

验收标准:
1. 运行 python main.py --config missing.json 时,
   退出码为 1,且 stderr 包含"配置文件不存在"和建议使用 --init
2. 已有的单元测试全部通过
3. 修改范围限于 cli/main.py 中的 config_error_handler 函数

这版任务描述,把"用户体验"翻译成了一个具体的、有明确场景、有可验证标准的问题。

翻译这件事花了我五分钟。如果我当时花了这五分钟,我就不会失去那半个下午。

失败模式二:验证需要人工判断(3 次)

这三次失败,是另一种不同的问题:我把一个需要人来判断的任务,交给了一个只能自我评估的系统。

最典型的案例:我让 Loop 帮我重写一个用户协议里的三个条款,让它们更简洁、更容易理解,同时保持法律意义不变。

这件事有三个验证维度:简洁性(字数)、可读性(Flesch 可读性指数)、法律准确性(含义不变)。

前两个可以机器验证,第三个不行。

我当时的判断函数:

Python

def checker(result: str) -> tuple[bool, str | None]:
    # 检查字数减少
    if word_count(result) >= word_count(original):
        return False, "字数未减少"

    # 检查可读性分数提升
    if readability_score(result) <= readability_score(original):
        return False, "可读性未提升"

    # 检查法律准确性——这里我犯了错误
    # 我用了另一个 AI 来评估法律准确性
    legal_check = ai_evaluate(f"这两段文字的法律含义是否相同?\n原文:{original}\n改写:{result}")
    if "不同" in legal_check or "改变" in legal_check:
        return False, "法律含义可能有变化"

    return True, None

Loop 跑了两轮,通过了。

三天后,我把改写结果给法务同事看了一遍。

他指出了一个问题:第二条款的改写,删掉了一个关于"服务中断责任"的从句,那个从句在原文里虽然读起来绕,但它明确限定了公司的责任边界。改写版更简洁了,但削弱了这个保护。

AI 评审没有发现这个问题,因为那个 AI 也不是专业法务,它在"大体含义相同"的层面上判断通过了,但它没有能力识别法律文本里的细节差异。

这就是"用 AI 验证 AI"的核心陷阱:验证 agent 和执行 agent 面对同样的能力边界,会犯同样类型的错。

这三次失败统一告诉了我一件事:

当验收的核心维度需要专业判断时,验证节点不能是另一个 AI,必须是具备那个专业能力的人。

Loop 不是用来消除人工判断的,是用来减少不必要的人工执行的。对于那些"人的判断不可替代"的维度,人必须出现在 Loop 的某一个环节里——不是事后审查,是 Loop 设计的一部分。

失败模式三:需要全局视角(3 次)

这三次失败有一个更隐蔽的共同原因:AI 在局部做对了,但忽略了不在当前上下文里的全局约束。

最典型的案例:我让 Loop 帮我优化一个 API 端点的响应时间,任务范围限定在 api/search.py。

Loop 跑了四轮,测试通过,响应时间从平均 340ms 降到了 89ms,数据非常好看。

两天后,上线了,另一个完全不相关的功能开始随机出错。

排查了一个小时,发现 api/search.py 里的优化引入了一个缓存层,这个缓存在大多数场景下工作正常,但和 api/admin.py 里的一个写操作有竞争条件——admin 写了新数据,search 还在读缓存里的旧数据,在特定的时间窗口里会返回不一致的结果。

api/admin.py 在这次 Loop 的上下文里从来没有出现过。AI 不知道它的存在,更不知道它和 search 之间的关系。

这三次失败里,每次都有一个"不在任务范围内但实际上有影响"的组件,AI 合理地忽略了它,因为我没有给它看,而结果是一个在局部正确、在全局错误的答案。

这个问题的解法不是让 AI 更聪明,而是在 Loop 的设计里增加一个"全局影响分析"的步骤:

text

在修改代码之前,先分析这次修改可能影响到的、
不在修改范围内的组件,列出清单,
如果有潜在的交互风险,在 PR 说明里明确标注。

但这需要 AI 具备架构级别的理解,而这种理解的质量,高度依赖于给 AI 看的上下文有多完整。

九次失败的完整数据:

失败类型
次数
平均轮次
平均成本
浪费的时间
根本原因
目标模糊
3
6.3 轮
$0.29
41 分钟
任务定义问题
验证需人工判断
3
2.1 轮
$0.22
23 分钟
验证器设计问题
缺全局视角
3
3.7 轮
$0.41
52 分钟
上下文完整性问题

三类失败,有一个共同的本质:

它们都不是因为 AI 不够强。它们是因为 Loop 的设计在某个关键位置上有缺口。

目标模糊的问题,是任务定义的缺口。验证需要人工的问题,是判断函数的缺口。缺全局视角的问题,是上下文提供的缺口。

这些缺口,是人设计的,也只能由人来填。

五、七次不确定——最诚实的部分

七次被我标记为"不确定"的结果,是这篇文章里我最想认真说的部分,因为它们代表了 Loop Engineering 里最难被谈论的一类真实情况。

不确定类型一:完成了,但我看不太懂(4 次)

这四次任务,Loop 全部完成了,测试通过,代码合并了。但当我去读那些 AI 写的代码,有一种奇怪的感觉:我能理解每一行代码在做什么,但我不完全理解为什么是这样设计的。

最让我不舒服的一次,是 Loop 优化了一个递归算法,改成了迭代加记忆化的版本,性能提升了约 70%。代码是正确的,我读了三遍确认这一点。

但如果明天这段代码出了问题,我能第一时间找到问题在哪里吗?我不确定。

这就是"理解债务"——不是 bug,不是错误,是一种"代码存在但我不完全拥有它"的状态。

理解债务在人工写代码的时候也存在,但它累积的速度有上限,因为人写代码的速度就是理解的速度。Loop 把这个上限打破了,代码产出的速度可以超过我理解的速度,而当这两条曲线分叉,理解债务就开始积累。

我把这四次标记为"不确定",而不是"成功",是因为我没有办法诚实地说它们是成功的——成功不只是代码跑起来了,还包括我有能力维护它。

不确定类型二:完成了,但不知道值不值得(3 次)

这三次任务,Loop 完成了,结果是我接受的,没有明显问题。但如果我诚实地算一算账,我不确定是否比人工做更划算。

最典型的一次:让 Loop 整理一批代码注释,把风格不一致的地方统一成我们的注释规范。

Loop 跑了六轮,最终完成了,成本 $0.24。

但我检查这些注释,花了 35 分钟。

如果我直接用人工做呢?根据历史记录,类似规模的注释整理,我大概花 50 分钟。

Loop 节省了 15 分钟,成本 $0.24,以及我的 35 分钟检查时间。

净账怎么算?取决于你怎么看那 35 分钟的检查时间——如果检查是必须做的事,那 Loop 帮我节省了 15 分钟的执行时间;如果没有 Loop 我就不会这么仔细地检查,那 Loop 实际上让我多花了时间。

这三次我标记为"不确定",不是因为结果有问题,而是因为我没有办法给出一个清晰的"值"或者"不值"的判断。

七次不确定加起来,是整个实验里让我思考最多的部分。

它们不是失败,但它们也不是成功。它们是一种中间状态,而这种中间状态在讨论 Loop Engineering 的文章里几乎从来不被提及,因为它既不够正面,也不够戏剧性。

但它是真实情况的一部分,而且是比较大的一部分——23%,将近四分之一。

六、Loop Engineering 最像骗局的三个地方

到这里,我需要说一些更直接的话。

因为在做这三十天实验的过程里,有三个地方,我几次觉得"这是不是真的只是一个被包装好的旧概念"。我把这种感觉认真对待了,写下来,然后试图想清楚它背后是什么。

骗局感一:"AI 自主完成"这个说法。

每次读到有人说"AI 自主完成了一个复杂任务",我都会想起我在设计判断函数上花的那些时间,想起我写的那三条验收标准,想起我设置的最大轮次和 token 预算,想起我在 CLAUDE.md 里写的那些约束。

"自主"是在一个高度人工设计的约束系统内发生的,在这个系统之外,AI 什么都不会"自主"完成,它会在没有停止条件的情况下无限循环,或者在没有权限边界的情况下改掉不该改的东西,或者在没有明确验收标准的情况下用各种聪明的方式假装完成。

"自主"这个词描述的,是 AI 在你设计的系统里的行为,而不是 AI 脱离你的设计之后的行为。

这不是骗局,但它是一个需要被纠正的描述方式。更准确的说法是:"在人类预先设计好的约束和验证框架内,AI 能够自动完成一系列步骤,无需人在每一步手动干预。"

这没有"AI 自主完成"听起来那么酷,但它更真实,也更有指导价值。

骗局感二:"效率提升 X 倍"这个数字。

我的数据是:成功任务里,平均节省时间约 66%,相当于快了大约三倍。

这个数字是真实的,但它是在非常具体的条件下成立的:任务有清晰边界、验收标准可机器化、失败代价低、我在 Loop 开始前正确定义了任务。

这四个条件同时成立的时候,Loop 确实快很多。但在我的三十个任务里,这四个条件同时满足的只有十一个,占总数的 37%。

剩下 63% 的任务里,Loop 没有快很多,有时候甚至更慢——因为我需要花时间定义任务、设计判断函数、检查输出、处理那些失败。

"效率提升 X 倍"说的是最优情况下的结果,不是平均情况下的结果。最优情况和平均情况之间,差距取决于你有多擅长识别"适合用 Loop 的任务",以及你的 Loop 设计得有多好。

这也不是骗局,但它是一个容易被误用的数字。正确的使用方式是:"在适合的任务类型上,Loop 的效率大约是人工的三倍",而不是"用了 Loop,效率提升三倍"。

骗局感三:"无人值守"这个愿景。

无人值守是可以的,但它需要一个前提,这个前提通常没有被说出来:你必须已经把所有的"如果出错了怎么办"都设计进了 Loop 的结构里。

在我的三十次实验里,我有几次真的做到了无人值守——CI 修复的 Loop,我启动之后去做了别的事,回来的时候已经有合并好的 PR 等我审查。

但那几次能够无人值守,是因为我事先做了大量有人值守的工作:设计判断函数、测试 Loop 在各种失败情况下的行为、确认刹车机制真的有效、验证权限边界真的被执行。

无人值守不是你按下启动键就能得到的状态,它是你做了足够多的前期设计之后的奖励。

如果跳过前期设计直接追求无人值守,得到的不是效率,是一个能以比人工更快的速度产出错误的系统。

说完这三个骗局感,我要说另一件事。

这三个骗局感,每一个背后都有一个真实的价值,只是那个价值被过度包装了,或者被从它的条件里剥离出来单独展示了。

"AI 自主完成"背后的真实价值是:Loop 减少了人在重复性操作上的干预频率。

"效率提升 X 倍"背后的真实价值是:对于特定类型的任务,Loop 确实显著更快。

"无人值守"背后的真实价值是:一个设计良好的 Loop,可以在特定任务上实现人不需要全程在场。

这些价值是真实的,值得追求,但追求它们需要脚踏实地的设计,而不是相信标题。

七、一张决策表:什么时候该用 Loop,什么时候不该

基于三十次任务的教训,我整理了一张判断表。

这张表的目的不是给出规则,而是把那些让我失败的判断,翻译成下次可以用的问题。

text

在启动 Loop 之前,回答这五个问题:

第一问:我能用一到三条可被检验的条件描述"完成"吗?

如果不能,先停下来,花五分钟翻译:
  把"改善性能"翻译成"API P99 延迟低于 200ms"
  把"优化用户体验"翻译成"用户在 30 秒内能完成注册流程"
  把"修好这个 bug"翻译成"test_login.py 零失败"

如果花了五分钟还翻译不出来,这个任务不适合 Loop,
它需要更多的人工思考,而不是更快的 AI 执行。

第二问:"完成"能被程序自动验证吗?

如果可以:直接进入设计判断函数。

如果不能,但有一个维度需要人工判断:
  在 Loop 里加一个人工审批节点,
  AI 完成之后,人工检查那个维度,确认之后才算通过。

如果核心维度都需要人工判断:
  Loop 在这里不是合适的工具,
  考虑用 AI 辅助起草,人工完成最终审查。

第三问:这个任务需要了解"范围之外"的上下文吗?

如果需要:在任务描述里,主动提供那些相关但"不在范围内"的组件的信息。
不只告诉 AI 要改什么,还要告诉它不能破坏什么。

如果涉及多个模块的协调,且这些模块的交互关系复杂:
  先做一次架构层面的影响分析,
  把分析结果喂给 Loop 作为上下文,
  或者把任务拆分成多个单模块任务,逐一处理。

第四问:如果 Loop 做坏了,我能在五分钟内回到初始状态吗?

如果可以:继续,失败了重来就行。

如果不可以:
  不允许 Loop 自动提交,
  每次修改后人工审查才能推进,
  或者先在隔离分支上运行,确认无误再合并。

第五问:我愿意花时间读懂 Loop 产出的代码吗?

如果愿意:继续。记住,Loop 完成不等于你完成,
你理解并接受了产出,才算你的工作完成了。

如果不愿意,或者没有时间:
  这不是一个适合用 Loop 的时机,
  不是因为 Loop 不好,
  是因为你对这段代码有理解责任,
  而这个责任不能被外包给速度。

用这张表回溯我的九次失败:八次在开始前就应该被这张表的某个问题拦住。

只有一次是这张表也拦不住的——那次失败来自一个我事先无法预见的全局依赖,是在做了之后才发现的问题。这类失败没有办法完全避免,只能在事后改进 Loop 设计,让下次遇到同类情况时有更好的处理。

八、那十四次成功,统一说明了什么

我在文章开头说,我想找到"是什么条件让任务成功",而不只是说"哪些任务成功了"。

到这里,我可以给出一个更完整的回答了。

十四次成功任务,它们共同说明的不是"这些类型的任务适合 Loop",而是一件更根本的事:

Loop 不是效率工具,它是摩擦力消除工具。

让我解释这个区别。

效率工具让你做事更快。摩擦力消除工具让你做那些因为摩擦力太高所以一直没做的事。

那十四次成功任务,我仔细回想了一下它们的共同背景:在 Loop 之前,它们都是我任务列表里被搁置的那类事。

修 lint,知道要修,不想动。补测试,知道要补,不想做。写 PR 说明,知道要写,能省就省。更新 README,知道要更新,一直拖。

它们的共同特征不是"复杂",而是"烦"。重复的,步骤多的,需要反复来回的,正确答案已经清楚只是执行起来麻烦的。

Loop Engineering 在这十四次里干的最核心的事,不是替我想清楚了什么,而是替我执行了那些我已经想清楚但不想做的部分。

它把执行摩擦降低到了几乎为零,所以那些一直躺在列表里的任务,终于有人做了。

这是一个比"效率提升三倍"更朴素、但也更真实的价值:

Loop Engineering 最大的贡献,不是让你做了以前做不到的事,而是让你终于做了那堆一直在拖的事。

九、一个不圆满的结论

三十天之后,我不会对你说"Loop Engineering 很强,快去用"。我也不会说"被吹过头了,不值得"。

我打算说一些更具体的话,因为我认为具体比笼统更有用。

如果你是一个开发者,项目里有测试、有 CI、有 lint,那些工具已经把"完成"翻译成了可被机器验证的标准——Loop 对你来说是现成可用的,进入成本很低,建议先从 CI 修复或者 lint 清理开始,跑三次,看看你的判断函数写得对不对,然后再扩展到更复杂的任务。

如果你是一个内容创作者或者运营,你的工作里有大量"起草、检查、修改"的循环——Loop 可以帮你,但它能帮的那部分是"执行",不是"判断"。事实核查、品牌语气、受众感受,这些判断必须是你的,不能外包给 AI 的自我评估。设计好人工节点,让 AI 做起草,让你做判断,Loop 的价值才能真正发挥。

如果你是一个团队的技术负责人,你在想"我们应不应该在团队里推 Loop"——先回答一个问题:你们现在最大的执行摩擦是什么?如果是那些重复的、有清晰标准的、低风险的任务,Loop 会帮你。如果是架构决策、产品方向、代码质量文化,那不是 Loop 能解决的,那需要别的东西。

有一种工具,叫凿子。

凿子在你需要凿东西的时候非常有用,可以快几倍,可以凿出人手做不到的精度。

你不应该用凿子切蔬菜,但你也不应该因为凿子切不了蔬菜就说凿子没用。

Loop Engineering 是凿子,不是瑞士军刀。

那张判断表,是我花了三十天学会的"什么时候拿凿子"。

你花在学这件事上的时间,可以比我短——因为我已经把坑踩完告诉你了。

但学这件事本身,没有办法跳过。

这是所有工具的共同规律,Loop Engineering 没有什么特别。

附:完整数据与可复用资产

资产一:三十天完整实验数据表

text

任务编号 | 类型       | 轮次 | 成本    | 节省/浪费时间 | 结果
─────────────────────────────────────────────────────────────
T01     | CI 修复    | 3    | $0.044  | +31 分钟     | 成功
T02     | lint 清理  | 1    | $0.009  | +18 分钟     | 成功
T03     | 用户体验优化 | 7   | $0.310  | -41 分钟     | 失败(目标模糊)
T04     | 单元测试   | 2    | $0.018  | +24 分钟     | 成功
T05     | 法律文本改写 | 2   | $0.220  | -23 分钟     | 失败(验证需人工)
T06     | 依赖升级   | 4    | $0.051  | +43 分钟     | 成功
T07     | PR 说明    | 1    | $0.011  | +14 分钟     | 成功
T08     | 算法优化   | 3    | $0.038  | +?           | 不确定(理解债务)
T09     | CI 修复    | 2    | $0.028  | +28 分钟     | 成功
T10     | 缓存优化   | 4    | $0.410  | -52 分钟     | 失败(全局视角缺失)
T11     | 文档更新   | 2    | $0.016  | +19 分钟     | 成功
T12     | 注释整理   | 6    | $0.240  | ?            | 不确定(ROI 不明)
T13     | lint 清理  | 1    | $0.008  | +17 分钟     | 成功
T14     | 错误处理重构 | 5   | $0.290  | -47 分钟     | 失败(目标模糊)
T15     | CI 修复    | 2    | $0.031  | +31 分钟     | 成功
T16     | 代码审查反馈 | 2   | $0.024  | +21 分钟     | 成功
T17     | 配置迁移   | 3    | $0.410  | -52 分钟     | 失败(全局视角)
T18     | 单元测试   | 3    | $0.021  | +22 分钟     | 成功
T19     | 重构评估   | 3    | $0.190  | ?            | 不确定(ROI 不明)
T20     | 文案优化   | 2    | $0.180  | -21 分钟     | 失败(验证需人工)
T21     | PR 说明    | 1    | $0.012  | +16 分钟     | 成功
T22     | CI 修复    | 3    | $0.033  | +29 分钟     | 成功
T23     | 接口设计审查 | 4   | $0.047  | ?            | 不确定(理解债务)
T24     | 依赖审计   | 3    | $0.031  | +21 分钟     | 成功
T25     | 性能分析   | 5    | $0.410  | -61 分钟     | 失败(全局视角)
T26     | lint 清理  | 2    | $0.010  | +19 分钟     | 成功
T27     | 文案审核   | 2    | $0.220  | -23 分钟     | 失败(验证需人工)
T28     | 复杂算法改写| 4   | $0.091  | ?            | 不确定(理解债务)
T29     | 单元测试   | 2    | $0.019  | +23 分钟     | 成功
T30     | 类型注解补全| 3   | $0.260  | ?            | 不确定(ROI 不明)
─────────────────────────────────────────────────────────────
合计                         $3.837
成功 14 次  失败 9 次  不确定 7 次

资产二:Loop ROI 快速计算公式

text

单次任务 ROI 计算:

节省时间 = 人工预计时间 - (Loop 运行时间 + 判断函数设计时间 + 输出检查时间)
净成本 = API 成本
时间价值 = 节省时间 × 你的小时价值

如果时间价值 > 净成本 × 10:强烈建议用 Loop
如果时间价值 > 净成本 × 3 :建议用 Loop
如果时间价值 < 净成本 × 3 :边际收益,视情况决定
如果节省时间为负数      :这次 Loop 设计有问题,复盘

月度 ROI 估算(适合团队决策):

月度节省时间 = 成功任务数 × 平均节省时间
月度损失时间 = 失败任务数 × 平均浪费时间
月度净收益时间 = 月度节省时间 - 月度损失时间
月度 API 成本 = 所有任务成本之和

如果月度净收益时间 > 4 小时,月度成本 < $20:
  Loop Engineering 对你有显著价值,值得投入优化

资产三:任务适用性五问(打印版)

text

┌─────────────────────────────────────────────────────────────┐
│           启动 Loop 前的五个问题                              │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  Q1  我能用 1-3 条可检验的条件描述"完成"吗?                  │
│      不能 → 先花 5 分钟翻译,再来这里                         │
│                                                              │
│  Q2  "完成"能被程序自动验证吗?                               │
│      不能 → 加入人工审批节点,或者不用 Loop                   │
│                                                              │
│  Q3  这个任务需要"范围之外"的上下文吗?                        │
│      需要 → 主动提供,或者拆分任务                            │
│                                                              │
│  Q4  如果 Loop 做坏了,5 分钟内能回滚吗?                      │
│      不能 → 加人工确认步骤,禁止自动提交                      │
│                                                              │
│  Q5  我愿意花时间读懂 Loop 的产出吗?                          │
│      不愿意 → 这不是合适的时机                                │
│                                                              │
│  五个问题都回答了吗?符合条件的,启动 Loop。                   │
└─────────────────────────────────────────────────────────────┘

资产四:失败复盘模板

每次 Loop 失败后,填这张表,花五分钟:

Markdown

## Loop 失败复盘 [日期]

**任务描述:**
[一句话]

**失败类型:**
□ 目标模糊(验收标准写不清楚)
□ 验证需人工(判断函数覆盖不了关键维度)
□ 缺全局视角(影响了范围之外的组件)
□ 其他:___________

**失败表现:**
[AI 做了什么,为什么不对]

**根本原因:**
[是任务定义问题 / 判断函数问题 / 上下文问题 / 其他]

**下次改进:**
- Loop 设计层面:___________
- 是否需要更新 Skill:___________
- 这类任务是否适合 Loop:___________

**浪费的时间和成本:**
时间:___ 分钟
成本:$___

资产五:"值不值得用 Loop"决策树

text

这个任务有清晰的验收标准吗?
│
├─ 没有 → 先花时间定义标准
│          定义完再问这棵树
│
└─ 有 ──→ 验收可以机器化吗?
            │
            ├─ 可以 ──→ 失败代价低吗?
            │            │
            │            ├─ 低 ──→ 直接用 Loop ✅
            │            │
            │            └─ 高 ──→ 加人工审批节点再用 Loop ⚠️
            │
            └─ 不可以 ─→ 核心判断需要专业人工判断吗?
                          │
                          ├─ 需要 ─→ Loop 做起草,人工做判断 ⚠️
                          │
                          └─ 只是偏主观,没有对错 ─→ 不适合 Loop ❌

这是三十天的完整记录。

数字是真实的,失败是真实的,那些说不清楚的情况是真实的,结论也是真实的——它不够整齐,不够振奋人心,但它是我在自己的项目里、用自己的任务、认真做了三十天之后得到的东西。

如果你打算开始做,那张决策树是起点。如果你已经开始做,那张失败复盘模板可能比那张决策树更有用。

无论哪种情况,三十天之后,你会有自己的数据,那些数据会比这篇文章告诉你更多。

这是我能给你的最诚实的建议。


我是【一只阿木木】——公开建造我的 AI 第二大脑。

普通人如何用 AI 搭建自己的知识操作系统?

一个程序员出身的知识工作者,公开记录自己如何用 AI 工具搭建个人知识系统、把读过的书和做过的项目变成可复用资产的全过程。

欢迎加入行动营👇获取更多Obsidian + AI数字大脑实践

Image

我相信:在 AI 时代,每个普通人都该拥有一个自动生长的知识系统

欢迎关注【一只阿木木】🌊