Files
Hermes-Skills/okx-auto-position/references/v4.5.47-2026-08-06-batch-snapshot-and-self-check.md
T

4.2 KiB

v4.5.47 (2026-08-06) 批量实战教训:BTC 锁/锁推送缺失/平仓不解锁/close 0.091 拒单/self-check

🔴 三大类问题(2026-08-06 单 session)

1. 锁机制问题

  • 8/4 23:10 予与实盘 BTC 做空减仓:signal #45 due 锁 熬鹰资本 BTC long → 反向 → 静默拒绝 ❌
  • 关键 bug: 锁了不推送 QQ,用户以为 bug
  • 修复: process_signal.py + push_to_qq('🔒 跟单被锁') 显式推送
  • 附: close 信号自动 release_lock (用户原话"现在都平仓了,肯定解锁啊")
  • 附: 每次推送都附 _locks_status_text() (所有锁状态)

2. PnL 字段问题

  • 用户原话:"你算不出来就把字段删了吧"
  • 之前: advisor 用 unrealizedPnl (浮盈, 不准)
  • 之前: 推送显示 "+2.96 USDT" 但 OKX app 显示 "-1.9 USDT"
  • 修复: 平仓推送删 unrealizedPnl 字段, 加 💡 实际盈亏请到 OKX app 查看
  • 保留: advisor 内部 fillPnl (真成交字段) 写入但不推送

3. advisor 0.091 张拒单

  • advisor 给 0.091 张 SNDK 2x (margin $78)
  • 实际 OKX 最小 0.01 张变动 → 0.091 不是 0.01 整数倍 → 拒单
  • advisor 标记 "done" 没真下单 → 假阳性
  • 修复: advisor 实际跑 0.126 张 (0.001 整数倍) → 真下成功

🔴 cron 脚本位置铁律 (用户原话:"你也不主动检查")

事件: lottery cron 报 "Script not found" 30+ 小时没人发现

  • 根因: 我创建的 lottery_特码_cron.sh 在 ~/.hermes/skills/trading/lottery-hk/scripts/ (skill 目录)
  • 实际: cron 期望 ~/.hermes/scripts/ (用户级 scripts)
  • 修复: cp wrapper ~/.hermes/scripts/ + cronjob update script <name>

新增 cron cron-self-check.sh:每小时 0 分自动检测 + 修复 + 仅 error 时推 QQ

  • 静默模式: 正常不推
  • 主动记录: 任何 wrapper 缺失 → 复制修复 → 推 QQ

🔴 用户主动反馈模式 (2026-08-06 实战)

用户反馈 触发原因 修复
"余额不够的要通知啊,不然以为是Bug" 锁/余额不足静默 process_signal 显式推 QQ
"你算不出来就把字段删了吧" unrealizedPnl 不准 平仓推送删字段
"现在都平仓了,肯定解锁啊" close 不解锁 close 自动 release_lock
"每个 push 都要带锁状态" 不知道当前锁了什么 _locks_status_text() 附加
"定时任务跑失败也不主动检查" 没监控 cron-self-check.sh
"错要主动记录" advisor 失败不报 order_errors.log + monitor
"不要主动 close" 我误 close MU "只查不操作" 原则

新增 references/文件

  • references/v4.5.47-2026-08-06-batch-snapshot-and-self-check.md (本文)
  • scripts/cron-self-check.sh (每小时 0 分检测 cron wrapper)
  • scripts/order-errors-monitor.sh (每小时 5 分扫 advisor 错误)

关键代码改动总结

文件 改动
process_signal.py 锁推送(always)+ close 自动 release_lock(已锁)+ status='failed' 显式推送 + exit code 2
okx_position_advisor.py _log_error() 写 order_errors.log (set_leverage/place_order/sl_algo 失败)
signal_tracker.py list_locks() 已有,但原 format_close_message 没附
~/.hermes/scripts/cron-self-check.sh 新增(cron 09ca1313822c 小时跑)
~/.hermes/scripts/order-errors-monitor.sh 新增(cron 81bd534cebfc 小时 5 分跑)

实战结论

  1. agent 必须主动监控(cron + advisor errors)
  2. 用户重复纠正的规则 → 写代码硬约束(不止文档)
  3. 静默即错 — 任何静默失败都要主动推
  4. 不要主动 close 用户没确认的仓位 — "只查不操作"
  5. 真成交 ≠ 推算 — PnL 算不出就删字段,让用户去 OKX app 看

教训元教训(meta-lesson)

用户行为模式:

  • 用户会主动纠正之前犯的错(钝感)
  • 用户不要解释,要直接修
  • 用户要主动(cron/errors/locks),不要被动
  • 用户担心 bug 被误判(锁/余额/精度/PnL 都要明示)

agent 行为模式:

  • 主动监控 + 主动记录 + 主动推送(everything)
  • 锁/关闭/平仓 = 都要 push_to_qq
  • advisor execute 后必须 check_account 验证
  • crontab 脚本必须在 ~/.hermes/scripts/(不在 skill 目录)
  • 数值精度 = 0.001 整数倍(advisor 输出必须对齐)