跳到主要内容

M1.5 认知核实化 engineering-pack(s1 / MCA / posterior 真算)

状态 = draft(主控拟案,待 owner review)。承接 ADR-016 M1=状态化 only,认知核实化拆 M1.5。本 pack 把 M0 遗留的确定性占位(deterministic-fill)认知字段变成真实计算。M1.5 在 M1 之后、M2 之前。

frame 护栏(阶段 0 文档矫正 · 2026-06-04):M1.5 提升的是 agent 在一次循环内产出的认知质量(把占位字段换真算)——它不推进 agent 的循环 / 状态 / 自主性,也不得被解读为「FinBayes 的工程重心是单次回答」。s1 / MCA / posterior 算真,只有当这些字段被 agent 循环消费(如 posterior / 失效条件进入主动信号触发逻辑、进入到期对账)时,才转化为 agent 能力;孤立加深字段而不接入循环,是金融真智能体骨架蓝图判定的框架偏移。优先级提醒:投入 M1.5 打磨单次回答前,先确认 agent 最小自主循环(架构 §25 已前移 M2)是否已端到端可见;若否,M2 的 agent 行为门优先于继续加深字段。验收口径从纯「单次回答认知分(D 维度)」扩展到「这些更深字段是否真被 agent 循环消费」。承接架构 §2 agent 本体不变量 + 不变量 I-15'。

§0 范围(严格照 ADR-016 §0.2/§4,不扩不缩)

(四项):

  1. MCA 多桶裁决:7 轴打档 → 8 桶裁决 → worst_axis 收敛(替换 M0 全 B1/L1..K1 写死)。
  2. s1 叙事-数字一致性完整子流程:mode 多选 + 8 字段输出契约 + 反向触发收敛(替换 M0 _s1() 占位)。
  3. posterior 真算:多情景 → 双峰拟合(替换 M0 fit_method="m0-deterministic-fill" 写死;kelly_cap 已退役 ADR-021)。
  4. tag_version 锁 mca-v1.0(替换 M0 "m0")。

不含(划界):状态机 / Session / Watchlist / Judgment / 两步写入(= M1,已完成);密度/任务粒度(= M2);动态画像(= M2,静默写入见 ADR-007 §6);MCA 轴 4(N) 的自动数据通路(v1 走人工标注,见 §3.1)。

§1 现状基线(M0 假填的确切位置)

src/finbayes/cognition/synthesis.py 三处函数返回与输入无关的写死常量(M1.5 要替换的就是它们;Pydantic schema 已就绪、字段齐全、validator 已在,M1.5 是"填真值"不是"改 schema"):

字段M0 现状(synthesis.py)证据
mca_bucket_mca_bucket() 全返回 L1/D1/F1/N1/C1/I1/K1 + B1 + tag_version="m0"与问题无关,纯默认桶
s1_s1() 返回 coupling_strength=0.62/confidence=0.74/narratives=["deterministic M0 narrative"]/loop_count=1,method="hash-stable"纯占位
posteriorfit_method="m0-deterministic-fill"mode_a(0.04,w0.60)/mode_b(-0.03,w0.40)写死数字(kelly_cap 已退役 ADR-021)

叙事字段(main_answer 等)= 真 LLM 产出;上述认知字段 = 确定性兜底。模块 docstring 已自陈"deterministic scaffolding fills schema fields M0 has not implemented as real inference yet"。

§2 总基调(doc 已锁,M1.5 照此,不另起炉灶)

认知体系研究工作流反复锁定同一范式(mechanisms-v1 §二):

  • LLM 产元素 + 综合层 Python 产结构。posterior 明确锁 M7.uq 选项 b(多情景→后处理拟合),不引 PyMC、不让 LLM 直输分布参数、不上显式贝叶斯模块。s1 抽取走"四要素模板 + self-consistency n=5"。MCA 7 轴走 LLM 打档 + 规则裁桶。
  • v1 不追外部实时数据通路:真算以 LLM 推断为主;MCA 轴 4(N 国家队/非市场参与者)走人工标注 + 季度校准(数据不公开);不接行情/链上实时数据(留后续里程碑 + 挂 ADR-014 触发器)。
  • 沿用既有 provider 抽象 + asyncio(ADR-008/ADR-005),不引新三方依赖。

§3 三块真算规格

