置信度信号实装 — 类型学命中与 SAR 字段级置信度,judge 分到三档信号的映射
置信度信号实装 — 类型学命中与 SAR 字段级置信度,judge 分到三档信号的映射
日期: 2026-09-02 阶段: Phase 3 - AML 调查 Copilot 标签: #confidence-signaling #trust-calibration #hitl
核心问题
Day 78 选定置信度信号为 4 个 UX 模式之一(Accountability 轴),Fuselab 定义是"attaches a visible indicator to every agent output"。Day 79 又留了个伏笔:plan-and-execute 的冻结计划防得了"工具调用被劫持",防不了"输出内容被污染"——内容层的不确定性需要别的手段暴露。今天就做这件事:给 AML Copilot 的两类输出(类型学命中、SAR 字段)挂上置信度信号,把不确定性显式呈现给调查员。
回答三件事:(1) 置信度该挂在哪个粒度——整份 SAR 一个分数,还是类型学命中级 + SAR 字段级两层;(2) 怎么把底层的连续分数(规则引擎的 scores ∈ [0,1]、Day 17 judge 的分)映射成 UI 上的三档信号,且映射阈值怎么定;(3) 低置信项怎么高亮、怎么导向人审。
核心反直觉先抛出来:显示置信度(包括"我不确定")比隐藏不确定性更能增加信任——前提是这个置信度本身是校准过的。这条看似违反"产品要显得自信"的直觉,却是 2024-2026 trust-calibration 研究的一致结论;但它有个危险的反面(C 节):未校准的置信度会主动误导用户,比不显示更糟。
关键内容
A. 置信度粒度:为什么要"类型学命中级 + SAR 字段级"两层而非整份一个分
直觉上给整份 SAR 打一个"85% 可信"最省事。但这对调查员没有可操作性——他不知道该重点复核哪一段。置信度信号的价值在于引导注意力分配(把有限的人审预算投到最该看的地方),所以必须落到可操作的粒度:
| 层级 | 置信度来源 | 调查员动作 | 本仓库数据 |
|---|---|---|---|
| 类型学命中级 | 规则引擎 scores[typology] ∈ [0,1] + 命中规则数 | 决定是否信任"判为 structuring" | assessCase 的 scores/hits |
| SAR 字段级 | 每段落的证据支撑度 + judge 分(P3 LLM 接入后) | 决定重点复核哪一段 | sarDraft 的 sections/citedTxIds |
两层各自回答不同问题:类型学级回答"这个案子判得对不对",字段级回答"这段叙述靠不靠谱"。本仓库现成数据足够算出 v1 置信度——规则引擎的 scores 本就是聚合得分(主规则 0.6、辅规则 0.4,cap 到 1),命中规则数 + 证据交易数是天然的"支撑强度"信号。
字段级置信度的一个朴素但有效的算法(无 LLM 时的确定性版本):
fieldConfidence(section):
# 该段引用的证据交易数 / 该段声明覆盖的"应有证据"数
cited = section.citedTxIds.length
ruleHits = rulesBackingSection(section) # 支撑该段的命中规则数
if cited == 0 and section.makesFactualClaim: # 有事实声明却零证据
return LOW # → 高亮待人审
support = w1 * normalize(cited) + w2 * normalize(ruleHits)
return bucketize(support) # → B 节三档映射
注意"有事实声明却零证据 → LOW"这条——它直接复用了 evalChecks.ts 里 cited_tx_nonempty 检查的逻辑(判定为某类型学却未引用证据 = retrieval_miss)。置信度信号和代码型检查共享同一套"证据支撑"判据,不是两套口径。
B. judge 分 → 三档信号:阈值怎么定,为什么是三档
把连续分数映射成离散信号,两个设计点:几档 和 阈值在哪。
为什么三档(高/中/低)而非五档或连续百分比:arXiv 2412.14737《On Verbalized Confidence Scores for LLMs》(2024-12) 实测——LLM 自报的置信度普遍过自信("Overconfidence is present for LLMs of all sizes"),即便 70B+ 大模型校准误差也在 10% 量级。连续百分比("87% 可信")给了用户虚假的精度感——底层分数根本没那么准,凭什么精确到 1%?三档把噪声折叠掉,只传递"可信/需注意/别信"这个能落地的信息量。这呼应 Day 16 把 judge 刻度压到二元的同一哲学:别给评测器超过它真实分辨力的刻度。
三档映射(以规则引擎 scores 与 judge 分 ∈ [0,1] 为输入):
bucketize(score):
if score >= τ_high: return HIGH # 绿:多规则命中/judge 高分,可信
if score >= τ_low: return MEDIUM # 黄:单规则贴阈值/judge 中分,建议复核
else: return LOW # 红:弱证据/judge 低分,强制人审
阈值锚定到本仓库已有的语义边界,不拍脑袋:
| 信号 | 阈值 | 锚定依据 | UI |
|---|---|---|---|
| HIGH(绿) | score ≥ 0.6 | = 主规则单独命中分 SCORE_PRIMARY(typology.ts),即"有强规则支撑" | 正常显示,可折叠 |
| MEDIUM(黄) | 0.5 ≤ score < 0.6 | ≥ 判定阈值 ASSESS_THRESHOLD=0.5 但仅辅规则/贴线 | 标注"建议复核" |
| LOW(红) | score < 0.5 | 未达判定阈值,证据不足 | 高亮 + 强制人审(C 节) |
反直觉洞察①(连续分数的"精度"是假象,三档反而更诚实):直觉是"信息越细越好,给个 87% 比给个'中'强"。但底层 judge/LLM 自报置信度有 ~10% 校准误差(arXiv 2412.14737, 2024-12),87% 的"个位数"完全是噪声。给用户两位精度的置信度,是在承诺一个系统给不出的分辨力——用户会据此做过细的决策("87% 我就信了,85% 我才复核"),而这 2% 差异毫无统计意义。三档(绿/黄/红)把刻度压到系统真实能区分的粒度,反而是更诚实的设计。显示更粗的置信度,是因为系统的真实分辨力就这么粗。
C. 低置信高亮 + 导向人审,以及"显示置信度增加信任"的前提
低置信(红)项的处置:UI 红色高亮 + 在"待人审清单"里置顶 + 禁止"批量批准"绕过。这把置信度信号和 Day 81 的渐进式授权串起来——低置信 = 强制人审,不进自动通过通道。
为什么显示置信度(含"我不确定")反而增加信任?trust-calibration 研究(Visible Language Issue 59-2《Addressing Uncertainty in LLM Outputs for Trust Calibration》2024-2025;arXiv 2412.15584《To Rely or Not to Rely》2024-12)的一致发现:"uncertainty cues were found to help reduce overreliance and confidence highlighting were found to help users catch errors"(不确定性提示降低过度依赖、置信度高亮帮用户抓错)。机制是——隐藏不确定性会诱发过度信任(overtrust),用户把每个输出都当真;显式的低置信信号让用户知道"这里该多看一眼",从而实现校准的信任(calibrated trust):信赖度与系统真实表现对齐。
但有个致命前提,也是最大的坑:
反直觉洞察②(未校准的置信度比不显示更糟——它主动误导):"显示置信度增加信任"容易被误读成"随便显示个置信度就好"。但研究同时警告——verbalized confidence may actively mislead users(自报置信度可能主动误导用户),因为 LLM 普遍过自信(arXiv 2412.14737)。一个总是显示"95% 可信"的过自信信号,比不显示置信度更危险:它把 overtrust 制度化了,用户看到 95% 就放心放行劣质 SAR。所以置信度信号的价值完全依赖底层分数被校准——这就是为什么 Day 17 的 judge×人工 Cohen's κ 校准是置信度信号的前置条件。未经 κ 校准的 judge 分,不许直接映射成 UI 置信信号。 信号必须先证明"它说的高置信确实对应高准确率",否则它在系统性地骗调查员。
闭环:Day 17 校准 judge(κ≥0.6 才可信)→ Day 80 把校准过的 judge 分映射成三档信号 → 低置信导向 Day 81 强制人审。三天是一条链,置信度信号的合法性建立在 Day 17 的校准之上。
设计要点/决策表
| 要点 | 决策 | 理由 |
|---|---|---|
| 粒度 | 类型学命中级 + SAR 字段级两层,不用整份单分 | 单分无可操作性;两层各引导不同动作 |
| 档数 | 三档(高/中/低),不用连续百分比 | LLM 自报置信度 ~10% 误差,连续刻度是假精度 |
| 阈值锚定 | HIGH=0.6(=主规则分)/ MEDIUM≥0.5(=判定阈值)/ LOW<0.5 | 复用 typology.ts 已有语义边界,不拍脑袋 |
| 字段级判据 | 复用 evalChecks 的"有声明却零证据→LOW" | 与代码型检查同口径,不开两套 |
| 低置信处置 | 红色高亮 + 待审置顶 + 禁批量批准绕过 | 串接 Day 81 渐进式授权 |
| 前置条件 | judge 分须经 Day 17 κ 校准才可映射 | 未校准信号主动误导(反直觉②) |
对本项目的落地
- 新建
src/aml/confidence.ts:导出bucketize(score) → 'HIGH'|'MEDIUM'|'LOW'(B 节阈值,阈值常量从typology.ts的SCORE_PRIMARY/ASSESS_THRESHOLD引入,保证同口径)、typologyConfidence(assessment) → Record<TypologyId, Band>、fieldConfidence(section, hits) → Band(A 节算法,复用evalChecks的零证据判据)。 AmlTypologyPanel加类型学级信号:在每个scores[typology]旁渲染绿/黄/红 chip(复用AmlShared的 chip 样式);topTypology的置信档决定整案"建议处置"。AmlSarPanel加字段级信号:每个section标题旁挂置信 chip;LOW 段红色边框高亮,并在"人工复核 (HITL)"区把 LOW 段列入"待重点复核"清单——与现有的"已人工修改"标记并列。- 接 Day 17 judge 校准:
confidence.ts头注明确——judge 分映射成信号前必须经judgeCalibration.ts的 κ 校验(κ≥0.6);W1-W2 LLM 未接入时,信号仅由确定性规则引擎scores驱动(规则分天然可信、无过自信问题),judge 分驱动的字段级信号待 P3 LLM + κ 校准后开启,不谎称已实现。 - 诚实标注:
confidence.ts标注 v1 信号源是规则引擎确定性得分(无 LLM 过自信风险);LLM judge 分作为信号源是 P3 后续,且受 κ 校准门控。
参考资料
- arXiv 2412.14737 — On Verbalized Confidence Scores for LLMs(Yang et al., ETH Zurich):LLM 自报置信度由直接提示产出;"Overconfidence is present for LLMs of all sizes";70B+ 校准误差仍 ~10%;最优提示平均偏差 7% (2024-12)
- Visible Language Issue 59-2 — Addressing Uncertainty in LLM Outputs for Trust Calibration Through Visualization and User Interface Design:可视化不确定性支持信任校准;"uncertainty cues... help reduce overreliance and confidence highlighting... help users catch errors" (2024-2025)
- arXiv 2412.15584 — To Rely or Not to Rely? Evaluating Interventions for Appropriate Reliance on LLMs:Reliance Disclaimer 等干预对"校准的信任"的效果;过度依赖时置信增量显著低于适当依赖 (2024-12)
- Fuselab Creative — Agent UX:Confidence Signaling = "attaches a visible indicator to every agent output" (2025-08)
- 本仓库
src/aml/typology.ts(scores/SCORE_PRIMARY=0.6/ASSESS_THRESHOLD=0.5)、src/aml/evalChecks.ts(cited_tx_nonempty零证据判据)、src/aml/sarDraft.ts(sections/citedTxIds)、Day 17judgeCalibration.ts(κ 校准) (2026-06)
SOTA 检查 (2026-06-11)
- "显示校准过的不确定性 → 降低过度依赖、提升 appropriate reliance"是 2024-2026 trust-calibration 的稳固结论:Visible Language(2024-25)、arXiv 2412.15584(2024-12) 一致;本日 WebSearch 见 2026 持续有 CHI/arXiv 工作(如 2603.07306《Seeing the Reasoning》)深化"解释 + 置信度交互影响信任"。框架未被推翻。
- "LLM 自报置信度普遍过自信"是 live 的踩坑点:arXiv 2412.14737(2024-12) 的过自信结论在 2026 仍被反复验证(2601.15778《Agentic Confidence Calibration》、2602.05073《UQ in LLM Agents》等持续跟进)。这是反直觉②的依据——信号必须先校准。
- 2026 升温方向:linear probes / 语义引导校准:arXiv 2512.22245《Calibrating LLM Judges: Linear Probes》提出用线性探针做快速可靠的不确定性估计——比自报置信度更可靠。本项目 v1 用规则引擎确定性得分(不涉及自报置信度,天然规避过自信);P3 接 LLM 后若用 judge 自报分,应评估是否上 linear probe 校准而非裸用自报分。
- 过时警示:"产品要显得自信、不该暴露不确定性"是过时的产品直觉——2026 受监管场景的共识是显式不确定性是特性(呼应 Day 78 "forced pauses are features");但前提是置信度经校准,否则主动误导(反直觉②)。
- 待跟踪:P3 接 LLM judge 后,复核是否采用 linear probe(2512.22245)或多次采样聚合来校准字段级置信度,回填
confidence.ts的信号源设计。