ADR-023 · 方案 Z 对 martin-FinClaw 立场修正
背景
「方案 Z」是早期一份决议的代号(无独立定义文档,仅在 CURRENT-MILESTONE 与个人域 memory finbayes_repos.md 被引用)。它对第三方开源金融 agent martinpmm-Finclaw 的原始结论是 「只读、不复用」——可以读它的代码长见识,但 FinBayes 自己从头建,不借鉴、不集成其实现。
这个结论在 2026-06-04 被 owner 判定为错,原因有两层:
- 它建立在一个错误的自我判断上:方案 Z 默认 FinBayes 已经是个能与 martin 平起平坐的真智能体,"不复用"只是技术路线选择。但 2026-06-04 对 martin 的解剖暴露出——FinBayes 当时根本不是真智能体,而是一个"一次性问答函数"(见 CURRENT-MILESTONE §0):没有主回路、没有工具系统、没有真实数据接地、没有主动性。在这个前提下"不复用一个已验证的真 agent",等于主动放弃唯一的现成参照,闷头自我摸索。
- martin 是经真实使用验证、能力远高于裸模型直出的真智能体:放着这样一个一级参照不研究、不借鉴,是把"自建"误当成了"必须从零自创"。真正该守的边界不是"不碰 martin",而是"不直接 rebase 它的约 1.8 万行单体"——前者是自废武功,后者才是合理的工程谨慎。
决定
把方案 Z 对 martin 的立场从「只读不复用」修正为「研究 / 借鉴 / 集成,直到 FinBayes 在能力与质量上与之齐平」。
具体口径:
- 研究:以 martin 为一级参照解剖其 agent 骨架(主回路 / 工具系统 / 真实数据层 / 主动性 / 多渠道 / 护栏),产出对照分析,作为 FinBayes 建造的依据。
- 借鉴:借它已验证的形状与模式(如双层主回路、薄的每源适配器、心跳 skip/run 结构化判定),而非它的具体代码行。
- 集成:在设计 / 模式层把这些借鉴融进 FinBayes 自己的实现,干净重写,融入既有认知核与状态层。
- 守住的边界:不直接 rebase martin 的单体——它是 1.8 万行、自成体系的工程,整体搬进来会带进无关耦合且无法维护。借形不搬码。
已发生的借鉴 / 集成(audit trail,Phase 0→3)
本 ADR 是追认 + 记录,下列是修正口径落地的实际证据(供审计,回答"是否真参考过、不是黑盒自我摸索"):
- 蓝图本身是三个参考 agent 的对照解剖:金融真智能体骨架蓝图 由 9 个子代理的对比研究综合产出(一级样本 Claude Code / Hermes / martin-FinClaw),14 组件骨架是逐组件列三样本各自有无(yes/partial/no)再判定抽出的。Phase 0→3 全部依此蓝图推进。
- 方向纠正的诊断来自解剖 martin:「FinBayes 不是真 agent」这一判断(CURRENT-MILESTONE §0)由对 martin 的解剖逼出。
- 逐组件可追到 martin:主回路「借 martin 双层结构 + Hermes 四件分立」(蓝图建造顺序 1);护栏组件明确点出「martin 只有工具边界、缺输出自检」并据此要求 FinBayes 补足(蓝图组件 11)。
- 代码级引用痕迹:
src/finbayes/agent/instrument.py注释直接引用 martin 的_stooq_symbol形状与 OpenBB / CCXT 行业惯例;阶段 3 第四切片(市场感知标的解析)由 3 个子代理并行查 martin / 行业 / 本地参照后定稿,并据此否掉了最初过度设计的中央注册表方案。
范围与诚实限度
- 参考是前置集中 + 局部再查,不是每刀都回源:最深的一次参考是蓝图(9 子代理对照),它前置承载了大部分研究;之后阶段 3 四刀里,只有第四切片每刀单独回 martin 源码查证。第 1–3 刀(runtime 入口 / 信号投递 / 工具白名单)主要照蓝图的 martin 派生组件规格 + 闭内部审计缺口推进,未每刀重翻源码。这是合理的——蓝图已把研究做在前面。
- 蓝图之前的半年(M0→M2)是反例:那段确实是闷头优化"单次回答质量"的自我摸索,martin 当时正被方案 Z 标着"不复用",缺口直到 owner 逼着做 martin 对比才翻出。本 ADR 修正的正是那段的根因。
其它参考项目的处置
CurvatureLabs/finclaw(早期 FinBayes 半成品):按 owner 2026-06-04 定,在对 martin 的研究 / 借鉴 / 集成完成并齐平前暂不作主参照。例外:阶段 3 第四切片曾挖用其asset_resolver.py的别名表形状(如"大饼→BTC"),属一次性局部取用,非主参照。- 行业标准(OpenBB / CCXT / CoinGecko / yfinance 系):作模式佐证使用(如"原生符号 + 数据源搜索 + 薄适配器、不建中央表"的一致结论),不集成其代码。
- 许可:martin-Finclaw 为 MIT 开源;借鉴其形状与模式不构成许可问题,且本决定明确不搬运其代码。
连带影响
- CURRENT-MILESTONE §2「方案 Z」行 + §4 连带过期项第 2 条「待补轻量 ADR」→ 标为已落地(本 ADR)。
- 个人域 memory
finbayes_repos.md已反映此修正(martin 从"只读不复用"改为"研究/借鉴/集成"),与本 ADR 一致,无需再改。 - ADR 索引 §1 增列 ADR-023。
- 不影响任何不变量或字段契约:本 ADR 是参考策略层决定,不动代码契约、不动 INV-NN。