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 抵触的话:
- "不动 cognition ontology — 已 PASS 契约层是保护对象" — 与 ADR-025 §决策 3「旧版静态金融认知流水线: 实现抛弃 / 目的保留」直接抵触
- "骨架范式 ADR-025/026 是阶段 2 事项" — 错误把头号铁律及三线设计推迟,与 ADR-025 头号铁律「不在 ReAct 之外另架控制墙」性质不符
- "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.0 | baseline 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 化机械改名 sed | v2:ADR-024 11 项架构差异落地的工程实施 = 真去 martin 化(命名重整是其中一片,非全部) |
| 1.4 | INV-11 凭证脱敏 | 保留:PreToolUse hook 凭证脱敏 |
| 1.5 | (原方案不清晰) | v2:输出要素规范注入(方向 / 证据 / 失效条件 schema 贯穿工具产出 + 最终答案) |
| 1.6 | SOUL/AGENTS 灵魂重写 | v2:人格描述 = ReAct + 丰富扁平工具的 agent 自我认知;不写硬执行边界;聚焦认知形态 + ReAct 内循环节律 |
| 1.7 | 闸门跑 Package C | v2: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.md)claude/baseline-rebuild 分支本 ADR 之前已落 2 commits:
3abecb7baseline: 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 作为骨架方向」。ef94dd8audit(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),旧 docdocs/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 落字)