一句话:LLM 应用里到处都是决策(门、路由、早停、选择、预算),但它们散装在各处。 本模块把它们抽成一个统一的决策核:决策点按类型声明,判定器沿确定性光谱路由, 每次决策落一条不可变的证据链——并且开放决策的默认判定器是"合并"而不是"挑选" (fusion F1 0.716 vs 最好单候选,实测见下)。
作者:Saycho-Finally(独立研究者) | AI 使用声明见 AI_DISCLOSURE.md | License: MIT | 核心零依赖 | Python ≥3.10
- 决策 = 选项集构造(上游)+ 选项内选择(本模块)。决策模型只做后者,
价值天花板被前者封死——因此本模块拒绝受理无 coverage 证据的开放决策
(候选集里没有的东西,选不出来)。coverage 存在但不足时不拒绝,而是
降级受理:结果保留,但置信度折半、
shift_risk强制为 high、记录标注degraded。 - 判定器可靠性分场景:分布内小模型匹敌大模型(BERT-210M 判别 GSM8K 98.8%); 分布移位下 LLM judge 退化到近随机(arXiv 2603.06594,6642 人工标注)。 因此判定器按决策点声明路由,不默认 LLM。
| 类型 | 语义 | 判定器 | 例子 |
|---|---|---|---|
verifiable |
谓词判定(开放空间,无候选集) | 程序验证器(确定性,零成本) | 数值验证、schema 检查、票型收敛 |
enumeration |
封闭枚举选择(完备性由协议保证) | 规则 → 探针 → 微模型 | 模型路由、工具选择 |
open |
上游采样构造的候选集 | 必须附 coverage 证据;默认判定器为 fusion | 答案 selection、评审挑选 |
route |
专家注册表上的能力匹配 | capability 契约匹配(deterministic 优先) | 能力路由、组件选择 |
program_verifier($0,确定性)→ rule_engine($0)→ majority_vote($低)
→ fusion(合并替代选择)→ small_probe → micro_decision_model
→ llm_judge(末档,恒带 shift_risk=high)
规则:沿光谱从左往右找第一个能处理该决策点的判定器。升级到 llm_judge 需要 三条件同时成立(无谓词 + 枚举不完备 + 声明低移位风险)——实践中几乎不发生。
任务:5 段含已知 bug 的 Python 代码(15 个 gold bug,全部执行级验证)× 6 路采样评审 × 五档判定器对照(30 个候选,Flash low 档采样):
| 判定器 | 均值 F1 | 说明 |
|---|---|---|
| 最好单候选(selection 上限) | ~0.6 | selection 的天花板 |
| deterministic fusion(零 LLM 聚类) | 0.216 | 机械并集的底线 |
| LLM fusion(Fusion-of-N 式) | 0.716 | recall 全 1.0;单任务满分零误报 |
结论:可分解任务上,"合并候选"显著优于"挑选候选"—— 与 Fusion-of-N(ICLR 2026)的结论互证,且本模块把它落成了判定器光谱的一个正式档位。
每次决策落一条不可变 DecisionRecord(JSONL append-only)。实际产出示例见
results/e2_decisions.jsonl 与 results/e2_llm_fusion_audit.jsonl:
{"decision_id": "a1b2c3", "ts": 1790000000.0,
"point_name": "answer_selection", "point_type": "open",
"solver": "majority_vote(value_key)", "confidence": 1.0,
"coverage_evidence": {"n_candidates": 4, "source": "sample(low, n=4)"},
"alternatives": {"12": 3}, "shift_risk": "low",
"result": "12"}from decisioncore import DecisionCore, DecisionPoint, DecisionType, CoverageEvidence
dc = DecisionCore(audit_path="decisions.jsonl")
# verifiable:程序谓词(零成本,确定性)
dc.decide_verifiable(
DecisionPoint(name="check", type=DecisionType.VERIFIABLE,
predicate=lambda x: x == "42"), subject="42")
# open:上游采样 + coverage 证据 + 多数投票
rec, winner = dc.decide_open(
DecisionPoint(name="pick", type=DecisionType.OPEN,
candidates=["3*4", "2*6"],
coverage=CoverageEvidence(n_candidates=2, source="sample(low,2)")),
vote_keys=["12", "12"])decisioncore/ 核心库(core 类型学 / solvers 光谱 / registry 专家表 / route 路由决策)
migrations/ 迁移适配器包(黑盒注入原判定函数,逻辑零重写)
tests/ 67 项测试全过(核心七测 + 路由切换十测 + 运行时五测 + 迁移等价性十五测 + coverage 降级十九测 + outcome 回填十一测)
results/ E2 实测数据与证据链审计产出(JSON / JSONL)
reports/ DecisionCore 验证实验报告(迁移等价性 / 开放决策实证)
e2_task_family_a.py 任务族 A:5 段含已知 bug 的代码 + 15 个执行级验证的 gold bug
validate_task_family.py 任务族真实性校验(gold bug 的"构造即验证"复现检查)
SPEC.md 完整设计文档(类型学 / 光谱 / 审计 / 理论约束)
E2_experiment_design_v2.md 实验设计与文献锚点
依赖方向:核心零依赖;migrations/ 需要被迁移组件的原实现(可用
PPB_SAMPLE_ROOT / PPB_CACHE_ROOT / PPB_KNOWLEDGE_EXPERIMENTS 覆盖路径);
外部组件缺失时相关用例记为跳过,不影响其余部分。
- 降级判定器(字符级相似度)不适用于语义演化场景——生产用法应注入嵌入或 LLM 判定
- 判定器光谱的 probe 与 micro 两档当前为接口占位,未实现具体模型
- E2 的答案一致率口径为粗提取(正则),绝对数值被系统性低估(结论方向不受影响)
tests/test_runtime_cache_lm.py的内容门用例依赖外部组件,缺失时记为跳过,不计入通过数results/e2_task_a_results.json的scores段为第一轮退化口径(五个判定器的 F1 完全相同, 系该轮解析缺陷所致),仅应作为候选来源使用;有效对照见results/e2_llm_fusion_results.json
两类验证实验(迁移等价性 / 开放决策实证)的完整结果与口径见 reports/DecisionCore验证实验报告_2026-10-04.md。
- 核心七测:类型路由 / coverage 守门 / 审计不可变性 / registry 熵与饿死 / 末档标注
- 路由切换十测:route 决策(含 registry 审计快照)与运行时灰度开关等价性
- 运行时五测:CacheTier 判定与内容门 R1 的运行时路径与审计落盘
- 迁移等价性 15/15:早停 / 缓存层 / 内容门 R1 / selection 投票 / 覆盖守门 (黑盒注入原判定函数,同输入同输出)
- coverage 降级 19 测:充分性判定 / 充分路径不变 / 降级标记与置信度折半 / 降级压过高历史覆盖率 / 拒绝路径未被削弱 / 审计记录携带 degraded
- "Making, Not Taking, the Best of N"(ICLR 2026):Fusion-of-N vs Best-of-N—— fusion 档位的理论来源(polylithic 质量观、超越 oracle)
- DVDR-LLM(ICSE 2026 LLM4Code):多 LLM 集成漏洞检测 +10-12%——任务族 A 的同域先例
- Nolan Lawson 三 AI 多数决:bug 检测的工程同构
- GSA(arXiv 2503.04104):open-ended 任务上 self-consistency 不适用而生成式聚合有效
- BERT-as-a-Judge / INSPECTOR:小判定器匹敌大模型的实证
- "A Coin Flip for Safety"(arXiv 2603.06594):LLM judge 分布移位退化的审计
- 贡献指南见 CONTRIBUTING.md;行为准则见 CODE_OF_CONDUCT.md
- 安全问题请走 SECURITY.md 的私密渠道(勿开公开 Issue)
- 版本变更见 CHANGELOG.md;学术引用格式见 CITATION.cff
- 许可:MIT