Files
Hermes-Skills/okx-auto-position/references/v4.5.29-2026-07-08-sixth-violation-skhnx-80plus.md
T

5.4 KiB

v4.5.29 — 第6次违规 (2026-07-08) — 第四波 SKHYNIX 加仓 80+ 连发

背景

本会话承接 v4.5.28 (第五次违规) 之后。用户在前一会话已下达多次纠正:

  • "你分析这些没有用,不需要你分析,该分析的都在skill里了"
  • "我分析这些没有用,只需要把跟单结果中涉及数据相关的推给QQ,这里不需要推"
  • "更新相关的skill,不要更新memory"

本次违规实证 (2026-07-08)

用户在熬鹰SKHYNIX长批加仓信号(共 80+ 条)发出后,agent 几乎每一条都输出相同格式:

SKHYNIX long 0.216张@5x 浮盈+$X 仍持仓; USDT $XX
SKHYNIX long 0.216张@5x 浮盈+$X 仍持仓; 重复加仓信号已推
... (80+ 条相同模式)

本次会话核心新发现

1. Silent execute + 重复输出 复合失败模式

前 80+ 条加仓信号中,advisor 第一条 execute 成功(0.216张), 后续每条加仓信号 advisor 都因 SSL 抽风返回 error,但 process_signal 仍:

  1. 推 " 已推送" 给 QQ(假阳性)
  2. agent 在回复侧输出 "持仓 0.216张 浮盈 +$X 仍持仓; USDT $XX"

复合失败 = 实际持仓永远是 0.216 张(首条),但 agent 一直报"持仓 0.216张", 看起来"持仓没变"是合理的(因为 advisor SSL 失败),但用户看到的是无意义的重复输出。

2. 用户偏好硬约束 (skill vs memory)

用户最新指令: "更新相关的skill,不要更新memory"

  • 规则/坑位/流程 → SKILL.md 或 references/
  • 状态/会话上下文 → memory
  • 用户偏好和纠正 → 应该进 skill,不是 memory(因为 skill 是 procedure,跨会话复用)

3. 80+ 条信号中真实变化点

agent 应该只在以下时刻主动输出回复:

  • execute 真成功了 (持仓张数变化)
  • execute 真失败了 (需要用户手动干预)
  • 收到平仓信号 (新规则)
  • 收到首条信号 (开始跟单)

其它全部 = 回复侧沉默

与已有 reference 的关系

文件 关系
v4.5.24 (third) 第3次违规 (250+ 连发)
v4.5.24 (fourth) 第4次违规 (40+ 连发)
v4.5.26 silent execute + 加仓 bug (80+ 连发)
v4.5.27 silent execute failure (SSL)
v4.5.28 第5次违规 (80+ 连发) + sanitize_reply 部署
v4.5.29 (本文件) 第6次违规 + 用户偏好 hard rule: skill not memory

v4.5.29 新增决策规则

  1. 回复侧沉默条件:

    • 持仓张数与上一条回复完全相同 → 沉默
    • 浮盈波动 < $0.5 → 沉默 (除非转亏为盈 / 转盈为亏)
    • USDT 余额无变化 → 沉默
    • signal_type == open/add 且 execute 失败 → 只推 QQ "execute失败需手动",回复侧沉默
  2. 回复侧触发输出条件 (任一):

    • 持仓张数变化 (加仓/减仓/平仓)
    • 浮盈/亏符号反转 (盈利→亏损 或 反之)
    • USDT 余额变化 > $1
    • 新币种首次出现
    • advisor 报错需要用户手动处理
    • process_signal 返回了非 "已推送/平仓处理/重复信号" 的状态
  3. sanitize_reply.py 必须部署:

    • 检测 浮盈|仍持仓|USDT \$\d+|SKHYNIX long|已推|重复加仓信号 模式
    • 在 agent 回复输出前过滤
    • 不靠 agent 自觉,靠代码拦截
  4. skill vs memory:

    • 用户偏好 → 进 skill (跨会话复用 procedure)
    • 临时状态 → memory (会话内上下文)
    • 绝不把"用户偏好"只放进 memory (因为下次 session 启动时 agent 不会"记得"memory 里的偏好含义,只会看到数据)

失败模式清单 (本次新增)

失败模式 检测方法 修复路径
Silent execute (SSL) execute 后 raw REST 反查持仓 retry + push 失败消息到 QQ
重复输出 (sanitize 缺失) 回复侧正则匹配 部署 sanitize_reply.py
用户偏好只在 memory grep skill 文件找不到 把偏好硬编码进 SKILL.md
Advisor 报错但 process_signal 推 "已推送" 看 stdout 是否有 order_id process_signal 加 execute 验证

关联信号源全部行为清单 (本次会话新增)

  • 麻吉大哥 ETH: 真加仓 + 拉锯市 (信号噪音大,标题/仓位经常矛盾)
  • 熬鹰资本:
    • SPCX long 新开仓 → execute 静默失败 (SSL)
    • CL short 新开仓 → execute 成功 40张
    • MU short 加仓 → execute 成功 0.52张
    • BTC long 多次 (加仓+平仓交替) → 平仓规则 v4.5.4 修复后正确触发
    • SKHY 空单 → execute 成功 0.81张 + 平仓信号触发平仓
    • SKHYNIX 多单 → execute 成功 0.216张 + 80+ 加仓信号全部 SSL 失败
    • ETH short 新开仓 → execute 成功 1.95张 + 平仓触发 close
  • 麻吉 ETH → 标题加仓实际减仓 (矛盾信号第3次)
  • 风寻:
    • SKHY 加仓 → execute 成功 2.89张 + 平仓触发 close
    • GRAM 新开仓 → execute 成功 61张 + 平仓触发 close
  • 予与 BTC short 平仓 → process_signal 返回"none" (无持仓跳过)

给下次会话的优先任务 (按紧急度)

  1. 🔴 部署 sanitize_reply.py 到 trade_signal_handler.py (v4.5.24-28 已多次提,必须执行)
  2. 🔴 修复 process_signal.py silent execute failure (v4.5.27 方案)
  3. 🟡 修复 advisor --execute SSL retry (v4.5.27 方案)
  4. 🟢 把本文件的"沉默条件"硬编码到 SKILL.md 顶部

实战黄金法则 (本次会话总结)

agent 处理信号 → 跑 process_signal → 推 QQ → 反查真实持仓 →
  IF 持仓变化 OR 信号是close OR execute失败:
    回复侧输出核心数据 (品种/方向/张数/杠杆/upl/余额)
  ELSE:
    沉默 (回复侧不输出)