Build to Delete 与 Build to Last — Agent 系统的两种设计姿态
一个被忽略的设计问题
讨论 Agent 系统设计时,大多数对话集中在"该加什么"——加 planner、加 evaluator、加 memory、加 RAG。框架在膨胀,组件在堆积,架构图越来越像微服务拓扑。
很少有人问反向的问题:哪些组件将来该被拆掉,哪些不该? 不是"这个组件有没有用"——有用的组件太多了。问题是,在它被创建之前,设计者是否知道它属于"将来会被拆"那一类,还是"会持续存在"那一类?
这两类的设计姿态应该完全不同。但大多数 Agent 系统的构建者没有在做这个区分。
Anthropic 在 2026 年 3 月公开了一个答案。
Anthropic 拆掉了什么
Prithvi Rajasekaran 的团队在将多 Agent Harness 从 Claude Opus 4.5 迁移到 4.6 时,系统性地拆除了三个组件:Sprint 分解、Context Reset、逐轮 Evaluator。
这不是重构。重构是用更好的设计替代旧的设计。这里发生的是拆除——组件不是被更好的版本替代的,是被证明不再必要后直接移除的。
每个被拆的组件都编码了一个对"模型此时做不到什么"的假设:
| 组件 | 编码的假设 | 为什么在 4.6 下不再成立 |
|---|---|---|
| Sprint 分解 | 模型无法在长会话中保持连贯 | 4.6 能连续编码 2h+ 不跑偏 |
| Context Reset | 上下文快满时模型会过早草草收工 | 该行为在 4.5 已消失 |
| 逐轮 Evaluator | Generator 每轮输出都需要外部检查 | Generator 能力提升后,大量原本需要检查的问题自己能处理 |
结果:从 6 小时 / $200 降到 3.8 小时 / $125。不是因为跑得更快——是因为跑得更少。
方法论也值得注意:逐个移除,测量影响。 不是靠直觉判断哪个组件还有用。是做减法实验。Sprint 移除后 Builder 仍能产出→保留移除。Planner 移除后方向失控→恢复。Evaluator 完全移除后质量下降但不需要每轮都跑→降级为最终单次 QA。
Lance Martin 在《Harnessing Claude's Intelligence》中将这提炼为更根本的问题:不是"还能加什么",而是**"我可以停止做什么"**。
但 Anthropic 的案例只讲了故事的一半。它回答了"哪些组件该拆",没有回答"哪些组件不该拆,以及为什么"。
模型是大脑,Harness 是手脚
要回答这个问题,需要先理解模型和 Harness 之间的分工本质。
模型只做一件事:输出 token。它不能写文件,不能调 API,不能感知时间流逝,不能记住上一轮对话中发生过什么——除非有人把这些能力接给它。模型是一颗脱离身体的大脑,功能完整但没有手脚。
Harness 提供的不是一种东西,是两种完全不同的东西:
| 思维补偿 | 行动接口 | |
|---|---|---|
| 做什么 | 帮助模型思考:规划、拆解、约束、评估 | 让模型能行动:持久化、I/O、工具调用、消息路由 |
| 存在原因 | 模型当前的推理能力不足 | 模型结构上就没有手脚 |
| 随模型升级 | 被逐步拆除 | 不会因模型升级而拆除 |
| 设计姿态 | Build to Delete | Build to Last |
Sprint 分解是思维补偿——假设模型无法在长会话中保持连贯,所以需要外部切分。被拆了。
但文件系统接口不会因为模型从 4.5 升级到 4.6 而被拆除。不是因为模型不够聪明——无论多聪明,模型都不能自己写磁盘。这是结构性鸿沟,不是能力问题。大脑不能动手,这是本体论上的限制,不是当前版本的限制。
思维补偿层:半衰期在缩短
思维补偿层的组件编码了"模型还做不到 X"的假设。规划、任务分解、逐步骤验证、约束提示——它们的存在前提会随每次模型升级被重新评估。
Boris Cherny 的 CLAUDE.md 只有几行,频繁裁剪。他的原则是刻意不为今天的模型构建,而为六个月后的模型构建——Claude Code 的代码库几乎没有超过六个月的代码行。这不是极简主义审美,是对模型能力曲线的理性预期。
值得强调的是规模不是判断标准。一个三行的约束 prompt 和一个多 Agent 编排管线——只要它们在做的是补偿模型的推理局限——都属于这一层。一个复杂系统完全可以被设计成 build to delete 的,前提是每个组件都有明确的退出条件和独立的可拆除性。
这要求设计者从一开始就按"可拆卸"来构建:模块化、松耦合、组件间通过文件而非内存传递状态,每个组件能独立测试,也能独立移除而不波及其他部分。不是因为它们不重要——恰恰因为它们在某一天会变得不重要。
行动接口层:为什么 Build to Last
行动接口层连接的是模型与现实之间的结构性鸿沟。模型只会输出 token,而现实世界有文件系统、数据库、API、传感器、用户输入。这个鸿沟不会因为推理能力变强而消失——它不是能力问题,是本体论问题。
持久化机制、消息管道、外部工具调用协议——这些东西会持续存在。不是"不拆",而是拆了之后需要立刻重建功能等价的东西。
这层组件的设计姿态不是临时代码,而是稳定的接口。稳定不意味着复杂——恰恰相反,行动接口最有价值的属性是简单和可替换。
Script-as-Pipeline — Agent 管线中的脚本节点设计模式 中讨论的 stdout 作为管线节点,就是一个典型的行动接口设计。脚本的 stdout 被注入到 agent 上下文——这不是在帮模型思考,而是在为模型提供一个确定性、可测试、和 prompt 解耦的通信通道。它不依赖"模型能不能理解这行输出"——理解力会随模型升级而变化。它依赖的是"这条通道是否可靠"——这是接口质量,和模型能力无关。
Build to Last 也在被挑战——但不是因为模型变强
行动接口的"Last"不意味着不变。只是变化的动力不同。
思维补偿层的变化动力是模型能力提升——组件被拆除,因为模型不再需要它。行动接口层的变化动力是构建成本在指数下降。
一个文件系统适配器以前需要手写几百行、写测试、处理边界条件。现在一个合格的 spec 加上 4.6 级别的模型可以在几分钟内生成、验证、适配。所以行动接口虽然不会因模型升级而被拆,但会被更频繁地以更低成本重建。
"Last" 的时长在缩短——不是因为接口的需求变了,而是因为重建成本降到了不值得忍受旧设计的程度。一个构建成本 $50 的组件不再值得维护两年——重建一个更便宜。
这意味着行动接口层的最优策略不是"建一次用很久",而是"保持足够简单,以便在重建成本低于维护成本时毫不犹豫地替换"。设计目标从耐久性变成了可替换性。
对设计者的意义
在动手设计一个 Agent 系统前,对每个计划中的组件回答一个问题:它补偿的是模型的思维缺陷,还是填补的是模型的行动能力缺口?
- 思维补偿 → Build to Delete。预设它会在某次模型升级后消失。模块化,独立测试,明确的退出条件。不为它设计未来——为它的拆除设计现在。
- 行动接口 → Build to Last(但保持可替换)。预设它会持续存在但可能被频繁重建。接口简单,功能单一,替换成本低。稳定的不是实现,是契约。
两种姿态的混淆是 Agent 系统中最常见的隐性成本。把思维补偿当成永久架构——结果是 Harness 越来越厚、越来越慢、越来越贵,但没人能说清哪些部分还在承重。把行动接口当成临时代码——结果是每次模型升级都要重新对接现实世界,模型跑得更快了但手脚总是新的、没测试过的、不可靠的。
Harness 审计:三个问题替代一个
传统的 Harness 审计只问一个维度:这个组件还有用吗?更好的审计问三个:
- 这个组件是思维补偿还是行动接口?
- 如果是思维补偿——当前模型的能力是否已经跨过了它的存在前提?
- 如果是行动接口——重建成本是否已经低到不值得维护当前实现了?
三种决策:拆除、保留、重建。 对应的是三件不同的事——不是因为它们"做错了",而是因为它们在不同层面运作。
Anthropic 拆 Sprint 时做的是拆除。Prithvi 保留 Sprint Contract 时做的是保留(Contract 是架构性组件——"两个 Agent 在动手前先协商验收标准"这个实践本身有价值,和模型能力无关)。团队在脚本适配器上用生成替代手写时做的是重建。
同一个 Harness 里三种决策同时发生。
两种姿态,同一种判断力
Build to Delete 和 Build to Last 不是对立的设计哲学。它们是同一个系统在不同层面的设计姿态——取决于你面对的是模型的大脑,还是现实世界的手脚。
知道哪个会过期、哪个会留下来、而"会留下来"的那个什么时候也该重建了——这是 Agent 时代最稀缺的判断力。
好消息是判断的前提可以学:先分类。在加任何组件之前,问自己它为什么存在——是因为模型还不够好,还是因为模型永远需要一个接口?两个答案导向两种完全不同的设计。
这回到了 无序 Vibe Coding 的隐性代价 中讨论过的线索:机械性的编码正在被自动化,剩下的是判断力。Build to Delete 和 Build to Last 的区分就是这种判断力的一个具体操作——它不是哲学,是每天早上坐下设计系统时可以用上的框架。
参考
- Prithvi Rajasekaran, "Harness Design for Long-Running Apps" — Anthropic 多 Agent Harness 的 V1→V2 演进
- Lance Martin, "Harnessing Claude's Intelligence" — "what can I stop doing" 的提问框架
- Boris Cherny, "Why I'm Building Claude Code" — thin harness 哲学与实践