跳到主要内容

ADR-028 骨架范式即时生效 + 阶段 1 范围按 ReAct + 三线重判

状态

accepted(owner 2026-06-07 晚拍板)。本 ADR 是 ADR-025 / ADR-026 的「即时生效」声明 + 阶段 1 Step 1.0–1.7 范围的具体化,不修订 ADR-025 / ADR-026 本身。

✅ 重核完成 + Step 1.2 解暂停(owner 2026-06-07 晚):6 仓内外循环 call-graph 实证 + Tier 2 实跑(catalog v2)已出结论。头号铁律成立且强化;否决范围收窄(见下方 §重核结论 D-9);pivot 形态拍定。Step 1.2 恢复,按 §重核结论的阶段 1 形态推进。本 ADR D-1/D-2/D-3 的否决范围由 D-9 精炼。

背景

2026-06-07 晚,FinBayes 工程化落地准备阶段。主控会话向工程会话转发启动指令,工程会话推进到 Step 1.1 集成审计后产出"Step 1.2 必做=0 项 / Step 1.7 闸门 = Package C 30/30 PASS 已 PASS / 去 martin 化 = sed 改名 / 慢循环延后阶段 2"等结论。

主控复盘发现根因 = 转发指令含 3 条与 ADR-025 抵触的话:

  1. "不动 cognition ontology — 已 PASS 契约层是保护对象" — 与 ADR-025 §决策 3「旧版静态金融认知流水线: 实现抛弃 / 目的保留」直接抵触
  2. "骨架范式 ADR-025/026 是阶段 2 事项" — 错误把头号铁律及三线设计推迟,与 ADR-025 头号铁律「不在 ReAct 之外另架控制墙」性质不符
  3. "Step 1.7 闸门 = Package C 30/30 PASS 已 PASS" — Package C 入口 run_async(mode=analysis) 走 orchestrator.py 的 static DAG cognition(FinBayes 旧版 static pipeline 实现)= 工程价值参照,不是 vs martin 6 维度闸门通过证据

owner 选择不再发新会话承接(避免会话间信息降噪 / 漂移 / 对不齐),由本主控会话直接承担工程化落地,角色合并 = 战略 + 主控 + 执行 + 审计。owner 2026-06-07 晚拍板:路径 C(并行起本 ADR + Step 1.0 baseline import)+ 10 条认知锚 + 闸门同条件锁同 provider/model。

决策

D-1 · 骨架范式即时生效

ADR-025 头号铁律及三线设计 自本 ADR 落定起即时生效,不是「阶段 2 事项」。

  • 头号铁律:不在 ReAct 之外另架控制墙(含 L0 Pre-router / 静态 DAG dispatch / 任何形式的预分类预路由)
  • 三线(ADR-025 §决策 3/4/6 锁):
    • 即时应答线(= 快循环):ReAct + 丰富扁平工具;规划 / 自检 / 子任务全作 LLM 可选工具
    • 输出要素规范(= 数据契约):贯穿工具产出与最终答案的格式约束(方向 / 证据 / 失效条件)
    • 事后复盘线(= 慢循环):独立 daemon,松耦合,不进 ReAct 进程;回灌走 feature flag 默认只进 dashboard

D-2 · finclaw/cognition/ 定性

FinBayes 旧版 5/20–5/26 6 天密集工作产出的 finclaw/cognition/(约 6,325 行 taxonomy + DAG orchestrator + evidence model + synthesis validator + widget projection)= static pipeline 错实现

  • 目的保留:方向 / 证据 / 失效条件 schema 是真目的
  • 实现抛弃:taxonomy 静态表 + 静态 DAG orchestrator + dispatch 映射,作为 ReAct 外架的控制墙整体抛弃
  • schema 代码复用 vs 重写:待重构时定,不预先承诺
  • 重构方向:纯 ReAct 主回路 + Plan-and-Solve / Plan-and-Execute / WorkflowTool 范式组合作为 LLM 可选工具

