标题背后的主张
一波紧凑型决策模型已经到来。Microsoft-Decision-1 和 Nace AI 的 Drex 1.5 都将决策框定为评分而非生成:给定一组选项和一个目标,模型返回一个分数或排名。这是一个有用的转变。评分是一种有界操作。它需要固定的选项集和固定的目标。那个目标必须来自某处,而那个某处是策略文档,不是权重。
压缩才是重点。一个对选项进行评分的 9B 模型,是对你已经写好的策略的压缩。如果你在没有带版本的决策登记册的情况下发布它,你并没有消除治理问题。你只是把它转移到了一个检查点里。
想想检查点里包含什么。它包含一个从(上下文、选项、目标)到分数的学习函数。该函数是根据样本拟合出来的。那些样本编码了某人在某个时间、依据某种策略所做的选择。检查点不携带策略文本。它携带的是策略的统计摘要。当策略变化时,摘要不会自我更新。当策略沉默时,摘要仍然会产出一个数字。
这就是失效模式。评分模型在构造上就是自信的。它会为你给出的每个选项返回一个分数。如果你的策略没有定义平局决胜规则,模型会从它的训练分布中发明一个。这种发明在输出中不可见。它只在决策日志中可见——如果你保留了日志的话——而且只有当日志包含产生该分数的选项集和目标时才可见。
一个被评分的决策实际上让你承诺了什么
每个分数都隐含着一个比较类和一条平局决胜规则。比较类就是选项集。如果选项集没有被记录,分数就毫无意义。选项 A 的 0.82 分,在不知道 B、C 和 D 是什么的情况下毫无意义。在不知道目标的情况下也毫无意义:成本效率的 0.82 与客户留存的 0.82 是不同的决策。

平局决胜规则正是大多数 agent 事故的所在。模型很自信,策略却沉默。两个选项的分数落在很窄的区间内。模型选择较高的那个。策略从未说明当分数接近时哪个维度占主导。事故报告说 agent 做出了意外的选择。根本原因是登记册中缺失了一行。
没有记录选项集的分数无法在事后重放。重放需要相同的输入:相同的选项 schema、相同的目标、相同的阈值。如果选项 schema 在决策与审计之间发生了变化,分数就不可复现。如果目标在 prompt 模板中被编辑过,分数就不可复现。如果阈值是在评估期间调优的超参数,分数就不可复现。
这不是模型问题。这是工件问题。模型是运行时。登记册才是工件。
登记册是工件,模型是运行时
决策登记册是对 agent 被允许做出的决策的带版本记录。它有三个部分,必须与检查点分开版本化:
- 选项 schema:存在哪些选项、它们如何被标识,以及每个选项携带哪些字段。
- 目标:被评分的维度、它们的相对权重,以及偏好的方向。
- 平局决胜:解决接近平局的规则,包括定义何为接近平局的阈值。
将它们分开版本化很重要.jpg)复盘发现缺口时变化。

把分数阈值当作有归属者的配置,而不是超参数。阈值是一种策略声明:低于此分数,升级给人类;高于此分数,采取行动。该声明需要一个名称、一个版本,以及一个对其负责的人或角色。如果阈值存在于训练脚本中,它会随模型漂移。如果它存在于有归属者的配置文件中,它就可以被审查。
将选项集与分数一起记录,以便审计员能够重建决策。日志记录应包含登记册版本、选项标识符、目标版本、阈值版本和原始分数。有了该记录,审计员可以针对同一登记册重放决策,并查看模型的输出是否与策略一致。没有它,审计员只能检查模型,这告诉他们模型可能做什么,而不是它做了什么。
一个具体的机制:一个决策日志 schema,在每次决策时存储登记册哈希。该哈希覆盖选项 schema、目标和平局决胜。当登记册变化时,哈希随之变化。在旧登记册下做出的决策仍可在旧哈希下查询。这是一小块工程。它是可重放的决策与一个貌似合理的故事之间的区别。
一条设计规则
如果一个决策无法被表达为登记册中的一行,那么评分模型也无法让它变得可治理。那一行就是测试。它迫使你命名选项、目标和平局决胜。如果你无法命名它们,你就没有策略。你只是希望模型的训练分布与你的意图相符。
决策模型应位于登记册之后,而不是取代它。登记册定义决策空间。模型在其中评分。运行时应用阈值并记录结果。这种顺序让策略保持可见,让模型保持可替换。你可以把一个 9B 评分器换成另一个 9B 评分器,或换成更大的模型,而无需重写策略。你可以更新策略而无需重新训练模型。
权衡是真实的。维护登记册是工作。它需要一个 schema、一个审查流程和一条日志管道。它会拖慢首次部署。跳过它的团队发布得更快,并积累看不见的债务:无法重放的决策、无人拥有的阈值、只存在于模型权重中的平局决胜。这笔债务在事故复盘或审计时到期,那时的问题不是模型能做什么,而是它做了什么。
对于有界决策,评分模型相比自由形式的生成是真正的改进。它们让输出可比较,让操作更便宜。它们并没有让策略消失。它们压缩了它。这种压缩是有损的。登记册正是记录损失的地方。
