4.2 KiB
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 分跑) |
实战结论
- agent 必须主动监控(cron + advisor errors)
- 用户重复纠正的规则 → 写代码硬约束(不止文档)
- 静默即错 — 任何静默失败都要主动推
- 不要主动 close 用户没确认的仓位 — "只查不操作"
- 真成交 ≠ 推算 — 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 输出必须对齐)