§3.1 MCA 多桶裁决(先做,是 s1/posterior 的上游)

  • 输入:当前问题 + fin_object + market 上下文。
  • 算法(v1,受契约现状约束 — 主控补读 mca-buckets.yaml 后更正):契约没有「7 轴组合 → 桶」的确定性裁决表(完整子系统裁决 = DA-6,未立;8 桶是带 archetype 的命名市场状态,如"发达机构基线 / A 股政策出清 / EM 主权危机",非 7 轴的纯函数)。故 v1 走总基调(LLM 产结构):一次 LLM 调用产出 {7 轴档位 + bucket_label(B1–B7)}(桶按 mca-buckets.yaml 桶语义自然语言判定);Python 后处理只做 worst_axis = MP-2 priority(N3>F3>C3>L3>K3>I3>D3),并列时按桶位字典序选小(mca-classifier §7/§184)。tag_version="mca-v1.0"
  • 轴 4(N):LLM 可产 N1/N2;N3(国家队战术 / 准政策信号)= half-manual review layer(mca-buckets.yaml axis_4.half_manual_review_layer: N3 + Phase 7 SLA)——v1 若 LLM 判 N3,须标"待人工复核",不直采为已确认档位。
  • 输出:填真实 MCABucket(随输入变化、非常量),tag_version="mca-v1.0"
  • ✅ 主控核查发现的 doc 不一致(已于 2026-06-01 doc-hygiene 闭环):(a) 我本节原写"规则裁出 8 桶"为乐观表述,已更正——契约无该规则;(b) mca-classifier.md §9 把 MCA 自动推理标在"M1",早于 ADR-016 插入 M1.5,属 stale 标签,以 ADR-016 为准 = MCA 真算属 M1.5;(c) §9 "轴 4 机构集中度自动推理"与契约(axis_4 = non_market_actor)+ mechanisms-v1(N3 走人工)措辞冲突,以契约 + mechanisms-v1 为准修复mca-classifier.md §9 已加「实现现状对齐」注(指明 MCA 真算实落 M1.5-C1 9e461e7、一次 LLM 调用产 7 轴 + 桶、非逐轴 fixture 毕业)+ 行内更正「轴 4 = 非市场参与者注入,按 §6/§7 走半人工标注、不在自动列」。

§3.2 s1 叙事-数字一致性(中游,消费 M5/M6/M7 信号做横切裁决,不产新事实层)

  • 输入:叙事侧(main_answer 等推理)+ 数字侧(情景/数据引用)。
  • 4 失败模式 + 1 二阶(可多选):mode-a 远期外推 / mode-b 源端数字缺失 / mode-c 叙事-数据脱节 / mode-d 计量口径不可比 / degraded-attention(无基本面锚二阶分支)。
  • 8 字段输出契约:mode / coupling-direction / coupling-strength / evidence(numbers+narrative+degraded+metadata) / falsification / backtrigger / confidence —— 对应 NarrativeNumberConsistency
  • 可证伪条件抽取{quantitative-target, time-horizon, observable-source, falsification-threshold} 四要素;self-consistency n=5 采样,保留出现 ≥3 次者。
  • 收敛:反向触发回路硬上限 N=3;hash 一致或 confidence 变化 ≤5% 软收敛;矛盾抖动 → 矛盾归档多模态输出。ConvergenceFlag(loop_count ≤ 3) 已支持。(实现深度见 §7 岔路 B)

§3.3 posterior(下游;kelly_cap 已退役 ADR-021)

kelly_cap 已退役(ADR-021,2026-06-04):owner 定调其无用且误导,已从代码(FinBayes 684d69d)与 schema 移除。本节保留 posterior 双峰真算规格,kelly_cap 相关步骤 / 下游消费 / 评测项一并失效。

  • posterior 路径(M7.uq 选项 b):(i) LLM 产 ≥5 组独立情景(概率/收益率/触发条件三元组 JSON);(ii) 综合层 GMM/KDE k=2 聚类 + 尾宽估计 → BimodalPosterior{mode_a, mode_b, weights, tail_width}
  • kelly_cap 已退役(ADR-021):原为综合层一次产出的"认知层凯利上界估计",现从 schema 与代码移除;posterior 双峰分布(mode_a / mode_b / tail_width)保留,本条不再实施。
  • task_type 约束tasks-fields-mapping.yaml):posterior 仅 trade_decision_aid required,其余 6 类 optional,explanation excluded。

