这篇解决什么困惑
一条证据写得很明确:“本版本不支持持久化 checkpoint。”用户问的也是“当前是否支持持久化 checkpoint?”模型却返回了 SUPPORTED。这不是模型没看懂中文,也不是检索错了;它混淆了两个不同问题:证据本身是否被原文支持,以及证据对用户命题是支持还是反对。
这次错误让我意识到,Evidence 的“可信度”与 Stance 的“方向”必须分开建模。一个被原文准确支持的 Claim,完全可能是在反对用户问题中的命题。
关键结论
修复不是在 Prompt 里加一句“请认真判断”,而是明确判断的参照物、补齐结构化协议、固定模型参数,并用端到端固定集验证。修复后的一次真实模型验收得到 5/5 正确终态、0 false completion;这只关闭当前五类固定集质量门,不代表任意问题都可靠。
错误是怎样发生的
系统中一张证据卡片包含 Claim、原文 quote、类型和验证状态。verificationStatus 表示 Claim 能否追溯到原文,不等于它支持用户问题。最初的决策提示词没有把这个区别说透。模型看见“Claim 与 quote 一致”,便把“这条 Claim 有证据”误映射成 SUPPORTED。
但真正应判断的是:
用户命题:当前版本支持持久化 checkpoint
候选证据:当前版本明确不支持持久化 checkpoint
证据相对用户命题的立场:CONTRADICTED
这也是为什么不能让模型只看 Claim ID。M3 的决策引擎必须在 Java 进程内解析已观察 ID,并给模型有限的 Claim 文本与 quote,才能判断方向。同时,解析范围仍受到观察集合与数量上限约束,避免借修复之名扩大权限。
修复拆成了四层
第一层是语义规则。系统策略明确要求 status 相对于用户问题中的命题判断,而不是相对于候选文本是否被自身 quote 支持。支持用户命题的证据进入 supporting IDs,反驳用户命题的证据进入 contradicting IDs;这里判断的是证据与命题的关系,不是句子的语法肯定或否定。
第二层是协议。模型必须返回恰好七个字段的严格 JSON:协议版本、决策类型、状态、中文回答、支持 ID、反对 ID 和理由。SUPPORTED 必须包含允许的支持 ID,CONTRADICTED 必须包含允许的反对 ID,INCONCLUSIVE 两个列表都为空。
第三层是确定性校验。Codec 拒绝重复键、尾随 JSON、未知字段和非法枚举;决策适配器拒绝候选集合外的 ID;Completion Verifier 再检查引用是否确实由 Loop 观察过。模型“说得像对的”不等于系统接受。
第四层是运行参数与适配。真实复测固定 temperature 为 0,并补齐模型默认选项的转发,避免兼容层错误传递通用选项。这里的目标不是声称输出绝对确定,而是减少无意义变量,让失败更容易复现。
对应测试和评测证据
离线测试覆盖支持、反对、无证据、提示词注入式文本和无关干扰,也覆盖未知、重复、冲突引用,以及格式错误与供应商故障。真实模型评测则让每个案例都完整经过 Search → Resolve → Decide → Verify → Stop,而不是绕过 Loop 单测一个 Prompt。
第一次有效运行是 4/5,唯一错误就是把明确反对误判为支持。规则与协议修正后,同一五类固定集的一次记录为:支持、反对、证据不足、注入式文本和无关干扰全部得到预期状态,总计 5/5,false completion 为 0。
为什么强调“同一固定集的一次记录”?因为五个样本远不足以估计真实分布,模型版本、语言表达、复杂否定、多个冲突证据和检索噪声都会改变结果。5/5 是回归门,不是准确率承诺,更不是 SLA。
真实踩坑
第一个坑是字段命名带来的认知捷径。SUPPORTED 看似清楚,实际上必须说明“支持什么”。只要系统里同时存在 Claim verification 和 query assessment,任何模糊都会变成真实错误。
第二个坑是只测模型输出,不测完整链路。若测试直接把理想上下文喂给模型,就看不到 Resolver 是否漏卡片、Loop 是否观察过引用、Verifier 是否被绕过。端到端固定集更慢,却能验证控制边界仍然存在。
第三个坑是修复后急于宣布成功。一个漂亮的 5/5 很容易变成营销数字。更诚实的表达是:已知错误被复现,修复在固定集合上通过,尚需扩充否定、双重否定、时态变化、冲突来源和跨语言样本。
适用边界
这套修复适合状态必须相对问题命题判断的证据 Agent。对于开放式写作、规划或没有离散状态的任务,不能直接照搬三个枚举。即便在证据任务中,Prompt 规则也不能代替检索质量、引用约束和独立验证。
当前与未来
当前 stance-aware 决策已进入 M3 垂直切片,固定集质量门通过,但 M3 本身尚未关闭。下一步除了扩充语义回归集,还要持久化模型版本、Prompt 版本、输入候选摘要、用量和最终校验结果,以便出现新误判时真正复盘。
在此之前,我只会说“这个具体错误已有一套可重复的修复证据”,不会说“模型已经学会判断立场”。
更新时间:2026-08-18