证据基础(不外推普适规律):参考 agent 骨架范式 catalog 7 仓实地核证 + owner 实测:

  • 7 仓核证的 6 个真 agent 主回路全部是 ReAct(跨 Python/TS/JS、跨通用/coding/金融)
  • Plan-and-Solve / Plan-and-Execute 在 Claude Code / Opencode 中实测验证 = 适合作 ReAct 内工具,不适合作主回路
  • 事后复盘线 7 仓全员缺席 → FinBayes §9 在这块是领先创新
  • owner 实测:FinBayes 旧版 static pipeline 远弱于 Chelae 结构化;Chelae 结构化弱于 martin 纯 ReAct

说明:以上是 3 个具体方案对比 + 7 仓现象的局部证据,不外推为"结构化程度与表现负相关"普适规律。本 ADR 据此选择纯 ReAct + 三线骨架作 FinBayes 重构方向,因为:(a) 实测证据指向同一方向;(b) FinBayes 不做反潮流方案的实验性押注;(c) 备选 Plan-and-Execute / Plan-and-Solve 已被实测验证仅适合作 ReAct 内工具。

D-3 · 阶段 1 Step 1.0–1.7 范围重判

原 handoff-anchors 2026-06-06-stage-1-baseline-not-regressed.md 阶段 1 方案基于「保护 cognition 契约层 + 集成审计接通孤岛」假设设计,本 ADR 锁定后重判:

Step原方案(基于错前提)v2 方案(按 D-1 + D-2)
1.0baseline import commit已完成(commit 3abecb7)。措辞瑕疵不 rewrite history,见 §工程仓现有 commit 处理
1.1审 cognition 接通度(10 类集成审计)v2 重判:vs martin 6 维度 head-to-head 同条件范围审计。finclaw/cognition/ static DAG 不接通而是 ReAct 重构对象;martin ReAct 既有能力是参考实现。审计焦点 = ReAct 主回路 + 工具白名单 + 慢循环 daemon 雏形差距
1.2集成强化(接通 cognition 孤岛)v2:ReAct 主回路骨架立起(如 martin 不够直接借/重写)+ 工具广度补齐到 vs martin 不弱(含 options / institutional / portfolio / alpaca / stooq)+ 慢循环 daemon 雏形(独立进程,feature flag 默认 dashboard)
1.3去 martin 化机械改名 sedv2:ADR-024 11 项架构差异落地的工程实施 = 真去 martin 化(命名重整是其中一片,非全部)
1.4INV-11 凭证脱敏保留:PreToolUse hook 凭证脱敏
1.5(原方案不清晰)v2:输出要素规范注入(方向 / 证据 / 失效条件 schema 贯穿工具产出 + 最终答案)
1.6SOUL/AGENTS 灵魂重写v2:人格描述 = ReAct + 丰富扁平工具的 agent 自我认知;不写硬执行边界;聚焦认知形态 + ReAct 内循环节律
1.7闸门跑 Package Cv2:vs martin 6 维度 head-to-head 同 provider / 同 model / 同 case 集只强不弱。Package C 复用作 FinBayes 旧版工程价值参照(5/26 Kimi 30/30 PASS baseline 可复用做回归不退化测)

D-4 · 闸门定义校准

Step 1.7 闸门 = vs martin-FinClaw 6 维度(输出质量 / 执行效率 / token 消耗 / 成功率 / 工具调用深度 / 结构化产物完整度)同条件 head-to-head 只强不弱(不是「不退化」)。

FinBayes 旧版 Package C 30/30 PASS = FinBayes 旧版 static cognition 实现的工程价值参照(schema 跑得通 + 30 case 可执行)= 回归测试 baseline,不是 Step 1.7 闸门通过证据。

同条件硬约束(owner 2026-06-07 拍):

  • 同 provider(FinBayes 与 martin 配同一个 LLM 后端)
  • 同 model(不同 model 能力差污染对比)
  • 同 case 集(30 case 复测;扩 case 集时两侧同步)
  • 建议同 temperature / seed(provider 支持则锁)

D-5 · 测试 provider 安排

5/26 Kimi 30/30 PASS 已有 baseline → 复用 Kimi 作闸门 provider:

  • FinBayes 改造后 30 case vs 5/26 旧版 baseline = 回归不退化测
  • FinBayes 改造后 30 case vs martin 30 case = 闸门只强不弱测
  • 两侧同 provider 安排:owner 终端就位 Kimi gateway,主控会话 sandbox 通过 env var 注入 provider/key(路径 C)

如换 provider,两侧 baseline 同步重跑。

