本文来自微信公众号: MacTalk ,作者:池建强,原文标题:《Claude Code之父说的 “Loop 工程”到底是怎么回事?就问咋变天的?》
Claude Code之父Boris Cherny最近有一次访谈,他在WorkOS×Acquired的对谈里提到,自己已经不再手动提示Claude啦,而是在运行一堆Loop,由这些循环去驱动Claude,并判断下一步该做什么。最后他不失幽默地总结了一句:“My job is to write loops。”
然后一堆AI自媒体就开始断行取义了,啊,AI编程又变天了,咱们都Loop吧。我只能说,变你二爷。其实人家只是在介绍和推广CC的loop功能。
现在媒体可喜欢变天了。从智能补全到Copilot,从Vibe Coding到Agent,从Prompt到Context,再到Loop Engineering……标题里的天,变得我关节炎都要犯了。
Loop工程当然值得关注,但它怎么可能让提示词工程一夜失效呢,这不是扯吗?有了Loop这个指令,开发者就能立刻进入无人值守编程了?我真的建议这些写作者,你也踏踏实实坐下来用Claude Code或者Codex之类的Agent写点东西吧。写点。
用AI写个作品出来,哪怕花点钱呢,也不至于变天变这么快。
前阵子的/goal,现在的/loop,其实都是Agent工具的自然进化,增加了更多能力。比如,当Agent能够连续执行任务,我们就不需要一步一步告诉Agent应该干啥了,就可以设定目标了,比如“要达成的目标是啥,怎么验收,什么时候停下来”,这就是/goal。你设定了goal,AI就会根据条件和目标,直接帮你做到完成任务为止。
/loop是啥呢,其实就是写循环,提示词就在循环里,用一下就知道,比如我来写个loop:
执行结果如下:

然后Agent还会做首次执行:

就这么个事。
以前写提示词,现在写循环。是提示词没了吗?人家提示词就在循环里呢,提示词永不消失。
嘿,loop不就是个cron么,能有啥用。你看,一定要警惕这种“不就是”的句子,我们很可能躲过了“天坑”,向右跨一步,掉入了简化问题的陷阱。
Loop Engineering说的就是这个事,我们既可以写简单的loop,也可以用loop做工作流,比如,一个PR守夜Loop:
每20分钟检查当前PR:
1.查看CI状态、测试失败日志、review comments和merge conflict。
2.如果CI失败,读取失败job的最后200行日志,判断是测试问题、类型问题、lint问题还是环境问题。
3.为修复创建独立git worktree,避免污染主工作区。
4.修复最小必要代码,不做顺手重构。
5.本地运行对应测试、lint、build。
6.如果通过,提交commit,并在状态文件里记录:
-问题来源
-修改文件
-验证命令
-是否需要人工复核
7.如果review comments有新意见,逐条处理,无法处理的标记为blocked。
8.如果CI全绿、无未解决评论、无冲突,停止loop,并输出合并前摘要。
9.如果连续3轮失败原因相同,停止loop,交还给人。
在Claude Code里,这个任务可以拆成一个/loop,加一个/goal:
/loop 20m检查当前的PR。如果CI失败,诊断失败的job,仅在worktree中修复最小原因,运行相关测试,并更新.agent/pr-watch.md记录所做的更改。如果PR是绿色且无异常的,说明情况并停止调度下一次运行。
/goal当前PR已可合并:所有CI检查均已通过,没有未解决的评审意见,不存在合并冲突,npm test和npm run build在本地通过,.agent/pr-watch.md包含最终总结,或在20轮后停止。
再复杂一点,可以做一个从用户反馈到产品改进的Loop。
它每天早上读取GitHub Issues、用户反馈、客服记录和产品埋点数据,把反馈聚类成3类:bug、体验问题、功能建议。然后只挑一个高频且可验证的问题进入工程处理。先写一页mini spec,列出复现步骤、预期行为、验收标准,再开一个worktree做修复。修完后跑测试,必要时用Playwright打开页面验证关键流程。最后生成PR描述,并把“为什么做、改了什么、如何验证、风险在哪里”写清楚。
你看,这也是loop,这是不是Loop Engineering?显然是,这就是驾驭AI的能力问题了。但你自己做Vibe Coding的时候,该咋交流,还不是得咋交流吗?
好的loop,其实就是设计一个系统来完成某件事。一个loop可以理解为递归目标:定义目的,让AI迭代,直到完成。
这神秘吗?一点也不。写过程序的人都知道,循环从来不是重复那么简单。一个有用的循环,至少要有输入、状态、判断条件、动作、反馈和退出机制。少了退出条件,循环会失控;少了反馈,循环会跑飞;少了状态,后续的循环会失忆的。
AI编程里的loop,本质也一样。
Claude Code(Codex也有)的/loop和/goal,其实就是程序里的循环在AI时代的产品化体现。
/loop用来按时间间隔重复运行提示词,可以检查部署、照看PR、处理长时间构建。
/goal是用户设定一个完成条件,Claude会跨多个turn持续工作,直到一个独立的小模型判断目标基本满足。
一个强调节奏,一个强调完成条件。真正的Loop工程,通常要把两者背后的思想结合起来。
这对Vibe Coding显然是有帮助的:
1、要有更好的工程上下文。Addy Osmani在《Loop Engineering》里提到,长时间运行的agent需要一个存在于单次对话之外的记忆层,可以是Markdown文件,也可以是Linear看板。
Claude Code的memory文档也提了,每个session都从新的context window开始,CLAUDE.md和auto memory才是负责把项目知识带回来角色。
换句话说,Vibe Coding进入loop阶段后,上下文不能只靠聊天会话保存,它需要外置到仓库、规则、Skill和状态文件里。
2、最好把“写”和“审”分开。让同一个Agent写代码,再让它判断自己是否完成,风险很高,它往往会相信自己是不可能写出bug的,和人差不多。
更可靠的做法,是让一个Agent编程,让另一个Agent审查,或者至少让测试、类型检查、构建、Playwright这类外部机制参与判断。
3、别忘了成本。Loop是很迷人的,它让AI看起来可以一直工作。但一直工作意味着一直消耗token。所以刚开始Vibe Coding不要一上来就追求“全天候自动化”。除非你真的不差钱,嗷嚎。
回到开头,Boris说“My job is to write loops”,这啥意思呢?
新功能上线了,我使着老爽了,赶紧用起来啊兄弟萌~
