四层栈:Prompt、Context、Harness、Loop
一个词在三个人手里同一周冒出来,因为周围的工具刚好越过了一道门槛。四层栈里每一层管的东西大一号,而每一层的错误炸开的范围也大一号。
2026 年 6 月的一个星期里,三个互相没通气的人说了同一件事。
Peter Steinberger(OpenClaw 作者)发了一条八百万浏览量的帖子:别再给编码 agent 写提示词了,去设计那个给它写提示词的循环。 几乎同时,Anthropic 负责 Claude Code 的 Boris Cherny 说他已经不再手动提示 Claude,而是有一堆循环在跑、由它们决定该干什么,而他的工作是写循环。6 月 7 日,Google Chrome 团队的 Addy Osmani 把这件事写下来并命名:Loop Engineering。
一次点火,一次回响,一个名字,全在一周之内。
这个词为什么现在才出现
这值得先问一句:三个人没有对过表,为什么在同一周伸手抓同一个词?
答案不在模型,在周围的工具悄悄越过了一道门槛:
- 编码 agent 可靠到能无人值守跑完一个不平凡的任务
- 主流 harness 里出现了调度原语
- 单次 agent 运行的成本降到了「反复跑、定时跑」不再显得浪费
零件齐了,组合它们的那一步就对所有人同时变得显而易见。
这里有个值得记住的规律:名字总是滞后于实践几个月。人们早就在写循环了,只是没人管它叫 loop engineering;就像在「生成器/评估器」这个说法出现之前,团队早就在把写代码的 agent 和审代码的 agent 配对使用。
所以下一个词会从哪儿来?不会来自模型发布,会来自某个新能力便宜到让一种原本不可想象的组合变成日常的那一刻。
四层,每层管的东西大一号
这几个「XX 工程」不是互相替代的关系,是叠起来的,每一层照看的东西比下面一层大一号。
| 层 | 管什么 | 核心问题 |
|---|---|---|
| Prompt | 写好一句话 | 我该跟模型说什么 |
| Context | 此刻窗口里装什么 | 检索什么、摘要什么、清掉什么 |
| Harness | 武装单次运行 | 给哪些工具、允许哪些动作、什么算做完 |
| Loop | 在 harness 之上调度 | 怎么让它自己一遍遍跑下去 |
单位一层层变大:从一句话,到一个窗口,到一次运行,最后到一个自己会转的循环。
Prompt 是最底层也最广为人知的一层,边界是一次交换。它的麻烦在于它假设每次都有人在场把提示词递进去。
Context 把问题从「我该说什么」升级成「这个窗口里该装什么,模型才解得开这道题」。窗口里塞满噪音,再好的提示词也白搭。
Harness 管单次运行需要随身带的东西:哪些工具、什么时候加载上下文、失败了怎么恢复、什么状态算完成。它武装一次运行,但不让这次运行重复。
Loop 把「等你」自动化掉。前三层都到位之后,agent 能干净地跑完一次 —— 然后停下。循环给它装上定时器、让它派生子 agent 并行干活、并把自己的产出喂回去当下一轮的输入。
一层楼之上,具体多了什么
三个动词把 harness 和 loop 分开:
自己定时醒。 不用人按按钮。
派生帮手。 转起来的循环会分出子 agent —— 一个起草改动,另一个专门挑毛病。
喂自己。 这一轮的产出成为下一轮的输入:昨天的发现写进文件,今早读那个文件接着干。这种跨对话的记忆,才是它成为「循环」而不是「同一个任务跑很多次」的原因。
每一层的错误,炸开的范围不一样
这一节我认为是整个四层栈里最有用的部分。
拿同一个底层 bug —— agent 误读了某个函数的返回值 —— 看它在每一层长什么样:
| 层 | 这个误读会怎样 | 多久被发现 |
|---|---|---|
| Prompt | 一次交换里给出一个错答案 | 立刻,人当场改 |
| Context | 陈旧文档进了窗口,答案自信地错 | 很快,人清掉上下文 |
| Harness | agent 照着误读动了一次手,改了个文件 | 这次运行结束,diff 可见,人审了才发布 |
| Loop | 误读被写进状态文件,第二天早上当作既定事实读回来,在很多轮上继续搭建 | 等有人去看的时候,这个错误的假设已经在承重了 |
这就是循环工程里最重要的那条直觉:
一个错误的代价,随它被发现之前存活的轮数而放大。而循环,按其构造,就是一台最大化轮数的机器。
后面所有的东西 —— 评估器、人工检查点、预算上限 —— 存在的唯一理由都是缩短「犯错」和「被发现」之间的距离。
层越高,离现场越远
顺着上面那张表再走一步:层级越高,你离现场越远,错误堆积的时间越长。
低层的错误有个天然的好处:它当着你的面发生。提示词写坏了,你看着那个答案就知道;上下文脏了,答案会自信地错,你也能察觉。
而循环层的错误发生在你睡觉的时候,改的是你没看过的代码,还把自己的错误喂进下一轮 —— 可能好几天都没人发现。
所以循环工程真正的难点从来不是把循环搭起来。难的是在里面放一个能叫停它的东西。
边界与代价
四层不是新东西替代旧东西。 上了循环层,下面三层的功课一样都不能少 —— 循环只是把一个跑得好的单次运行变成会重复的;如果单次运行本来就不靠谱,循环只会让它错得更快、更多。
层越高,调试越难。 提示词错了你当场能改;循环错了你得回放好几轮才知道是哪一步开始歪的。这就是为什么后面几篇会反复回到同一件事:日志和状态要能重建现场。
这一篇是读来的。 我自己那套东西还停在 harness 那一层 —— 有工具、有恢复、有完成判据,但没有定时器,每次还得我去按启动。按这个分类法,我造的是第三层,不是第四层。
下一篇
四层栈是地图。下一篇进到循环内部:一次循环里到底发生了什么?
从 ReAct 那个 推理 → 行动 → 观察 → 重复 的原语开始,到每个 agent 循环都有的五个构件,再到最容易被跳过的那一格 —— 什么时候停,以及停不下来要花多少钱。