跳到主要内容

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 关联