§4 实施顺序(建议切片)

  1. M1.5-C1 MCA 真算(上游先行:s1 backtrigger 读市场结构、posterior 受桶位影响都依赖它)。
  2. M1.5-C2 s1 子流程(先单轮 or 真回路见 §7 岔路 B)。
  3. M1.5-C3 posterior 真算 + reader 接线kelly_cap 已退役 ADR-021)。
  4. 每切片:Codex 实施 + 主控独立 verify(pytest/ruff/边界/真值非占位断言);保持既有契约 validator 全绿。

§5 边界与不变量(硬,真算时绝不能碰)

  • I-01' 认知不替执行cognition-output-spec):硬线在"执行动作"——真算 posterior 绝不渲染成喊单/仓位指令/替用户决定。(kelly_cap 已退役 ADR-021。)
  • 不引入交易执行字段(order/place/execute/account);不读写密钥;认知层 system prompt 的边界骨架不破坏。
  • 真值替换后,既有 schema validator(_enforce_* 系列)必须仍全绿;不放宽 M0 已锁的约束(原 kelly_cap 上界约束已随 ADR-021 退役移除)。

§6 验收(ADR-016 §4:认知净增量 > M0)

  • L5 维度评测(D 维度,FinTecEval):s1/mca/posterior 真算后,核心场景的底线净增量须较 M0 可测提升(M0 这三块占位 → 认知深度增量≈0;M1.5 是兑现"认知内核净增量"的里程碑)。
  • 真值非占位断言(L2):测试断言这三块输出随输入变化(不再是常量)、fit_method ≠ "m0-deterministic-fill"tag_version="mca-v1.0"
  • L8:owner 在核心决策场景上 vibe-check 认知是否真的"更懂"(区别于 M1 的状态 vibe-check)。
  • 证据交 FinTecEval runs/,对照 M0 R4/R5/R6 坐标看净增量。

§6.1 工程纪律:真算切片 LLM 输出抖动鲁棒性(强制,ADR-018

R7 暴露:M1.5 三块真算离线 125 测试全绿,但真 gpt-5.5 上 21/21 零输出——根因是离线 fake 全返回规范 JSON,与真 LLM 输出分布有系统性偏差(枚举带注解 / list 字段返回单 object / optional 返回 object),且单字段解析失败击穿整条链。这是真算切片的系统性盲点,不是偶发 bug。 ADR-018 把以下定为真算切片强制验收项(done 充要):

  1. 抖动 fixture 强制:fake/stub 对每个真算字段注入≥1 真实抖动样本 + 断言归一化/coerce 后通过;仅规范 JSON 的离线全绿不算验收
  2. 容错解析:归一化/类型 coerce,不假设规范形态。
  3. 单点不击穿 + 诚实降级:任一字段抖动不得零输出;降级须可识别为"未评估"(显式 tag/空值+置信0),不得伪装成真实结果常量
  4. 异常纪律:内容解析失败抛领域异常纳入重试;裸 ValueError 只留编程契约。
  5. 真 provider live 烟测 = 合并/送评前硬门:离线不可替代真实 LLM 验证。

§7 待 owner / 实施前决断的岔路(摆证据,未拍板)

  • A · 总基调确认:§2"LLM+后处理、不引数值/贝叶斯引擎、v1 零外部数据"是文档强默认。请 owner 确认无异议(尤其 s1 mode-c"叙事-数据脱节"在零外部数据下会退化为"LLM 自评一致性",可接受度需 owner 认可)。
  • B · s1 反向触发回路深度:真跑 N=3 迭代回路(多次 LLM 调用 + TaskGroup join,§5.4 P0-5 架构作用域待定)vs M1.5 先单轮 + convergence_flag 诚实标 loop_count=1, converged=false-when-unstable,真回路留 C2.1。倾向后者(先单轮,防过度工程),待 owner 定。
  • C · MCA 裁决规则层级:落 MP-2 简版排序(已签、§7 对齐)即可,还是必须等 DA-6 完整子系统裁决?倾向 MP-2 简版(DA-6 未立,不阻塞)。
  • D · 切片粒度:§4 三切片 vs 合并(MCA+s1 一切片、posterior 一切片)。倾向三切片(MCA 上游需先稳)。

§8 关联