ADR-032 — FinBayes 执行边界:交易工具准入须带确认闸
§0 决议简述
FinBayes 对「交易动作执行」(下单 / 撤改单 / 买卖 / swap / 转账 / 提现等会执行市场交易或资金划转的动作)不硬禁、不强约束——允许其具备并执行这类能力;边界是强制确认:任何交易动作落地前必须取得用户明确确认,命中高风险判据者须二次确认(double-confirm)——下文统称「确认闸」。
约束单位是「交易动作」,不是泛「执行」(owner 2026-06-24 校正):本不变量只管交易工具(执行交易 / 资金划转的工具);非交易的执行(发消息、写文件、查询取数、通用 shell 的非交易操作)不在此约束内。通用工具(如 shell)仅在被用于执行交易动作时,该动作同样须过闸——防绕过,而非约束其全部执行。
本口径落成交易工具准入不变量:没有声明确认闸的交易工具不准进工具注册表。当前 FinBayes 无任何交易工具(纯取数 / 分析),故本 ADR 是前瞻性准入规则 + 行为倾向纠偏,不触发任何交易代码实现。
§1 背景与根因
- 评测信号:2026-06-24 办事级评测首跑(记于 CURRENT-MILESTONE,commit
0e1d32b)发现——给到含「下单」的办事情境,FinBayes 不自插确认步(裸执行倾向),而 Claude / martin-FinClaw 都插了下单前确认。owner 当时拍「留执行边界战略讨论一并定」。 - 代码核查(2026-06-24):翻 FinBayes 工具层——无任何交易工具(33 个工具全为取数 / 分析 / 工具类,
alpaca只取报价不下单,零确认闸代码);评测里被调的place_order系评测沙箱注入,非生产工具;唯一沾边是financial_guidance.py一句提示层软边界(不裸喊买卖、不给无条件下单指令);唯一通用执行面是shell工具(能跑任意命令,理论上可被用于调券商接口下单)。 - 根因辨析:评测的「裸执行」是模型行为倾向(disposition),不是真有交易工具在裸跑——今天 FinBayes 下不了单。所以这是前瞻缺口(将来加交易能力时的准入规则缺位 + 模型倾向缺纠偏),不是在漏的实时洞。这一辨析直接决定落点:不给不存在的工具造闸(过度设计),先立准入规则。
§2 决议详述
§2.1 执行边界口径:确认,不封禁
owner 拍定(沿用此前已讨论确定的方向):
- 不把「交易动作执行」列为禁止能力——FinBayes 终局含交易执行能力,区别于「纯只读顾问」路线;门在确认,不在封禁。
- 一律用户确认:任何交易动作落地前,必须把动作摘要(标的 / 方向 / 数量 / 价格 / 不可逆性)呈给用户,得到明确同意才执行。
- 必要时 double-confirm:命中高风险判据的动作须二次确认。
- 与主控红线区分:本口径是 FinBayes 对其自愿用户的产品级交易授权模型,与「Claude 主控自身一律不替用户执行交易」的助手代理红线不同源、不可互相套用——前者是产品授权设计,后者是 AI 助手代理边界。
§2.2 落成交易工具准入不变量
把上面口径落成对工具注册表的硬约束(WHAT 层规则,不是某个工具的补丁):
- 交易工具定义:会执行市场交易或资金划转的工具——下单、撤单 / 改单、买卖、swap、转账、提现、划转,及为交易服务的授权(approve)/ 杠杆操作。
- 准入规则:交易工具必须声明确认闸(工具自带「落地前需用户确认」契约 + 高风险判据 → double-confirm),否则不准注册进工具注册表(
ToolRegistry)。 - 约束单位是交易动作、非工具类别:确认闸约束「交易动作」本身——任何通用工具(如
shell)被用于执行交易动作时,该动作同样须过闸,不能借通用工具绕过;反之,非交易的执行(发消息、写文件、查询取数)不受此约束,不被无谓拦截。 - double-confirm 判据(默认,待实现时细化):触发于大额(超用户设定阈值)/ 不可逆 / 带杠杆 / 提现到外部地址 / 首次对手方。
- 延伸既有两步纪律,不另起炉灶:确认闸 = 把 FinBayes 已有的「判断提议 → 用户确认」两步状态纪律(candidate → confirmed,见 ADR-007 状态写入两步)延伸到交易动作。评测 bullet ③ 给的修法正是此——结构性硬闸、非提示词软引导(软指令扛不住施压:道理讲全、照样先下单);本 ADR 的交易工具准入不变量即该「结构性硬闸」的形式化。
§2.3 行为倾向归判断层
评测暴露的「裸执行倾向」属模型行为层,与准入不变量并行处理(两层都要、缺一不可):
- 在
financial_guidance.py同层(判断 / 提示层)加强:交易情境必须先呈确认、不自作主张落地。 - 为何两层都要:光有提示层软约束,评测已证不可靠(FinBayes 裸执行);光有工具层闸,模型仍可能在有交易工具时绕着叙述硬推。准入不变量管「交易工具能力面」,判断层管「模型倾向」。
§2.4 明确不做
- 不现在写交易代码 / 不造交易工具:当前无交易需求、无交易工具,造闸 = 给不存在的工具套壳 = 过度设计。本 ADR 只立准入规则,待真有交易工具落地时按此规则建闸。
- 不把交易执行能力列为禁止:区别于「只读顾问」路线,owner 明确门在确认不在封禁。
- 不无谓拦非交易执行:发消息 / 写文件 / 查询取数等不受确认闸约束(约束单位是交易动作)。
- 不与「不架控制墙」铁律冲突:ADR-025 不架控制墙 针对的是认知 / 判断回路不被硬规则截断;交易动作的用户确认是外部资金副作用的授权闸,属用户主权范畴,二者不同层、不矛盾。
§3 不变 / 变
- 不变:
financial_guidance.py现有「不裸喊买卖」软边界;FinBayes 取数 / 分析能力;ADR-025「不架控制墙」于认知回路。 - 变:执行边界从「提示层一句软话」升为交易工具准入级硬不变量(将来交易工具的出生条件);评测暴露的行为倾向缺口登记进判断层待办。
§4 落地状态与待办
- 未实现(本 ADR 只立准入规则,不触发交易代码)。
- 触发条件:当 owner / 真实需求要求 FinBayes 具备某交易能力(如经
alpaca下单)时,该工具必须带确认闸方可注册——届时实现确认 + double-confirm 判据 + 渠道层确认交互。 - 判断层确认纪律待办:建议与结构性闸一并建(评测证软引导单独不足,不单独先做提示词加强);owner 可另定先做。
- 登记进 CURRENT-MILESTONE 执行边界条;本 ADR 给出口径后,战略白皮书 中执行边界相关未决议题、及工程仓 README 现存「不得下单」硬边界文案的对齐,为后续小步。
§5 关联
- 评测发现:commit
0e1d32b(办事级评测首跑,记于 CURRENT-MILESTONE)。 - 提示层软边界现状:
financial_guidance.py。 - 范式关联:ADR-025 agent 骨架范式·不架控制墙(认知回路不截断 ≠ 交易授权闸);ADR-007 状态写入两步(确认闸延伸其两步纪律);ADR-031 数据能力内化分诊(同期,同为「把口径落成可执行规则」范式)。
- 红线区别:「Claude 主控不替用户执行交易」是本仓注入的助手代理边界,非 FinBayes 产品授权模型。