Skip to content

时光机验证

一个思想实验

假设一位读者在 2025 年读完本书前七章,内化了以下几条公理:

  • 大模型的输出是概率性的,不是确定性的。
  • 不确定性是约束条件。
  • 约束越精确,系统行为越可预测。
  • 声明式优于命令式:定义"要什么"比指挥"怎么做"更可靠。
  • 战略层面的系统设计决定成败,战术层面的模型选择和参数调优只是锦上添花。

然后让这位读者去设计一个 AI 编程助手的运行环境——不告诉他任何行业实践,只靠这些原则推导。他会设计出什么?

推导过程

从"输出是概率性的"出发。 既然每次调用的输出不确定,就需要在调用之外建立确定性的基础设施来约束和验证输出。验证层、类型检查、结构化输出——这些是概率性核心组件的确定性外壳。

从"约束越精确越好"出发。 项目应该有一份机器可读的规格说明,告诉 AI 这个代码库的约束是什么:编码规范、架构决策、禁止的操作。这份规格说明应该是声明式的——描述"什么是可接受的"。

从"不确定性是约束条件"出发。 AI 的操作权限需要分级管理。读取代码是低风险的,可以自动允许;修改文件是中风险的,需要确认;执行系统命令是高风险的,需要显式授权。这是把不确定性管理嵌入到操作流程中。

从"战略大于分析"出发。 工程投入应该放在系统设计上,而不是追逐最新的模型。同一个 AI 在好的运行环境中表现优异,在差的运行环境中表现平庸——这是系统设计的问题。

从第一章补完的"自评估偏差"出发。 生成和评估必须是两个独立的过程。AI 写完代码后不能在同一次对话中问它"你觉得写得怎么样"——需要独立的验证步骤:运行测试、类型检查、由独立的评估过程审查。

推导到这里,这位读者会设计出一个什么样的系统?

一个围绕 AI 运行的确定性基础设施:项目级规格文件定义约束、权限系统分级管控操作风险、生成与评估独立执行、工具调用有明确的接口和验证、上下文按需加载而非全量灌入、状态持久化到文件系统以跨越会话边界。

行业给出了名字

2026 年,这套实践被行业命名为"harness engineering"。

Anthropic 将其定义为"围绕 AI agent 构建的运行基础设施"。拆开来看,它的核心组件包括:工具编排(定义 agent 能调用什么、怎么调用)、约束与权限(分级管控操作风险)、反馈循环(自动化的验证和评估)、可观测性(记录 agent 的每一步决策)、人机检查点(在关键决策处引入人的判断)。

Claude Code 的具体实现印证了这些推导:CLAUDE.md 文件作为项目级规格说明、三级权限模型(自动允许 → 分类器预判 → 显式确认)、独立的验证步骤(生成代码后运行 lint 和测试,不依赖模型自评)、三层记忆架构(轻量索引常驻、详细内容按需加载、原始数据仅搜索访问)、子 agent 隔离(返回结果但不返回完整上下文,防止噪声污染)。

每一项背后都对应本书的某条原则。CLAUDE.md 是"声明式规格说明"的工程实例。权限分级是"不确定性预算"的具体落地。生成与验证分离是第一章自评估偏差推论的直接应用。记忆按需加载,就是把"约束传播"原则用到了上下文管理上——只加载相关信息就是在缩小模型的条件概率空间。子 agent 隔离是应对多步串联可靠性下降的对策——隔离上下文就是阻断错误传播链。

这说明了什么

Harness engineering 作为行业实践,印证了本书从原理出发的推导。但它没提出新原理——给出的是原理怎么在工程中落地。

这不是看不起行业实践。从原理到实例之间的距离远比看起来更大。本书论证"约束越精确越好",但没有告诉你在 CLAUDE.md 里该写什么;本书论证"生成与评估必须分离",但没有告诉你该用 lint、测试还是独立 agent 来做评估。实践填补了原理到实例之间的鸿沟,这是实践的不可替代的价值。

但如果你理解了原理,面对一个新的 AI 工程问题时,你有能力独立推导出合理的解决方案——即使行业还没有给这个方案起名字。你不需要等"harness engineering"这个术语被发明,就已经在做 harness engineering。这是第一性原理思维的价值:它不告诉你具体答案,但给你推导答案的能力。

反过来,如果你只学了"harness engineering"的最佳实践清单但不理解底层原理,当行业进入下一个范式时——当 AI 从编程助手变成自主工程师,当上下文窗口从有限变成无限,当多 agent 协作从实验变成常态——你会发现最佳实践清单过期了,而你没有能力重新推导。

公理集的边界

公平地说,本书的公理集并不完备。有两个重要的工程问题,不能从本书现有原则自然推出:

第一是上下文作为稀缺资源的工程管理。本书讨论了上下文窗口的存在(第一章)和信息在上下文里的位置对效果的影响,但没有把上下文管理当作一门独立的学问来讨论。实践中,上下文窗口的有限性催生了一系列精密的管理策略(分层压缩、渐进式知识注入、主动遗忘),这些策略的系统性超出了本书"约束传播"原则的直接推导范围。

第二是 agent 自身状态的不确定性。本书的"不确定性是约束条件"原则针对的是模型输出的不确定性。但在长时间运行的 agent 系统中,agent 自身的记忆和状态也是不确定的——存储的信息可能过时,上下文可能被压缩时丢失关键细节。Anthropic 的实践中有一条"主动不信任自身记忆"的原则:memory 是 hint,使用前需要 verify。这条原则可以从"不确定性是约束条件"扩展推出,但这一步跨度不小——不确定性这个概念从"模型输出"推广到了"系统自身状态"。

这些局限性说明了从原理到实践的距离:原理提供方向,实践提供地图上的具体道路。好的原理应该能在面对未知问题时指出正确方向。