Loop Engineering
不要再手动 Prompt 了,
设计让 Agent 自己跑的循环系统
Addy Osmani(Google Cloud AI Director)发表 18 小时即获得 753K 浏览、4.6K 点赞的深度长文。核心论点:Loop engineering 的本质,是用设计系统取代你自己成为那个 prompt agent 的人。这不是一个工具问题,而是一个全新的工程范式。
引爆开发者社区
加一个记忆层
同一范式,不同实现
而不是越来越小
工程级解读
从 Addy Osmani 的原文出发,逐层拆解 Loop Engineering 的五个组件、一个记忆层,以及三个越来越尖锐的风险。
背景:谁在说什么
Peter Steinberger(@steipete):"You shouldn't be prompting coding agents anymore. You should be designing loops that prompt your agents."
Boris Cherny(@bcherny,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."
Addy 的判断:这不是工具之争。一旦你发现两个产品的组件形状一样,你就不再争论用哪个工具,而是去设计一个无论坐在哪个工具里都能跑的 loop。
"Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead."
"Loop 工程的本质:用设计系统取代你自己成为那个 prompt agent 的人。"
— Addy Osmani五个组件 + 记忆 = 一个完整的 Loop
Automations
自动化 — 定时调度的心跳
Codex 有 Automations tab;Claude Code 有 /loop、/goal、hooks、cron。/loop 按节奏重跑,/goal 持续到条件满足——而且用另一个小模型来判断"做没做完",写代码的 agent 不给自己的作业打分。
Worktrees
工作树 — 并行不冲突
两个 agent 写同一个文件 = 灾难。git worktree 给每个 agent 独立目录和分支。Codex 内置;Claude Code 用 --worktree flag 或 isolation: worktree。并行上限不是工具,是你的 review 带宽。
Skills
技能 — 别像金鱼
SKILL.md 写一次,agent 每次自动读。把项目约定、构建步骤、"那次事故所以我们不用这种做法"写下来。没有 skills = 每个 cycle 从零推导整个项目。
Connectors
插件与连接器
基于 MCP 协议,agent 能读 issue tracker、查数据库、发 Slack 消息。区别:agent 说"这是修复" vs loop 自己开 PR、关联 Linear ticket、CI 绿了自动 ping 频道。
Sub-agents
子代理 — 制造者和检查者分离
写代码的模型给自己的作业打分 too nice。第二个 agent 用不同指令、甚至不同模型来捕获第一个 agent 自我说服的问题。这是你敢走开的唯一理由。
Memory
记忆 — 第六个组件
Markdown 文件或 Linear board,存在于单次对话之外。Agent 每次运行都失忆,记忆必须在磁盘上而不是上下文里。Agent 忘了一切,但 repo 不会。
"Two people can build the exact same loop and get completely opposite results. One uses it to move faster on work they understand deeply. The other uses it to avoid understanding the work at all."
"两个人可以构建完全相同的 loop,却得到截然相反的结果。"
— Addy Osmani组件对比:Claude Code vs Codex
| 组件 | Claude Code | Codex |
|---|---|---|
| Automations | /loop, /goal, hooks, cron, GitHub Actions |
Automations tab, Triage inbox |
| Worktrees | git worktree, --worktree, isolation: worktree |
内置 worktree 支持 |
| Skills | .claude/skills/ SKILL.md, 自动匹配 |
$skill-name, /skills |
| Connectors | MCP 协议 | MCP 协议 |
| Sub-agents | .claude/agents/, agent teams |
.codex/agents/ TOML |
| Memory | CLAUDE.md, markdown 文件 | State files, Linear boards |
手搓版 vs 官方版:一年进化
| 组件 | 手搓版(一年前) | 官方版(现在) |
|---|---|---|
| Automations | bash cron + 自己维护脚本 | /loop 和 Automations tab |
| Worktrees | 手动 git worktree add |
--worktree 一键隔离 |
| Skills | 每 session 重新解释项目 | SKILL.md 写一次自动加载 |
| Connectors | 自己写 API wrapper | MCP 协议统一标准 |
| Sub-agents | 手动开多个 terminal | 配置文件 + 自动并发 |
三个越来越尖锐的风险
Loop 越强,这三个问题不是变好了,而是变尖锐了。
Loop 的正确姿态
- 你设计 loop,你理解每个组件为什么存在 — 设计本身就是学习
- 你定期审查 loop 的产出 — 保持对代码的理解,把 loop 当加速器而不是替代品
- 你把 loop 当杠杆 — 加速你已经理解的工作,而不是逃避你不想理解的工作
Loop 的危险姿势
- Verification 仍在你自己 — 无人值守的 loop = 无人值守的错误。"Done" 是一个声明,不是证明
- Comprehension Debt(理解债务) — loop 越快交付你没写过的代码,你和代码之间的 gap 越大
- Cognitive Surrender(认知投降) — loop 自己跑的时候很容易放弃独立判断,直接接受它的输出
选型决策框架:什么时候用 Loop vs 手动 Prompt
| 场景 | 用 Loop | 手动 Prompt |
|---|---|---|
| 每日 issue triage | ✓ | ✗ |
| 探索性原型开发 | ✗ | ✓ |
| 已知 bug 批量修复 | ✓ | — |
| 架构决策 | ✗ | ✓ |
| CI 失败聚合分析 | ✓ | ✗ |
| 大规模重构 | ⚠ 看复杂度 | ⚠ 看复杂度 |
"Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go."
"构建你的 loop。但要像一个打算继续当工程师的人那样去构建。"
— Addy Osmani苏格拉底对话
8 轮对话,从困惑到理解。一个每天手动 prompt Claude Code 的工程师,面对"你已经过时了"这个说法时的真实反应。
等等,我一直手动 prompt Claude Code,你告诉我这已经过时了?
没说过时。手动 prompt 仍然有效。但有一种新的工作方式正在浮现——你不再每轮对话都亲手操作,而是设计一个系统让 agent 自己跑。Addy Osmani 把它叫 "Loop Engineering"。
"设计一个系统"听起来很抽象。具体是什么?
想象你是一个餐厅老板。以前你站在厨房里对每个厨师说"切这个、炒那个"。现在你写了一份标准操作流程(SOP),厨房按流程自动运转。你就是那个 loop 的设计师。
好吧,那这个 SOP 有几页?
五页加一个笔记本。五个核心组件——定时器(Automations)、独立工位(Worktrees)、菜谱(Skills)、供货渠道(Connectors)、质检员(Sub-agents)。笔记本是记忆,记录"今天做了什么、明天从哪里继续"。
为什么质检员是单独的人?agent 不能自己检查自己的代码吗?
你考试的时候自己给自己打分会公正吗?写代码的模型给自己的作业打分,too nice。第二个 agent 用不同指令、甚至不同模型来审查——这就是 maker/checker 分离。也是你敢走开的唯一理由。
但是 token 成本呢?跑一个 loop 一天要多少钱?
这是最大的未知数。Addy 原文也承认"token 富人和穷人的使用模式差异巨大"。我的建议:先从最小 loop 开始——每天早上跑一次 triage,看看烧多少。然后逐步扩大。
我已经在用 CLAUDE.md 和 skills 了,这算不算 loop engineering?
算,你已经有了 5 个组件中的 3 个。你缺的是:把 Automations 正式化(用 /loop 或 cron),以及 sub-agent 的 maker/checker 分离。你的 CLAUDE.md 就是 Addy 说的"第六个组件"——记忆。
最大的风险是什么?
不是 token 成本。是 Addy 叫 "cognitive surrender"(认知投降)的东西。当 loop 自己跑得很顺的时候,你很容易停止思考,直接接受它给你的任何输出。设计 loop 是解药——如果你带着判断力去设计。但同一个动作,如果你是为了逃避思考,那就是加速器。
所以结论是?我还是工程师吗?
Cherny 的观点不是工作变简单了。是杠杆的位置移动了。你以前花时间在 prompt engineering 上,现在花在 loop design 上。你还是工程师,只是你的杠杆更长。但记住 Addy 的最后一句话——Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go.
个性化洞察
这对你意味着什么。基于你的背景——QA 工程师出身、全栈 + 系统架构、重度 Claude Code 用户、正在构建 AI 产品、对 token 成本敏感——提炼五条具体可执行的洞察。
你已经在做 Loop Engineering 了
你的 CLAUDE.md + skills + hooks + cron schedule 就是 Addy 描述的 loop。你的记忆系统(memory/)就是"第六个组件"。你领先大多数人。下一步:用 /goal 正式化 maker/checker 分离。
Token 预算管理是你的最大瓶颈
Loop 可以轻松一天烧 $20-50。你的 /loop 已经在用了,但需要设置 token 预算告警。建议:从每天一次的 triage loop 开始,监控 3 天实际成本,再决定扩大范围。Addy 原文也承认 token 穷人和富人的使用模式差异巨大。
你的 Explore agent + code-reviewer agent 就是 maker/checker
你已经在用 sub-agent 分离。下一步:formalize it——用不同模型做检查(比如 Haiku 检查 Opus 的输出),成本更低效果更好。Codex 的做法也印证了这个方向:security reviewer 用强模型 + 高 reasoning effort,explorer 用快模型 + 只读权限。
最大风险不是 token 成本,是 Comprehension Debt
你的 loop 处理越多代码,确保你真的读了它产出的代码,而不只是 approve PR。Addy 的警告很直接:loop 越顺滑,理解债务增长越快。建议:每周花 30 分钟阅读 loop 的 commit history,保持你和代码之间的连接。
你在记忆这块领先大多数人
你的 CLAUDE.md + memory/ 系统 + 知识库已经做到了 Addy 说的"agent 每次运行都失忆,记忆必须在磁盘上"。这给了你一个优势:loop 之间的上下文传递比大多数人的更完整。这是你的竞争壁垒,持续投入。
"Designing the loop is the cure when you do it with judgement and the accelerant when you do it to avoid thinking. Same action, opposite result."
"带着判断力去设计 loop 是解药,为了逃避思考去设计 loop 是加速器。同一个动作,截然相反的结果。"
— Addy Osmani