D-6 · 主控会话角色合并 + 风险应对

本会话原 = 战略 + 主控 + 审计,合并为 战略 + 主控 + 执行 + 审计 + 集成。

风险 = 同会话自审无 fresh 视角。

应对:

  • 关键节点(本 ADR / 三线骨架第一刀 / Step 1.7 闸门跑)调 Codex / Claude sub-agent 做独立 review
  • owner 终端 live 跑 = 最终 L8 真人验收(不可替代)

D-7 · live 跑路径 C

owner 一次性注入 env var(provider 配置 + key + model)→ 主控会话内全程能跑 live + 离线测试。

硬纪律:

  • API key 不落盘(不进 commit / 日志 / print)
  • env var 仅 session 内 in-memory,不写文件
  • gateway 经济额度由 owner 控(不滥用)
  • 沿用 INV-11 PreToolUse hook 凭证脱敏(commit / log 二次防护)

重核结论(owner 2026-06-07 晚,D-9)

D-1/D-2/D-3 起草时基于 catalog v1(模块级印象)。owner 指出后做了 6 仓内外循环 call-graph 实证 + Tier 2 实跑(catalog v2),据此精炼。

D-9.1 · 否决范围收窄(范式三分)

D-2/D-3 原文「静态流水线 / Plan-and-Execute 一律否决」范围过宽。按 catalog v2 §6 范式三分精炼:

结构所在层实证结论对 FinBayes
控制流 / outer-loop 结构负面(Chelae router 收拢实测弱 + 旧版绕过 ReAct 反例)(头号铁律成立且强化)
inner-loop 工具结构中性偏正(Claude Code WorkflowTool / 子 agent,control 归主 LLM,强 agent 采用)允许(阶段 2 gated on need)
输出投影结构正面(Opencode 按需 forced schema)采用(按需,机器路径)

头号铁律「不在 ReAct 外架控制墙」只否决第一行。finclaw/cognition/ 旧版的错是三重叠加(静态流水线当 outer-loop 主路径 + 绕过 ReAct + plan 编译期写死),D-2「实现抛弃 / 目的保留」不变,但「重构成什么」多了 inner-loop 工具化与输出投影两条被实证的路。

D-9.2 · martin 是阶段 1 地板,不是目标

「比 martin 只强不弱」是阶段 1 底线闸门。FinBayes 真实对标强通用/coding agent(Claude Code WorkflowTool + subagent fan-out + plan-mode、Hermes tool-search + background-review、Opencode plan-mode + 按需结构化)。

D-9.3 · 结构是展示层投影 + 软质量指引,不穿透内循环

内循环(认知核)= 纯 ReAct,唯一目标内容质量,不被输出结构约束、不为填 schema 降质。高质量内容产出后 project(按任务 + 按渠道,downstream):Web/Desktop/Mobile → 动态 widget;CLI/TUI/MCP/API → 清晰结构化排版或散文;机器消费者(慢循环/eval/case 入库)→ 读结构化字段。旧版 projections.py 保留复用,orchestrator.py static DAG 抛弃,MP-4 17 字段×7 任务矩阵降为内循环软质量指引 + 投影层字段选择依据,不作 forced toolChoice。

D-9.4 · 阶段 1 形态拍定(替代 D-3 表的 v2 方案细化)

纯 ReAct 主回路(借/重写 martin loop) + 扁平金融工具白名单
+ MP-4 软质量指引(system prompt,认真编码金融 procedure: 风险四维/DCF/可比/事件 checklist)
+ PreToolUse hook(INV-11 凭证脱敏)
+ 末答提取层 α/δ 双口子(藏开关后,30-case A/B 比质量定默认)
δ=末答双产出(自由散文 + MP-4 结构字段,一次生成,忠实) ;
α=Markdown 分节 + 轻量 parse ;
→ StructuredCognitionResult → projections.py 投影(Web widget/CLI 排版/机器字段)
+ 扩展点预留(不建): WorkflowTool / SpawnTool / 慢循环 daemon
  • 点 1 决议(owner):金融 procedure 早期价值大 → 阶段 1 用 MP-4 软指引认真编码金融标准流程 + 闸门/eval 埋采集点测「软指引够不够」(= WorkflowTool 的 gating 信号)+ 扩展点按金融 WorkflowTool 具体设计;但 WorkflowTool / fan-out 的建设留阶段 2 gated on 实测 need。
  • 点 2 决议(owner):阶段 1 α/δ 双口子都实现,30-case 实测 A/B 比质量(δ「同时填散文+字段」是否分心降质),数据定默认走哪条。
  • 慢循环:阶段 2,但 schema 字段阶段 1 留全;且按 Tier 2 T2-3 发现(Hermes 后台自省静默无痕),FinBayes 慢循环必须 dashboard 可观测,不学 Hermes 静默。

