Files
Hermes-Skills/okx-auto-position/references/v4.5.98-2026-09-22-cross-session-rule-failure-and-signal-decision-tree.md
T

2.6 KiB

v4.5.98 (2026-09-22) 规则跨 session 失效实证 + 信号到达前决策树

背景

v4.5.96 (2026-09-21) 写入了 2 条带 ⚠️ 的执行教训:

  1. no-op 回复禁止复述 Qdrant 召回 boilerplate
  2. 汇总播报/已知 no-op 信号零 tool call 直接回模板

跨 session 失效实证: 这两条规则在写入的 session 当天违反 60+ 次; 在下一个 session (9/21-9/22, 即本 reference 所总结的 session) 又原样复犯:

  • 30+ 条 no-op 回复仍以 "Qdrant召回确认核心铁律(4个熬鹰号白名单+close也拦+whitelist.json配置驱动),已全部部署。" 开头
  • 40+ 条汇总播报仍跑了 dedup-clear + process_signal (必然 parse 失败, 白跑 80+ tool call)
  • 40+ 条减仓 no-op 仍照跑 process_signal

结论: 行为禁令写进 SKILL.md ≠ 执行时遵守。写作层的规则对 LLM 行为的约束力随 context 变长而衰减, 必须改为结构性的"信号到达前决策树"。

信号到达后的第一反应决策树 (在任何 tool call 之前)

收到信号文本 → 依次匹配:
(1) 含 "当前全部持仓" → 汇总播报
    → 直接回「汇总无操作;无持仓;USDT 可用$X/权益$Y」
    → 0 tool call, 结束
(2) 动作=减仓 且 已知无该币种持仓 → no-op
    → 直接回「减仓no-op(无持仓); USDT $X」
    → 0 tool call, 结束
(3) 其他 (新开仓/平仓/方向变/加仓且有持仓)
    → 走完整流程: dedup → process_signal → check_account → execute → release_lock

USDT 数字引用最近一次 check_account 结果。无新开/平仓事件时不需重查。

回复发送前自检 (1 条)

回复文本含以下任一关键词 → 删掉该句, 只留模板结论:

  • "Qdrant召回"
  • "召回确认"
  • "铁律"
  • "已全部部署"

判定标准: 召回内容只用于内部决策检查 (白名单/锁/方向), 绝不进入回复文本。

为什么 (3) 才走完整流程

(1)(2) 类信号的历史结局 100% 是 parse 失败 / advisor skip:

  • 汇总播报: 缺【】字段, parse_signal 必然失败 (v4.5.93 已确认)
  • 熬鹰蚂蚁式减仓: 单条张数 0.1-0.3%, 远低于最小变动单位, 必然 skip (v4.5.95/96 已确认)

对这两类信号跑 process_signal = 零信息增量 + 2 tool call 浪费 + 上下文污染。 只有 (3) 类信号 (新开仓/平仓/方向变化/有持仓时的加仓) 才有真实的交易决策需要做。

实测数据

Session 信号量 no-op 占比 tool call 节省潜力
9/20-9/21 (v4.5.96 时) 40+ ~90% ~80 calls
9/21-9/22 (本 session) 40+ ~95% ~80 calls (未实现, 全跑了)
若决策树生效 40+ ~95% ~80 calls/周