金融真智能体骨架蓝图(提案)
主控注(2026-06-04):本蓝图由 9 个子代理的对比研究 workflow 综合产出(一级样本 Claude Code / Hermes / martin-FinClaw + 次级 Codex)。一处需就地留意——下文 (B) 段几处提到的「M7.uq 凯利上限」早于 ADR-021 · kelly_cap 退役,应读作已退役:不确定性仍由双峰重尾后验承载,但「凯利仓位上限」这个形态已从代码移除。这恰好印证下文 (E) 的判断——旧上位文档的术语会渗进新产物。
重要前提:这是一份提案,不是开工令。 下面所有的组件归纳、金融场适配、差距判定、建造顺序与文档矫正建议,都在等待 owner 议定之后才能成为行动依据。蓝图经 owner 逐项确认前,不建任何东西、不改任何上位文档。本文的作用是把"真智能体到底由什么构成""FinBayes 现在缺什么""该按什么顺序补""上位文档哪里把产品定性带偏了"这四件事一次摆清,供决策。
议定结果(owner 2026-06-04 — 新会话从这里接,本节为最终口径)
owner 已读全文,骨架(组件 1–14 划分)与 (E) 上位文档矫正清单:认同。建造顺序经讨论做两处调整,本节为最终口径,覆盖下文 (D) 的原始排序((A)–(E) 保留作 9-agent 详细分析与依据)。
调整一 · 阶段 0 文档矫正切两类 + 换验证口径。 owner 要求先把文档层改透、消除"做着又被带偏"的顾虑;同时避开本项目自身的老坑("治理回路变熵源、长期 0 行代码、ROI 负")。做法:
- (A) 定调子的文档(战略愿景图、product-definition、里程碑路线图、不变量、architecture 的 frame 段)= 漂移的真正源头 → 全部改透,硬前置。
- (B) 讲实现细节的文档(architecture 深层实现段、各 engineering-pack 字段级契约、认知体系研究细节)= 非漂移源头,且建造前写死多半是编小说 → 只纠"旧框架断言"(即 (E) 给的"加 frame 护栏 / 重新定位",非重写),实现细节留给建造反哺。
- 换验证口径(最强防漂移锁):评测 / 验收关从"单次回答打分"换成"agent 行为门"——每阶段问"是否做出了上一阶段做不到的 agent 行为、是否超过旧的一次性函数"。度量什么就建什么。
调整二 · 问责退出早期、留作产品设计课题。 问责是差异化之一但非 owner 最在意;"好问责体验"四样本全无、业内无先例、最易做成记分牌式表演。收回原"阶段 1.5 手动结算"建议。 正式问责 / 校准系统(命中率 / Brier / 战绩账本)不进早期顺序,留作单独产品设计课题(真 agent 用起来、有真实手感后再设计其"好体验")。差异化的"可问责精神"不靠记分牌,而是 agent 在你某条旧判断的失效条件被市场触发时主动回来找你、对上次的话负责——这会从阶段 2 主动性(cron + 存好的 Judgment Record)自然长出,不需单独建账本。
最终建造顺序:
- 阶段 0(硬前置)· 文档矫正:(A) 全改 + (B) 纠框架断言 + 换 agent 行为验证口径。新会话第一件事。
- 阶段 1 · 最小可用真 agent:主回路 + 1 个工具 + 1 个真实数据源 + 把
synthesize_cognition从顶层降为被回路调用的一个认知动作 + 落一条 Judgment Record。验证关:演示一次多步回路(拉真实数据 → 喂认知核 → 产出并存一条带失效条件的判断)——旧单次函数结构上做不到,这是"回正轨"的证明。 - 阶段 2 · 主动性:heartbeat + cron;"主动回来找你"的可问责精神在此自然出现。
- 阶段 3+(原阶段 4)· 硬化铺面:护栏 / 持久化抗损 / 上下文记忆补强 / 多渠道 / 规划与子代理。
- 正式问责 / 校准系统:不在早期顺序,单独产品设计课题。
- 认知核(组件 13)已有,不在建造序列里;但阶段 1 接真实数据前它一直被幻觉数字喂养——这是接数据的紧迫性来源。
(A) 真智能体共识骨架(逐组件,简明)
判定方法:以三份一级样本(Claude Code / Hermes / martin-FinClaw,基于源码或 CodeWiki)为准,Codex 作为次级仅用于佐证。"普遍必备"指三份一级样本均实质具备;"可选/场景相关"指一级样本之间出现 no 或形态显著分化。
一个贯穿全部样本的元结论:真智能体 = 共享 runtime(认知核) + 多个前门适配器(壳) + 一条强制过权限/钩子的副作用管道 + 全程可回放的结构化事件流。 所有样本都把"认知核(模型推理)"和"骨架(回路/工具/记忆/护栏)"解耦——认知核只是装进骨架里的、可替换的大脑。这正是组件 1 到 12 普遍必备、而组件 13 与 14 因领域而异的根本原因。
| # | 组件 | CC | Hermes | martin | 判定 | 一句话定义 + 最佳实现要点 |
|---|---|---|---|---|---|---|
| 1 | 主回路 | partial* | yes | yes | 普遍必备 | 向模型发消息→有工具调用就执行并回灌结果→否则收敛终止的固定点迭代,带显式迭代上限和明确终止态。最佳:双层(外层并发派发+串行锁,内层纯 perceive-act-observe)、硬封顶不静默死循环、回路产出带类型的事件流。 |
| 2 | 工具系统 | yes | yes | yes | 普遍必备 | name→tool 中央注册表,每工具带 JSON Schema,统一经"校验→分发→结果信封回灌"。最佳:四件套契约、执行前递归 schema 校验、多来源同一抽象、{success,data/error} 信封、失败转状态不中断整批、重试交给下一轮迭代。 |
| 3 | 上下文工程 | partial | yes | yes | 普遍必备 | 决定每轮装配什么进窗口、token 预算、接近上限时如何压缩。最佳:分层有序装配、运行时元数据单独成块并标"非指令"防注入、压缩做成显式可观测事件、可换压缩引擎 + 压缩前钩子抢救关键事实。 |
| 4 | 记忆 | partial | yes | yes | 普遍必备 | 三层:短期(会话 transcript)、长期持久(跨会话事实)、检索。最佳:单一门面 + 多 provider 扇出(防竞争性表述)、记忆围栏防注入、可证伪学习记忆状态机(每条带 confidence/evidence + 生命周期)。 |
| 5 | 规划与拆解 | partial | yes | partial | 普遍存在·形态分散 | 把大目标分解为可追踪步骤。最佳:做成一个普通工具而非硬编码阶段,让模型自主决定何时拆;不必上重型看板;注意别过度逼模型先出完整 plan。 |
| 6 | 子代理 | yes | yes | yes | 普遍必备(自治度有争议) | 派生独立子 agent 承担聚焦子任务。最佳:受限工具面 + 单一对外出口(子 agent 不给发消息/不给再派生权,结果由主 agent 复述)、显式限额、级联取消;自治度取"显式触发 + 强限额"的稳健版本。 |
| 7 | 真实数据接地 | yes | yes | yes | 普遍必备 | 通过工具接真实外部数据源、感知世界状态,而非闭门造答案。最佳:严格分离"数据工具只返事实/认知核才下判断"、统一 provider ABC、每源包成带连接状态机的接入点、对外部输入默认怀疑。 |
| 8 | 持久化 | yes | yes | yes | 普遍必备 | 历史/配置/状态/记忆落盘,可恢复、可审计、抗损坏与并发。最佳:写锁协议(写前重读 + 并发 stale 检测 + 写前备份 + 0600 + auth-loss guard)、SQLite+WAL 带损坏检测、全事件流 rollout。 |
| 9 | 主动性与触发 | partial | yes | yes | 普遍存在·CC 缺定时 | agent 在无人提问时被定时器/事件唤醒主动干活。最佳:Heartbeat 周期唤醒→LLM 用结构化 enum 判 skip/run→有事才推 + CronTool(agent 自己排未来任务)、自动注入 prompt 必须扫注入。 |
| 10 | 多渠道交付 | yes | yes | yes | 普遍必备 | 同一核心通过多个前门(终端/IM/Web/IDE)对外服务,渲染/传输与认知核解耦。最佳:共享 runtime + 多前门适配器、消息总线双队列(核心永不直接碰渠道 API)、统一网关抽象。 |
| 11 | 自检与护栏 | yes | yes | partial | 普遍必备·深度分化 | 副作用前/后的多层约束:权限、沙箱、循环自检、审批、控制面保护、输出自检。最佳:deny>ask>allow 多源权限聚合、控制面文件 write-deny、循环自检(参数指纹+结果哈希防原地打转)、每个副作用强制过护栏管道。 |
| 12 | 可观测 | yes | yes | partial | 普遍必备·深度分化 | 把运行全过程结构化记录,支撑回放、成本对账、诊断、审计。最佳:一份 JSONL transcript 三用(记忆+可观测+审计)、usage/cost/context 余量做事件流一等公民、可插拔 trace + trace_id 串联全链路。 |
| 13 | 认知核(金融) | unknown | no | partial | 可选·金融域专属 | 产生金融判断的推理核心(估值/量化/置信度),区别于通用 LLM 推理。所有样本一致证明:认知核应是可插拔组件,而非与回路缠死。 |
| 14 | 问责/校准层 | partial | no | no | 可选·金融域专属缺口 | 把每条判断登记成带置信度、可在未来用真实结果核对的记录,事后自动对账、累计命中率与校准曲线。四份样本全部止步于此——这是金融域必须自建的地方。 |
* CC 的主回路实现被刻意委托出 wiki 视野,但 SDKMessage 流的阶段指纹(assistant/tool_use/tool_result/stopReason)完整可证,机制确证存在,故计入必备。
结论:组件 1–12 是真 agent 的通用普遍骨架,四份样本提供了成熟到可直接移植的工程蓝本;组件 13(金融认知核)和 14(问责/校准层)是没有任何样本具备的金融域专属层,必须 FinBayes 自建。
(B) 金融场版骨架(三反常处理 + 认知核与问责层的位置)
金融场有三个让通用骨架失效的结构性反常,贯穿每个组件的适配:
- 反常一·神谕延迟(oracle latency): 判断对错要数周到数月才揭晓,回路在 act→observe 闭环里拿不到"判断对不对"的即时反馈。
- 反常二·不可执行(non-executable): 监管约束下 agent 不允许产生任何指向真实资金的副作用动作。
- 反常三·神谕带噪(noisy oracle): 对错本身模糊,数据源相互矛盾,叙事即噪声来源。
三反常如何改写每个组件
组件 1 主回路: 终止态被根本改写——回路不收敛于"开多/开空答案",而收敛于一份 StructuredCognitionResult(10 要素动态组合)。因为神谕延迟,回路只能基于"证据是否齐全/事实空间是否完整/S1 是否通过"这类即时可得的过程信号收敛,绝不能把"预测准确率"当回路终止判据;结果对错的反馈走另一条慢回路(组件 14 的到期对账),与主回路时间尺度解耦。因为不可执行,可执行的 act 只限于调数据工具/调认知机制/写候选状态;因为神谕带噪,回路允许"以不确定形态收敛"(M7.uq 触发时输出双峰重尾后验 + 凯利上限),这与通用 agent 逼向单一答案的取向相反。
组件 2 工具系统: 工具分两族严格隔离——数据接入族(约 20+ 源)只返事实,认知机制族(M1–M8)只在 Synthesis 层编排。success 字段与判断对错彻底脱钩(只代表"返回了结构正确、可追溯到证据 ref 的数据")。执行类工具(下单/改持仓/碰 API key)在注册阶段就被拒绝注册——这是与通用 agent 工具系统最大的结构差异:通用 agent 默认 act 可改世界,FinBayes 工具系统被设计成对真实资金世界只读。数据仲裁推迟到 Synthesis 层按 MCA 桶处理,工具层不替模型做数据仲裁。
组件 3 上下文工程: 压缩时必须强制"抢救"成立条件/失效条件/反方证据/历史判断链进摘要(on_pre_compress 钩子),绝不能压掉。历史 Judgment Record 是召回的一等公民。与通用 agent"压缩=丢冗余"的直觉相反——反方证据在金融场是必须保留的非冗余信息。
组件 4 记忆: 长期记忆从"积累事实"改写成"积累待验证的判断"——Judgment Record 必须存成可在未来对账的形态(时间戳 + 成立条件 + 失效条件 + 可证伪断言)。复盘结果支持三态(还成立/部分成立/已失效),不强制二值化。永不写入执行凭证/真实持仓。
组件 5 规划: 验收门是过程性的(任务输出是否覆盖该任务类型默认必含的认知要素),而非"判断正确没"。市场含糊时强行拆出确定性计划会制造虚假精确,clarify 工具是比硬拆解更合适的前置手段。
组件 6 子代理: 不同视角子代理本就会给出相互矛盾的结论(估值看空/叙事看多)——这恰恰是金融场要的:主 agent 归并时把矛盾保留为多视角 + 反方证据,而不是裁剪成共识。这与通用 agent"子代理结果归并求一致"的取向相反。无长生命子代理跟踪判断对错(那由组件 9+14 承接)。
组件 7 数据接地: 感知只接地"当下事实",不接地"判断结局"(结局的接地是组件 14 到期时再次拉真实价格)。对真实资金世界严格只读。每条事实必须带 source+freshness 可追溯到 ref;数据降级时回答必须显式区分"已知事实/可推断/待补证据",而非用流畅语言填补空白。一条独有的反直觉不变量(I-14'):FinBayes 认知质量不强依赖外部数据——零外部数据、仅通用 LLM 时仍须正常工作,外部数据是辅助证据而非认知前提。
组件 8 持久化: 判断有生命周期,不是写完即终态——带后续复盘字段、到期前一直可被组件 9 唤醒。原判断与复盘结论同时保留形成时间线,不能用新结论覆盖旧判断。端到端阻断执行凭证。
组件 9 主动性: 这是定时触发在金融场的最大价值点。FinBayes 的 cron 比通用 agent 多一个独有职责:等待延迟的神谕、到点拉真实结果对账。主动信号以历史判断条件为中心(不是只按价格波动):Watchlist 对象的市场变化触及某条 Judgment Record 的成立/失效条件时触发复查,推送说明触及哪条历史判断、哪个条件。用 LLM 结构化判定 skip/run 应对触发条件本身带噪,避免噪声触发的信号轰炸。绝不主动触发任何交易动作。
组件 10 多渠道: 同一用户/Session/问题在不同入口的核心认知输出必须一致,入口层只决定呈现策略不重新做判断;表达密度可调(L0–L3)但判断质量恒定。Channel 输出必须保留认知/执行分工说明,显式标注"不作为交易信号"。短输出渠道压缩时绝不能把反方证据/失效条件压掉只留结论。
组件 11 护栏: martin 只有工具边界、缺输出自检是明确缺口——FinBayes 必须额外补金融输出护栏:S1 叙事-数字一致性子流程(每次综合输出前必跑)是核心,加免责声明/不可证伪断言拦截/合规过滤/与数据接地一致性自检。最强化的一道是认知/执行隔离墙:执行类工具注册层拒绝 + 输入边界拦凭证 + 输出端凭证样式过滤,三重端到端阻断。强制条件化表达(不给封闭的开多/开空)是金融独有的"反虚假确定性"护栏。
组件 12 可观测: 评测体系刻意避开"预测对不对"(因为对错延迟),改测"认知结构完整度"这类即时可观测的代理指标(D1–D11 共 11 维度),且按 MCA 7 桶分层防止全集平均掩盖局部退化。trace_id 串联一次判断全链路(数据源→机制 M1–M8 求解→S1 校验→结论),与组件 14 判断记账打通。审计 trail 永不记录执行凭证。
认知核(组件 13)的位置
认知核是 FinBayes 的产品本体,落到金融认知体系五件套:8 机制定义层(M1 金融对象本体/M2 信息源对齐/M3 时间维度/M4 场景/M5 事件传导链路/M6 金融规律/M7 行为偏差+不确定性/M8 可迭代矫正)+ MCA 7 分轴市场结构横切 + S1 叙事-数字一致性子流程 + 评测体系 + 迭代治理。
关键架构原则(三份样本一致印证):核与壳彻底解耦——五件套作为被主回路反复调用的可替换认知核插件,插入 Evidence+Synthesis 子系统。 认知核为延迟而生:产出的不是即时可验的预测,而是带成立/失效条件的条件化判断,把"何时该重看这个判断"前置编码进输出。它的输出契约永远是认知材料而非执行指令(结论字段是"条件化倾向"不是"开多/开空")。
问责/校准层(组件 14)的位置
这是把"一次性问答"升级为"可问责金融智能体"的决定性一层,FinBayes 的核心 P0,四份样本全无、必须自建。
拼装方式(复用现成件): 组件 14 记账(复用 CC Instinct 状态机:每条判断带 confidence+evidence + Pending→Active→Stale→Superseded→Retired 生命周期)+ 组件 9 定时触发(到期/条件触及唤醒)+ 组件 7 数据接地(再次拉真实市场数据)+ 组件 12 评测体系(D1–D11 + MCA 桶)+ 组件 8 持久化全事件流,合成 "判断→落账→延迟到期自动复盘→带噪结算→校准写账本" 的闭环。
问责锚点被监管约束倒逼改写:不能是"按这个判断交易的真实盈亏"(FinBayes 不下单),只能是"判断的成立/失效条件在市场上是否被触发、条件化倾向的方向性是否被事后市场演化支持"。结算不二值化(三态)+ 校准走 Brier/可靠性图而非命中率 + 按 MCA 桶分层校准。承认对错本身模糊,所以校准的是"置信度是否与事后印证频率一致"而非"判断是否正确"——这是与通用 agent 问责(对错清晰)的根本区别。
金融场专属新增组件(通用骨架里没有)
- S1 叙事-数字一致性横切子流程(发布前校验层):每个结论产出前必跑,检测主导叙事与数字证据是否一致,识别 4 类失败模式。专门承接神谕带噪——叙事本身就是噪声来源。
- MCA 市场结构横切维度(7 分轴):决定 Crypto vs US Stocks vs Cross Market 各自的运算参数,并让评测按 MCA 桶分层。应对"同一认知能力在不同市场结构下质量不一致"。
- 延迟神谕对账调度器(judgment reckoning scheduler):管理"一批悬而未决、等待数周至数月才能验证的判断",定时检查条件触及/时间到期,自动拉真实数据做三态结算并写校准账本。这是组件 9+14+7+12 在金融场拼出的复合组件,根源是神谕延迟。
- 认知/执行隔离墙:贯穿工具注册 + 输入边界 + 输出过滤 + 状态持久化的端到端结构性隔离。从架构上根除金融副作用能力,比通用护栏强一个量级。
- 金融执行凭证安全回应链:用户主动递交私钥/助记词/交易所 API key 时——不收/不存/不训练,提示风险并把可回答部分转成认知任务。
- 条件化输出契约 + 不确定性量化(M7.uq):强制每个判断输出为条件化倾向而非封闭答案,高不确定场景输出双峰重尾后验 + 凯利上限。同时应对不可执行与神谕带噪。
- 用户金融认知资产主权层(Watchlist/Judgment Record/Dynamic Profile + 查看/修改/清空三件套 + 候选→确认两步写入):金融认知资产是用户拥有、为跨周期判断演进和复盘服务,区别于通用 agent"系统拥有、为召回服务"的记忆。
(C) FinBayes 差距地图(has / partial / missing / miswired 一览 + 关键缺口)
一句话现状:FinBayes 是"有大脑、无身体"——唯一真正成熟的是组件 13 金融认知核(1400 行真算),但它被钉死在一次性问答函数里;作为真智能体的承重墙几乎全缺。
| # | 组件 | 状态 | 关键证据 / 缺口 |
|---|---|---|---|
| 1 | 主回路 | missing | orchestration/__init__.py:46-167 是 infer→assemble→synthesize(单次)→写 turn→eval 的直线 asyncio.run 管道。唯一的循环是 synthesis.py 里 JSON 解析失败的修复重试,不是 perceive-act-observe。这是"一次性问答函数"根因的代码证据。 |
| 2 | 工具系统 | miswired | providers/base.py:30-56 有完整 schema 脚手架(ToolSpec/to_openai_tool/LLMToolCall),openai_compat.py 已透传并解析回 tool_calls。但全 src 搜 tools= 仅命中 default_factory=list——从无调用方传入非空 tools。ToolSpec 只活在测试里。无注册表、无执行分发、无结果回灌、无校验管道。 |
| 3 | 上下文工程 | partial | context_assembly.py 已是单一可替换入口:token 预算 + 近窗选择 + 溢出旧轮 LLM 滚动摘要并持久化。缺:运行时元数据块、提示注入防御、cache 护栏、召回围栏、可换压缩引擎、语义检索。 |
| 4 | 记忆 | partial | 短期有(session_turns + session_summaries);长期有雏形(judgment_records/watchlist_objects 是确认态资产)。但检索仅 SQL 近窗 + 单会话,无跨会话事实注入 system、无检索围栏、无 confidence/evidence 可证伪学习状态机。 |
| 5 | 规划与拆解 | missing | 全 src 无任务拆解/TODO/看板。orchestration 是固定两类 task_type 的硬分支,不是模型自主拆解。types.py 的 BackTrigger 是 S1 自检产出的建议性死标签,synthesis.py:940 明写"本轮不执行回路"。 |
| 6 | 子代理 | missing | 全 src 无 spawn/delegation/并发派发/资源限额/mailbox。 |
| 7 | 真实数据接地 | missing | pyproject.toml 依赖仅 pydantic/pyyaml/openai——零数据源库。posterior 双峰拟合聚的是 LLM 自己编出来的 scenarios 数字,MCA 七轴也是 LLM 凭文本判断,纯闭门造答案。这是 FinBayes 可信度根基,且认知核当前是 garbage-in。 |
| 8 | 持久化 | partial | 有真 SQLite 骨架:迁移 runner + 两步写(candidate→确认)+ append-only audit + TTL sweep。缺企业级抗损:无写锁协议、无 WAL、无损坏检测/健康守卫、无 auth-loss guard、无全 reasoning-step 事件流 rollout(不可完整回放推理全过程)。 |
| 9 | 主动性与触发 | missing | 全 src 无 heartbeat/scheduler/cron/webhook/tick 运行态。annotation/sla_queue.py 只算 due_at,无东西去扫到期、无唤醒回路。纯被动:必须有人调用才动。 |
| 10 | 多渠道交付 | partial | 有渲染层雏形且已核壳解耦(rendering/markdown.py 三入口)。但仅止于渲染:无真实渠道适配器、无消息总线、无 BasePlatformAdapter、无产品前门入口。 |
| 11 | 自检与护栏 | partial | 有输入侧凭据拦截(__init__.py:64-81)+ 输出侧软+硬约束(system prompt 硬边界 + markdown.py 两条正则拦价值域越界/假事实断言)。缺:deny>ask>allow 权限聚合、控制面 write-deny、运行时循环自检、PreToolUse 管道。当前是"靠 system prompt 软约束"——正是 martin 被点名的短板形态。 |
| 12 | 可观测 | partial | 有结构化审计底座(audit_events 表 + usage 埋点)。缺:trace_id 串联全链路、token/成本/失败率聚合、trace 插件、context 余量事件、reasoning 全过程落盘——不满足"事后回答这个判断当时基于什么数据走了哪步"的金融问责诉求。 |
| 13 | 认知核 | has | FinBayes 唯一成熟且差异化的部分。synthesis.py(1400 行)真算:MCA 七轴分桶、S1 一致性裁决、posterior 双峰拟合(stdlib k=2 聚类)。types.py(20KB)是完整领域 schema。隐患:被与回路缠死,且组件 7 缺失导致喂的是幻觉数字。 |
| 14 | 问责/校准层 | missing | JudgmentRecord 带 validity/invalidation_conditions/created_at(可证伪要素的容器),但全 src 搜 settle/reconcile/brier/calibrat/hit_rate 零命中。判断写进去就是死档,posterior 给了分布却从不结算。 FinBayes 核心 P0。 |
需更正的一处任务前提: 状态表并非"从未接线"——orchestration/state_actions.py 调 submit_candidate、orchestration 写 session_turns+audit 确实接了,只是只接在直线管道与显式用户拉取动作上,从未接进任何回路或主动触发。
关键缺口三连(互为前提): 组件 1 主回路 + 组件 2 工具系统 + 组件 7 数据接地。这三者共同把"闭门认知核"变成"接地的循环 agent"。其次是组件 9 主动性(直击"一次性问答"根因)与组件 14 问责闭环(核心 P0 差异化)。
(D) 建造顺序建议(从差距出发——这是建议,不是开工令)
目标:把已经磨得很利的认知核(组件 13)接进一个真主回路 + 最小工具集 + 一个真实数据源,先让"最小可用真 agent"端到端跑起来,再逐层补主动性与问责闭环。下面的阶段划分是建议性的里程碑,排期与取舍由 owner 议定。
阶段 0(前置)· frame 对齐
在动任何代码前,先完成 (E) 的头号文档矫正,尤其是把里程碑路线图里"agent 循环排到 M5"这条结构性偏移纠正。否则即便建了主回路,后续里程碑预算仍会被单次回答优化吸走。这是建造的真正前置依赖。
阶段 1 · 最小可用真 agent(承重墙三连)
三者互为前提,应作为一个里程碑端到端打通,而不是分三个里程碑串行。
- 主回路(组件 1): 建真正的内层循环——向 provider 发消息→有 tool_calls 则执行并回灌→否则收敛终止,带显式 max_iterations 硬封顶 + 明确终止原因。把现有
synthesize_cognition从顶层降级为"被主回路调用的一个认知动作"。 借 martin 双层结构 + Hermes 四件分立。 - 工具系统(组件 2): 复用已有的 ToolSpec 脚手架(它已经接好一半,只是没人填 tools)——补 name→tool 注册表 + 执行前 schema 校验 +
{success,data/error}信封 + 执行分发器。把数据源、状态写入、对账都包成工具。 - 一个真实数据源(组件 7): 建独立
data/层,先接一个真实源(如 yfinance 行情,Crypto 单市场),严格"数据工具只返事实/认知核才判断"。接真实数据后 posterior/MCA 才不再是 garbage-in。
依赖:三者闭环;阶段 1 完成 = 认知核第一次被装进会循环、会接地的身体里。终止态收敛于 StructuredCognitionResult,不收敛于决策(金融场反常一的回路改写)。
阶段 2 · 让 agent 动起来(主动性)
- 主动性触发(组件 9): 建 Heartbeat(周期唤醒→LLM 结构化 enum 判 skip/run→有事才推)+ CronTool。这是直击"别做成一次性问答函数"根因、最贴 FinBayes"主动盯盘"产品形态的基建。自动注入 prompt 必须扫注入。
依赖:阶段 1 的主回路 + 工具系统 + 数据接地。
阶段 3 · 把"问答"升级为"可问责"(核心 P0)
- 问责/校准闭环(组件 14): 复用 CC Instinct 状态机作内核,扩展现有 JudgmentRecord(加可证伪断言 + 目标价/时间窗 + 当时置信度)→ 阶段 2 的 cron 到期自动拉真实价格对账 → 三态结算(还成立/部分成立/已失效)→ Brier/可靠性图按 MCA 桶分层写账本。
- 可观测打通(组件 12): 补 trace_id 串联全链路,与组件 14 判断记账打通(并行可做)。
依赖:组件 14 = 组件 9(定时)+ 组件 7(拉真实数据)+ 组件 8(持久化)+ 组件 12(事件流)的复合。这是延迟神谕对账调度器,通用 agent 完全没有。
阶段 4 · 硬化与铺面(可并行/延后)
- 护栏硬化(组件 11): 补金融输出护栏管道(S1 已有雏形)+ deny>ask>allow + 认知/执行隔离墙(执行类工具注册层拒绝已是设计,需落实)。
- 持久化抗损(组件 8): 补写锁协议 + WAL + 损坏检测 + 全 reasoning-step 事件流 rollout。
- 上下文/记忆补强(组件 3/4): 提示注入防御、召回围栏、跨会话事实注入。
- 多渠道(组件 10): 消息总线双队列 + 渠道适配器。务实路径:不必一上来多渠道,核已解耦,后续挂 IM/Web 不重写。
- 规划/子代理(组件 5/6): 非当务之急。主回路稳定后做"规划即普通工具"和"显式触发+强限额子代理"的稳健版本。
优先级总览: 阶段 0(frame 纠偏)→ 阶段 1(主回路+工具+数据,最小真 agent)→ 阶段 2(主动性)→ 阶段 3(问责闭环,核心 P0)→ 阶段 4(硬化铺面)。组件 13 认知核已 has,不在建造序列里,但阶段 1 完成前它一直在被幻觉数字喂养,这是接数据的紧迫性来源。
(E) 上位文档矫正清单(按优先级)
总判定:FinBayes 上位文档对"FinBayes 是什么"的定性是分裂的(mixed)——越往工程下游、越往近期实际交付,越退化成纯"单次问答函数"(single-answer)。 agent 元素(持续认知循环、主动信号、状态资产)从未被立为产品第一性骨架,而是被埋在靠后章节、写得很轻。真正把工程带偏的是两处结构性框架污染:(1)里程碑路线图把 agent 的循环本体"主动信号"排到 M5;(2)实际在建的 M0/M1.5/M1.6 100% 是单次回答优化,由单次回答打分坐标系驱动验收——度量什么就建什么。
头号(high)
1. product-definition.md —— 污染最重的承上启下文档(frame: mixed)
- 把 §8"持续认知循环"+ 主动信号从第 8 章提到 §1 之后,作为产品第一性定义:开篇即说"FinBayes 是一个围绕用户金融判断持续运行的认知 agent——有循环、有工具、有状态;自然语言问答是它最常用的入口之一,不是它的全部"。
- §12 验收里把"主动信号/主动复盘循环"立为一等公民:增加 agent 行为级验收(主动信号是否真触发、是否链回正确 Judgment、被采纳率),不要让成功口径只剩"用户回访"这类问答产品指标。
- §4 问题族/任务类型表前加强约束:这张表定义的是 agent 的"入口意图识别 + 单轮任务组织",不是产品边界;状态循环(§8)与之同等重要,实施时不得只建表不建循环。
- §7.3 机制层字段加 frame 护栏:深字段不等于 agent;严禁把"把字段算真/算深"当成里程碑的全部(直接回应 M1.5/M1.6 偏移)。
- §3 状态资产正名为"agent 的工作记忆 + 自主触发条件源",而非"用户的历史记录"。
2. architecture.md —— frame: mixed
- §2 或 §25 增加架构级不变量:FinBayes 产品本体是"带自主循环的认知 agent",主动信号循环是 identity 级能力,不是晚期里程碑的增量功能;任何路线图不得把这条循环排到状态化(M1)之后太远。
- 重排里程碑:让最小的"状态 + 自主触发循环"在 M1/M2 就端到端打通(哪怕只监控 1 类失效条件、只对 1 个 Fin Object),而不是把主动信号整体压到 M5。可保留 single-shot 作 M0 骨架,但必须在路线图显式标注"M0–M4 仍是 pre-agent 阶段、M5 才补 agent 本体"是已知风险并给缓解。
- §9.2 Task Orchestration 加 frame 说明:它是 agent 的"单次回合编排",跨回合自主循环由 State Management 主动信号触发器承接,两者是 agent 的两个半。
- §5 认知流转主线图把循环从"用户是否沉淀"的可选支路改为默认闭环;§6 场景集补充更多自主行为场景,纠正 8:1 的被动/主动比例。
3. m1_5-cognition-realization.md —— frame: single-answer
- 戴 frame 护栏:包顶部声明"M1.5 提升的是 agent 在一次循环内产出的认知质量,它不推进 agent 的循环/状态/自主性;M1.5 的存在不得被解读为 FinBayes 的工程重心是单次回答"。
- 重新评估 M1.5 与 agent 循环建设的优先级:在投入又一个里程碑打磨单次回答前,先确认 agent 最小自主循环是否已端到端可见;若否,考虑把 agent loop 最小切片插到 M1.5 之前或并行。
- 验收从纯"单次回答认知分(D 维度)"扩展到"这些更深的字段是否真被 agent 循环消费"(如 posterior/失效条件是否进入主动信号触发逻辑)。
4. m1_6-expression-rendering-layer.md —— frame: single-answer
- 戴 frame 护栏:声明渲染层优化的是 agent 单次输出的可读性,属必要但非核心;严禁让"答案可读性"连续占据头号里程碑而把 agent 循环无限后推。
- 重构评价坐标系(关键杠杆):在 P/U/D 之外新增 agent 行为维度(自主循环是否运行、主动信号是否命中、跨回合状态是否被有效复用)。只要指南针只测单次回答,团队就会一直只建单次回答——这是 Goodhart 式框架污染。
- 启动 M1.6 前做一次显式 frame 复核:统计已交付里程碑(M0/M1.5/M1.6)几个在做单次回答、几个在做 agent 循环;若结论是"N 个全在磨答案、0 个在建循环",据此暂停渲染层后续(M/L),优先建 agent 最小循环。
中等(medium)
5. strategic-whitepaper.md —— frame: mixed
- 第一节愿景图把单向管道(Info→Brain→User→Exec)改成显式闭环:加入"市场变化→主动触发→复盘→更新判断→影响下次认知"的回流箭头,与 product-definition §8 对齐,让战略层第一眼就是 agent 而非函数。
- 把"主动信号/主动复盘触发"从 §4 一句话提升为与"结构化输出"并列的产品形态支柱,明确写出 FinBayes 产品形态是"一个持续监控用户判断成立/失效条件、在市场变化时自主发起复盘的金融认知 agent",单次问答只是它的一个入口。
- §1"短期形态"补一句定性:即便第一阶段交付对话入口,产品本体是 agent(循环+工具+状态)不是问答 API;"短期形态=对话入口"不等于"短期形态=问答函数"。
- 把"连续认知资产"明确正名为 agent 的状态层,而非仅"比通用 AI 多了记忆"的卖点。
6. m0-walking-skeleton.md —— frame: single-answer
- 接受 M0 作为最小骨架可以是 single-shot(合理的 walking skeleton),但必须在包顶部加显式 frame 声明:"M0 是 agent 的最小切片,不是 agent 的形态定义;FinBayes 产品本体是带状态和自主循环的 agent,M0 故意先不实现循环,但实现者必须知道循环是接下来要建的主体,不能把 M0 的 single-shot 形态误当成产品成型"。
- 要求里程碑路线图对"何时 agent 循环端到端可见"给出明确承诺时点并前移,避免 single-shot 惯性一路延续到 M5。
- M0 接口设计预留 agent loop 挂载点(主动触发器接口签名即便 stub 也应在 M0 出现并标注其在 agent 架构中的中心地位)。
收尾提醒:本蓝图为提案。 头号纠偏(product-definition / architecture / M1.5 / M1.6 四份)与建造顺序(阶段 1 承重墙三连为最小可用真 agent)都待 owner 议定;经议定前,不建任何东西、不改任何文档。