D-9.5 · Step 1.2 解暂停 + v3 范围

Step 1.2 恢复,范围按 D-9.4。工程仓 docs/design/finbayes-integration-audit-v2.md 的 Step 1.2 子项据此细化(Step 1.2-a ReAct pivot 改为「借/重写 martin loop + MP-4 软指引 + α/δ 双口子 + projections 复用」,WorkflowTool/fan-out 移出阶段 1)。

工程仓现有 commit 处理(audit trail)

工程仓(路径见 memory anchor finbayes_repos.mdclaude/baseline-rebuild 分支本 ADR 之前已落 2 commits:

  1. 3abecb7 baseline: import Codex G0→G2 closeout + Package C Live PASS — Step 1.0 内容正确(FinBayes 5/20–5/26 工作落 git 解工程卫生债),措辞「Codex G0→G2 closeout / Package C Live PASS」措辞有偏差(Codex 是 actor 非归属;Package C 是工程价值参照非闸门)。不 rewrite history。本 ADR 锁定后正确措辞 = 「import 5/20–5/26 FinBayes 旧版 static cognition + tests + design docs 工作树落 git,作为基线 audit 锚,不代表采纳 static cognition 作为骨架方向」。
  2. ef94dd8 audit(step-1.1): cognition×martin 集成审计 ... — Step 1.1 v1 基于错前提(「保护 cognition + 接通孤岛」)做出结论「Step 1.2 必做=0 项 / Step 1.7 = Package C 已 PASS」。保留 commit 作为 audit trail。本 ADR 锁定后产出 Step 1.1 v2 重判 audit doc(路径 docs/design/finbayes-integration-audit-v2.md),旧 doc docs/design/finbayes-integration-audit.md 顶部加 1 行 retraction note 指向 v2 + 本 ADR。

handoff-anchors/2026-06-07-governance-side-update.md 中「不动 cognition ontology」「ADR-025/026 是阶段 2」等表述,本 ADR 锁定后作废,保留为 audit trail。下次主控更新该 handoff 时引用本 ADR 作矫正源。

后果与边界

  • 阶段 1 实际工作量增加:原方案延后到阶段 2 的慢循环 daemon 雏形 / 工具广度等大部分回到阶段 1(vs martin 闸门只强不弱要求);阶段 2 减负
  • 阶段 1 闸门可严肃跑出:本 ADR 锁定后 Step 1.7 闸门跑出来才是真闸门,不是 Package C 包装
  • 本会话责任增加:主控合并执行后,本 ADR 是工程化落地的认知锚定文件,下游一切 commit / audit doc / 简报必须引用本 ADR
  • 未决六不动:本 ADR 不预设交易 / 下单 / 执行边界,与未决六(战略白皮书 §10)开放议题相容
  • 不改 ADR-025 / 026 本身:本 ADR 是即时生效声明 + 阶段 1 具体化,不修订上位 ADR

关联资产

  • ADR-024(基线切换 + 工作流执行范式)— 上位
  • ADR-025(骨架范式定型)— 即时生效对象
  • ADR-026(INV-13 重定义)— 配套
  • 战略白皮书 §10 未决六 — 边界开放议题
  • 战略白皮书 §9 — 双时间尺度
  • commons/references/2026-06-07-agent-skeleton-paradigm-catalog.md — 7 仓核证证据基础
  • CURRENT-MILESTONE.md §0.5 — 本 ADR 锁定后下次更新
  • 工程仓 handoff-anchors/2026-06-07-governance-side-update.md — 本 ADR 后部分内容作废
  • 工程仓 commits 3abecb7 / ef94dd8 — 见 §工程仓现有 commit 处理

决策权

owner(2026-06-07 晚口头拍板,本 ADR 落字)