# 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/周** |