跳到主要内容

阶段二 cognition 认知形态决策预研简报

这份是什么:主控会话为阶段二头号架构决策做的预研,给出建议与拍板选项。这份不是什么:不是决议——动 cognition 架构是 owner 的事,本文只把待决问题摆清、给一个有理由的推荐。

关联事实源:ADR-028 骨架范式即时生效 D-2/D-3ADR-025 骨架范式定型当前里程碑 §0.5

§1 先纠一个会卡住讨论的误解:旧 A/B/C 已经过期

owner 记忆里的阶段二三选一(出自 2026-06-06 状态锚)是:

  • A = 把 cognition 重塑为 ReAct、保留契约层;
  • B = 反向矫正 §9、承认 plan-and-execute 合法;
  • C = 上层 ReAct + 下层契约化产出的混合(主控当时倾向 C)。

这套框定已被 2026-06-07 的骨架范式重核(ADR-028)实质改写,照搬会浪费一轮讨论

  1. B 已被否决。ADR-025 头号铁律「不在 ReAct 之外另架控制墙」+ ADR-028 D-2 的 7 仓实证(6 个真 agent 主回路全 ReAct;plan-and-execute 只适合作 ReAct 内工具;owner 实测旧静态流水线最弱)已经把方向锁死在纯 ReAct 主回路。B 不再是候选。
  2. A 与 C 的主体已经在阶段一落地了。1.2-a pivot 已拆掉「金融问题被旁路进静态 DAG」的控制墙,金融问题现在走 ReAct 主回路(= A/C 的「上层 ReAct」);契约层以 δ 结构字段 + cognition/projections.pymodels.pyrenderers.py 复用的形式保留下来(= A/C 的「保留契约产出」)。换句话说,主控当时倾向的 C 已经基本实现,不需要再选

结论:阶段二不是「在 A/B/C 里选一个」,而是收尾 ADR-028 D-2 明确留到重构时再定的那一件事,外加两件 D-1 列为「阶段二 gated」的扩展。下面 §2 把真正剩下的三项摆出来。

§2 真正剩下的三个未决项

S1 · 静态 DAG 机器的处置(ADR-028 D-2 明确 deferred 的唯一项)

现状finbayes/cognition/ 整个 6,325 行还在仓里。其中 ReAct 新路径真正复用的只是产出/投影部分(projections.py 951 行、models.pyrenderers.pyentrypoints.py,加 agent/cognition_extraction.py 引的 schema)。而控制墙机器——orchestrator.py(688)、engine.py(511)、execution.py(1304)、router.py(562)、planner.py(124)、dispatcher.py(269),合计约 3,458 行——ReAct 路径已不走,但仍被 loop.py 里 DEPRECATED 的 /cognition 旧分支、agent/tools/cognition.pycli/commands.py 引用着,且还在被测试覆盖。这是「弃而未删」的状态:阶段一为了零回归只用开关旁路、没删码。

ADR-028 D-2 原话:目的保留、实现抛弃,但「schema 代码复用 vs 重写:待重构时定,不预先承诺」。这就是 S1。

选项

  • S1-a 删控制墙、清式复用契约层:删掉 orchestrator/engine/execution/router/planner/dispatcher 及其 DEPRECATED 入口,把仍在复用的 projections/models/renderers 收编成 ReAct 路径的正式输出契约模块。约 -3.5K 行。
  • S1-b 留作 audit、只摘依赖:保留代码做历史参照,仅断开 loop.py/cli 对旧路径的引用,标清 DEAD。
  • S1-c 全留:维持现状(开关旁路)。

主控建议:S1-a。理由:(1) 死控制墙是 ADR-025 头号铁律的反面教材实物,留在主包里会持续诱导「金融问题该不该走特殊通道」的旧思路回潮;(2) 1.7 闸门一旦签字、新 ReAct 路径定为生产默认,旧静态路径就没有任何运行价值,3.5K 行死码是纯维护负担 + 测试噪音;(3) 真目的(方向/证据/失效条件 schema)已在 δ + projections 里活着,删的是实现不是目的,符合 D-2。前置条件:必须等 1.7 闸门签字确认新路径不弱于 martin、且 5/26 baseline 回归不退化之后再删(删早了丢回退后路)。审计价值靠 git 历史保留,不靠仓里留死码。

S2 · 内循环结构化工具的引入时机(D-1 列「阶段二 gated」)

现状:ADR-028 把 Plan-and-Solve / WorkflowTool / subagent fan-out 定为「可作 ReAct 内的 LLM 可选工具,gated on 实测 need」。阶段一已落地一个——多标的并行 compare_assets(1.2-b)。C3(BTC vs NVDA)串行 20+ 工具撞 cap 是已记录的 gating 信号。

选项:要不要、何时把更多结构化能力(如通用 WorkflowTool、子任务 fan-out、规划工具)加进来。

主控建议:不预先加,由实测拉动。1.7 闸门 + FinTecEval 的 N1/N3 评测会暴露「哪些题型 ReAct 扁平工具吃力」。把那批失败案例作为 gating 证据,缺什么补什么,一次加一个并验证不降质。不要在没有实测缺口时预先铺结构——这正是旧静态流水线犯的错。

S3 · 慢循环(事后复盘 daemon)的建设(§9 领先创新,7 仓全缺)

现状:ADR-025 三线里的「事后复盘线」(独立 daemon、松耦合、不进 ReAct 进程、回灌默认只进 dashboard)尚未建。这是 §9 相对 7 个对标仓的领先点,也是 FinBayes「判断跟进 + 校准」产品价值的载体。

选项:阶段二是否把慢循环雏形立起来。

主控建议:阶段二建雏形,但排在 S1 之后。它不是对比 martin 的闸门项(martin 也没有),所以不影响阶段一收尾;但它是 FinBayes 区别于「又一个 ReAct 问答 agent」的关键,且 FinTecEval 的 N4(判断跟进 + 校准评测)依赖它落地才能跑。建议阶段二中段启动,与 FinTecEval 的 N4 评测设计并行。

§3 与「未决六」的关系(别越界)

S1/S2/S3 都是架构/工程形态决策,不碰「认知/执行边界 + 交易执行约束」——那是战略白皮书 §10 未决六的唯一登记位,t=now 不预设。本简报不触碰执行边界,三项都可在不动未决六的前提下推进。唯一需注意:S2 若将来引入能触发外部动作的工具,须先过未决六,不能借「加个内循环工具」绕过去。

§4 建议的拍板动作(给 owner)

  1. 确认旧 A/B/C 作废,阶段二按 §2 的 S1/S2/S3 三项推进。
  2. S1:批准方向 = 1.7 闸门签字后删静态 DAG 控制墙(S1-a),清式保留契约层。删前作为一个独立工程切片,主控审计。
  3. S2:批准「不预先加、由实测拉动」原则,gating 证据来自 1.7 + FinTecEval N1/N3。
  4. S3:批准阶段二中段启动慢循环雏形,与 N4 评测设计并行。

以上是主控建议。任何一项 owner 可改可否;S1 的删码动作在 owner 点头 + 1.7 签字两个条件都满足前不执行。