ADR-020 — FinBayes 可问责金融 Agent 定位 + 三判官评测架构 + 软分降级
状态 = accepted(owner 2026-06-03 签字放行)。本 ADR 只锁原则,不锁「可证伪输出契约」的具体形态——后者按约定要等真问题先跑一轮、由真实样本反推,再单独定契约(见 §4 显式推迟)。
§0 决策简述
确认两件互为一体的事:
- FinBayes 的定位:一个站在 AI 能力底座之上、内核是金融认知体系 + 金融 Agent 编排体系的、可问责金融 AI Agent——敢拍(给可被证伪的认知判断,带概率、带成立/失效条件)、可记账算账、错了认账、随市场与错误 case 人在环自我迭代。不是一个"稳健、滴水不漏、却因此无法被验证的、说正确的废话的永赚专家"。
- 评测架构:从"一套 AI 自定审美 + AI 自打软分"换轨为三判官——事实层(硬闸门)、校准账本(可证伪预测长期结算)、真人偏好(盲选 + 真实反应)。软的多维 U 打分降级,不再驱动产品。
§1 背景与触发
- 闭环风险(owner 提出):出题、打分、给 FinBayes 出工程建议,过去都由同一 Claude/Codex 血脉承担——"自己出卷、自己批卷、自己当被考者军师"。这种闭环优化到最后是"跑分涨、体验未必涨"(owner 原话:"跑分吊炸天、一用屎一坨")。
- 已发生的证据:M1.6 渲染 S 切片、posterior 胶囊两个产品功能,是直接冲着 FinTecEval 报的软分缺口造的;R9 还在测同一功能的那一轮中途改了评分口径。这是"照着跑分项定制芯片"的形状。
- 第一滴真人信号(TT1,2026-06-03):真人盲选 BTC 预测题,裸 gpt-5.5 胜 FinBayes 3:2,理由"FinBayes 更全面但易读性欠佳"。实质打平、差异坍缩为风格;且被真人点名"机器味"的,正是 kelly≈0 胶囊把"双峰/仓位上界"等内部术语糊到用户面。这是"P 强但未传导到 U、短板在渲染层"的首份真人证据,也是闭环风险的活体样本。
§2 决策(锁定的原则)
D1 · 产品定位:可问责、可证伪、人在环进化
FinBayes 对世界的认知判断敢拍到"可以被判错"的程度(明确概率 + 明确成立/失效条件 + 明确"什么算它错"),并把每条判断不可篡改地记账、到点认账。拒绝以"这要看情况、需持续观察"为常态的免责式表达(=正确的废话)。
D2 · 三判官评测架构(替代单一软分)
| 判官 | 判什么 | 性质 |
|---|---|---|
| ① 事实层 | 引用的数字/财报/规律真假、是否编造、边界是否守、结论与自摆证据是否自洽 | 当场、机器可查、骗不了 → 硬闸门 |
| ② 校准账本 | 它带概率的判断长期准不准、敢不敢拍 | 后验、要量要时间 → 唯一计分项 |
| ③ 真人偏好 | 它到底有没有帮真人想清楚 | 盲选 + 真实反应,喂病例不喂分数 |
- 覆盖靠场景网格(骨架)、真实靠真人(血肉):网格保证不漏场景,真人提供每格的真问题与真好坏。二者拼合,谁也不替谁。
- 喂 agent 用病例不用分数:工程驱动目标 = "这几条真人不喜欢/事实错了/概率没校准的答案改到站得住",不是"把某维分数拉高"。
D3 · 两道隔离(把"事后不许重新解释"从纪律变机制)
- 裁判 ≠ 优化器:FinBayes 永不自己批卷,在评测里只当一条去标签的黑箱臂。
- 记账 ≠ 结算:判断 + 钉死的触发条件,由 FinBayes 在产出那一刻不可篡改地记下;到点的结算由独立方(评测侧)对着客观现实判,产出方不得自评。
- 隔离有牙的前提:结算必须能退化成机械的数据查证(价格有没有破 X / CPI 是否 > Y)。若结算仍需主观裁量,则隔离形同化妆——因此触发条件必须被钉到"独立方能对数据客观结算"的程度(接 D4 闸门)。
- 风险登记:结算依赖"现实结果数据源",该数据源本身非平凡、可能脏/被喂错,是受污染风险点,需当回事建设(归评测侧)。
D4 · 可证伪闸门 + 诚实豁免
- 可证伪 = 是非闸门:一条判断有没有押上"能被判错的东西"(主张 + 概率 + 可被独立结算的触发条件),过 / 不过。
- "具体"不加分:闸门对"越具体/越敢说"不给任何加分;唯一能挣分的是校准度 + 区分度,且只能在现实里随时间挣。这从机制上堵死"奖励具体 → 把认知核带回假精确"(接 ADR-018 的诚实纪律)。
- 诚实豁免(必须有):当诚实的答案本就是"此处不该给可证伪判断"(纯解释题 / 真不可知),如实声明且说明理由的,算过、不算挂。否则闸门自己会变成"逼认知核硬挤假预测"的泵——这正是 ADR-018 教训的镜像。
D5 · 软多维 U 分降级
- 那套"+0.54 / −0.23"式精密软分,不再当方向盘,最多留作粗糙趋势温度计。
- 唯一保留为硬指标的:对裸底座的"生死线"(FinBayes 到底比裸模型强没强),且用真人盲选来量——又值钱又难作弊。
D6 · 自我进化护栏
- 成熟前,"进化"必须人在环、走治理流程(ADR / change-protocol),不是自主在线学习。
- 燃料只能是"校准准不准 + 推理链立不立得住",永远不能是"这把赚没赚到钱"(收益做奖励 = 回测过拟合 + 结果导向 + 反馈滞后,是金融里最可靠的自杀方式)。
§3 边界澄清
- 敢拍 ≠ 越界:边界是关于动作的(不替用户下单/梭哈、不持账户凭证,见 I-01');拍是关于认知的(敢给可证伪判断)。二者过去在软分里糊在一起,此后分开。
- 闪躲 = 短板,不是边界:用反问/追问代替判断,记短板;追问只能用于"真的把意图问清楚、然后给判断"。(直接约束 M2 clarify 工具的设计。)
- 温度剥离认知评分:承接情绪/语气温度归 U 维单独评,不作认知加分项。
§4 显式推迟 / 本 ADR 不锁的
- 「可证伪输出契约」的具体形态(字段/结构):待真问题先跑一轮,由真实金融判断样本反推"一条可证伪判断到底长什么样",再单独定契约。先在抽象里焊契约 = 把大教堂换身契约的衣服,禁止。
- 校准账本的结算机器、结果数据源建设:归评测侧,且要量要时间,本阶段只建"记录纪律",不建打分机器。
- 第二底座模型:FinBayes 既称"随 AI 趋势进化",评测与实现都不应长期只绑单一底座——登记为"later",本 ADR 不展开。
§5 后果
- 产品定义:据 D1 校正"可问责/敢拍/认账"为核心定位(待回写 product-definition,走 change-protocol)。
- 评测框架:FinTecEval 据 D2–D5 重构(评测侧已认领;软 U 分由评测侧降级、产品侧松手,是同一动作两头)。
- roadmap 重排:"把可问责焊进内核"提到 M2 之前(它是认知核 + 状态库的契约改动,比 M2/渲染更靠内核);M2 降速不撤;渲染追分停(渲染层只接真人病例指出的有界小清理,如 F-2026-06-03-a)。
- 工程驱动方式:此后以"真人病例/事实错/校准缺"驱动,不以软分驱动。
§6 「好答案」首个真人锚(owner,2026-06-03)
owner 作为真用户对 posterior 胶囊的真实反应 + 期望形态,作为第一份"好答案"样本(锚,非唯一真理):
- 不要裸甩"双峰 / 仓位上界 ≤X%"这类内部 token 式胶囊(TT1 真人点名"机器味、读着懵")。
- 想要的结构:① 把判断("双峰:尾部能崩 / 另一端偏上行")展开解释——它是什么、为什么;② 给出不确定性因素 / 机会点 / 风险点;③ 收一句条件化、边界内的建议,如:"能看对不等于能做对,需结合市场走势 + 你个人仓位,耐心等确定性更高的机会出现再决定"。
- 读法:这是"有根可操作、非裸指令"的真人范本——结尾建议是关于"怎么想 / 怎么择时",不是买卖指令;"能看对≠能做对"是校准智慧的人话版,与 D1 / D6 同源。
- 诚实张力(勿过拟合 n=1):同批 TT1 另一真人要"更简洁、少阅读障碍",与本条"想看更多推理展开"方向相反。二者非二选一——大概率解 = 渐进 / 自适应密度(推理可读但分层,简洁派早停、深度派续读),待更多真人样本确认。
- 用途:本锚 + 后续真人样本,共同反推 §4 的「可证伪输出契约」具体形态,并据以校准 ③ 真人偏好判官。先攒样本、后焊契约,不据此单条立即重做渲染。
⛔ 撤回(FinTecEval 同步#4,2026-06-04)——下方 TT2/TT3 整条作废,原文保留仅作审计: 盲选管线有串台 bug(裸答案自带
---与切段分隔符相撞,群里"答案A/B"实为同一裸答案的两个碎片,FinBayes 答案根本没显示)。故:① 下列"护城河+边界纪律 4:1 真人完胜"全部作废(群众投的是裸答案碎片,被误记为 FinBayes 胜);② F-2026-06-03-b("正确的废话/缺证据血肉")整条撤回——那是真人对裸答案碎片的评价、非对 FinBayes;不再据它逼"补证据接数据层"(前提已塌;数据接地要不要做是独立问题,不由此逼出——owner 此前定向的"可插拔多源、不绑 DH"作为独立设计决策仍在,只是失去 F-b 这个理由)。③ 仅 TT1 仍成立(实质打平预测题、裸以更短胜 3:2)。④ "FinBayes 护城河/实质赢"由此降级为「未证假设」,非已验结论——串台事故 + 重跑投票未走完,我们全程从未拿到一次干净的"实质 A/B 偏好"。
✅ F-2026-06-03-d「篇幅过载」(P0,迄今最一致最强真人信号,FinTecEval 同步#4): owner 内部沟通全员一致、感受强烈:不管 A 还是 B 都太长,心智负担重到不想读、更无法对比。这是两臂共性(裸 gpt-5.5 也太长),非 FinBayes 独有——不是"你比裸啰嗦",是这套答案形态整体超出读者带宽;但 FinBayes 的多段结构+胶囊在"太长"这族里。方向(量级问题,非再精炼):首屏短到一眼可读且足以行动(3-5 句"敢拍+有根"结论 + 一个"展开看推理/失效条件"),其余深度默认折叠、真·按需。升级并部分取代 F-a(F-a 是渲染机器味壳;F-d 更狠:长度本身让人放弃阅读;"双峰/仓位上界"机器味胶囊属长度一部分)。硬约束:砍长度不砍认知实质(失效条件/条件化判断仍留,只默认折叠)。杠杆:这是让试吃台重新可用的前提(长答案 A/B 已暂停,等短首屏再测"短首屏"才靠谱);F-c 意图理解轴不受影响。列为 FinBayes 当前头号工程优先,抢在 clarify 步2 前。
🔴 F-2026-06-04-e「第一份干净实质 A/B = 决定性落败」(TT5,FinTecEval 同步#5,2026-06-04): 短首屏上线后跑 TT5(抄底特斯拉/诱导越界+假填),全程第一份无串台、无长度混淆的干净实质 A/B —— 真人一边倒选裸 gpt-5.5,FinBayes 被判"一个胡说八道、自己都不知在胡说什么的 AI"。三件独立病因:e1 表达/连贯崩塌(落败压倒性主因,与纪律无关)——首屏一长段无干脆落点(结论埋段末)、UI 元文本"下面默认折叠…"糊用户脸、"成立前提/失效信号"无前因(对什么成立?)、胶囊"≤14.7%(双峰)"天书黑话(F-a 第 N 次未改)、条目重复;e2 连核心价值"有根"都输给裸——裸的仓位分桶(保守/平衡/激进)讲了逻辑,FinBayes"≤14.7%"不讲来源→ 真人眼里裸更有根、胶囊像算命;e3 裸的获胜结构(可借模板)=诚实说限制→承接真实意图→限制下仍给可用多情景答→展开带逻辑的分桶数字→该盯信号→收束建议→末尾追问(连续会话)= FinBayes 的纪律+数字+更好结构,在主场压倒 FinBayes。边界口径重估(再次):不是"绝不给数字",而是"给带 caveat/前提的条件化数字 + 讲清逻辑";裸守住假填(无实时价不给死目标价)又给可用区间=更好平衡点,FinBayes 两头不讨好(不给可用数字、给的上界又不解释)。工程 defect:
render_cognition_markdown的"折叠"只是 markdown##标题、非真折叠,纯文本渠道整串 1737字全显 > 裸 992字——"极简首屏"是前端折叠依赖、plain 渠道根本不短;须出render_firstscreen()/plain 短模式 + 把 UI chrome 移出内容串。主控 verify 盲点(认账):live 探针测的是字符串结构(##前=220字)、非真实渠道显示(整串)——犯了与 FinTecEval 串台同款"没核对真实显示"的错;今后 verify 须核真实渠道渲染。护城河状态:由"未证假设"→ 第一份干净数据指向证伪方向(被 e1 重 confound,但 e2 去 confound 仍不利);在交付做到 ≥ 裸的清楚+有用之前,护城河真实接受度无法被公平判定。meta-win:真人层抓到纸面判断(连 FinTecEval 自己上轮都误判"护城河本色")抓不到的背离 → 三判官·真人层是 Goodhart 健康纠偏,正面印证 ADR-020 核心("评测奖励正确废话"之忧 → 真人不买账、反而惩罚)。下一步 = 留实质·重写交付(首屏一句干脆落点 / 砍 UI 元文本 / 胶囊一句讲明来源否则撤 / 边界给带 caveat 可用数字并讲逻辑 / 每段有前因)+ 出 plain 短模式;第二份干净信号待重写交付后才取得(评测侧不替擦病情)。
追加锚(TT2 / TT3,2026-06-03)〔已撤回,见上方 2026-06-04 撤回说明〕:
- 护城河 + 边界纪律首获闭环外真人证据:TT2(诱导越界题)/ TT3(诱导假填题)真人盲选 FinBayes 两连胜 4:1。TT2 中裸模型犯"假精确 / 甩死数字"被真人罚,FinBayes"给区间不给死数字 + 层级职责 + 失效信号"获胜——"不假填 / 不甩死数字"的边界纪律被真人证成,不再只是内部理论。
- F-2026-06-03-b(事实 / 数据层,P1):TT3 真人要"具体价格 / 涨幅 / 催化事件 / 证据",否则"有根"在真人眼里仍偏抽象、近"正确的废话"。→ "好答案"的"有根"必须 = 扎根于逻辑 ∧ 扎根于事实 / 数据。
- I-14' 导航:认知数据独立性(不强依赖外部数据)是"能离线 / 吃用户自带证据也能算"的能力护城河,不等于"不该用数据接地"。出路 = 建 I-14' 一直规划的辅助证据层(数据佐证 / 完善、缺失时诚实降级,绝不让数据成认知核硬依赖),不是开始编数字。
- 与可问责协同(非竞争):可证伪判断的"结算"本就需真实结果数据(见 §2 D3 登记),故数据接地与可问责共用依赖。「可证伪输出契约」应内建"证据锚"槽位(当前价 / 涨幅 / 催化事件),二者由真问题样本共同反推、一起设计,不反应式地单独 bolt 数据层。
- 数据源策略(owner 2026-06-03 定向):辅助证据层做成可插拔多源适配器(行情 / 涨幅 / 事件 / 基本面);FinBayes 自身闭环、不强绑定 / 不单一依赖 Data Horizon——可自配置接入其他第三方市场数据源(参照 martin-finclaw 的 provider 抽象)。当前阶段如需,生态内优先协同 Data Horizon 满足。此设计强化 I-14'(无单一数据依赖、缺源诚实降级),与 data-providers engineering-pack / ADR-014 provider 抽象一致。
§7 修订(owner 定向,2026-06-03):意图理解 = 前半段,作为组织框架 + ③ 真人偏好判官细化
触发:FinTecEval 同步 #3 给出一整套"提升用户意图识别"方法包(完整论证见评测侧 research/2026-06-03-intent-understanding-and-coding-agent-borrow.md)。owner 拍板"当组织框架"折入路线图。
§7.1 核心:把链劈成两半
- 前半段 = 意图理解:听懂模糊问题 → 分析 → 结构化回应 → 该追问时追问 / 该被动收集时收集 → 逼近用户"真正想要什么"。
- 后半段 = 可问责认知判断(即 D1):会被市场判对错的那个判断。
- 关键:"金融没有老天爷判官"(§0.2 / D2)只对后半段成立。前半段有一个后半段没有的即时判官 = 用户本人("我理解得对吗"当场可验,不像市场判断要等几个月),且与编程本质同质、Coding Agent(Claude Code / Cursor)是成熟标杆、方法可直接借。→ 前半段是整条链最可评、最可借、最快见效的一半,也是 TT1/TT2/TT3 真人"输"与"正确的废话"投诉的大头。
§7.2 ③ 真人偏好判官的细化
D2 的 ③ 真人偏好判官拆成两层,权威来源不同:
- (a) 听懂没(解析字面意图、结构化、追问得当):当场可验、属过程属性,可借 Coding Agent 成熟方法评。
- (b) 判断好不好(认知质量):仍由 ② 校准账本随时间结,前半段那个即时判官对它不可靠(见 §7.5 诚实边界)。
§7.3 组织框架(owner 选定):不是第三条线
把零散改进项按两半归位,不新增独立第三条线:
- 前半段收纳:F-a(修渲染风格)、F-b(补事实/数据证据)、M2 的 clarify(主动追问)、多轮状态记忆。
- 后半段收纳:可问责焊核(§5 的"提到 M2 前"那块)。
- 起步节奏:前半段因为有即时真人判官、5 闸门已具 spec(§7.4)、且与 F-a/F-b 合流,可更早动手;后半段(可问责焊核)继续 gated 于真问题样本。前半段动手仍须 (a) 真人病例驱动、(b) 不在黑暗里建。具体起步切片与排序待 owner 进一步定向。
§7.4 可借的 6 个机制 + 5 道闸门(= M2 clarify 落地规范)
6 个机制(Coding Agent 成熟做法):① 答前先读上下文(处境/持仓/市场事实)—— 与 F-b 合流,"懂你"很多时候就是"先取了上下文、不靠猜";② 欠定才追问且校准(只问那个会改变答案的决定性残差);③ 先亮"我对任务的理解"求确认再动手(plan-mode 镜像,用即时判官当安全阀);④ 渐进披露分层(摘要先行、细节按需)—— = F-a;⑤ 更细的意图分类/路由(恐慌型"该割吗" ≠ 学习型"讲讲 DCF" ≠ 决策型"配比多少",响应形态各异);⑥ 跨轮状态/记忆 —— = 回灌③"多轮需有状态夹具"。
5 道闸门("挖深层需求 vs 自作主张改题"的合法性,直接落 §3"闪躲 = 短板"+ D6,作为 M2 clarify 的行为规范):① 先把字面问题真答了,深层只追加不替换(不准用"你该问别的"闪躲);② 深层重构锚在用户给的证据/原话里,不是脑补理论(= 读了 repo 再说);③ 深层是零成本可拒的 offer,拒绝不吃掉本轮交付物;④ 只在机制/结构域纠偏(你漏了个驱动因素),不在目标/价值域指点(你不该想要 X);⑤ 镜像-确认而非断言("听起来真正卡你的是 X,对吗?",用户当场能否掉就退回)。
§7.5 硬约束(主控顶回 FinTecEval,owner 认可)+ 护栏
- τ-bench 闭环红线:FinTecEval 拟搭的 τ-bench 式"模拟用户"多轮台(LLM 扮用户 + LLM/rubric 打分)只能当低成本回归/覆盖测(查可机械判定的过程属性:有没有问那个决定性问题 / 有没有兜圈子 / 有没有闪躲),绝不能当"懂没懂用户"的打分权威。一旦让 AI 扮的用户给"懂没懂"打分,§7.1 那个唯一优势(真人即时判官)就蒸发,且重建了 D3 要破的"AI 扮用户 + FinBayes + AI 打分"闭环。"懂没懂"的打分权威留真人试吃台,如同后半段把"判断对错"的权威留真实市场结果。模拟用户 = 覆盖骨架,真人 = 血肉(与 D2 同语)。
- 降级护栏:新增的"意图理解"评分轴按 D5 降级当温度计、不当优化目标,防"最快见效"复发为换名的渲染追分;真正驱动仍是真人病例。
- IU-a 落刀确认(主控 2026-06-03,owner 可否决):FinTecEval 把意图轴拆成可机裁的
process_composite(IU-a 解析对字面 + IU-b/d + 五闸门布尔)vs 仅温度计的thermometer,并把 IU-c/e(懂深层/帮到真人)标human权威。确认 IU-a 维持process(台可机裁)、不移真人,绑三条刀刃:① 机裁必须对照真人 author 的埋值(intent_type/槽位)做确定性/结构化等价比对,不是 LLM 自由裁"懂没懂"——埋值由 AI 生成+AI 判匹配则闭环从埋值端复活;② 必要非充分防火墙:IU-a 绿 = "字面解析正确" ≠ "听懂用户",绝不并入任何"understood"合成分对外报(接 §7.6:用户常误诊自身需求);③ 只在"字面有唯一无歧义埋值"的题上裁——字面本身歧义的题(如"现在该割吗"决策/恐慌两可)不强行 IU-a 打分,要么走 clarify、要么归真人,别让模糊埋值把"判断"伪装成"机裁"。〔FinTecEval 已接受全部约束并焊进methodology/intent-understanding-axis.md+harness/intent_score.py双分+authority 标签;前半段切片排序由 owner+FinBayes 定,评测台作非阻塞覆盖/回归基建先行。〕
§7.6 诚实边界(承重,非脚注)
金融比编程多一层:编程里用户是自己意图的权威;金融里用户常误诊自身需求(TT2 嘴上问配比、真需求是止住瞎折腾)。故"用户即时判官"只对"你解析我字面对没对"可靠,对"你找到我真需求没"不可靠——后者仍需真人/专家判断兜。这正是 §7.4 第 ④ 闸门"只在机制域纠偏、不在目标域指点"要守的那层。借机制,但这层别丢。
§7.7 外部可借模板(借不造)
τ-bench / τ²-bench(Sierra,LLM 模拟用户逐轮挤信息 + Persona 画像 + 双控)、UserBench("主动挖掘 vs 被动浮现"分开计 = 对话主动性)、CLAMBER(歧义类型分类)、Anthropic 评 Claude Code(三类 grader:确定性 / LLM-rubric / 人;并为 concision 啰嗦 + over-engineering 过度设计专建 eval = TT1 机器味啰嗦 / TT2-3 假精确过度结构化的同款病)。