56 lines
1.5 KiB
Markdown
56 lines
1.5 KiB
Markdown
# 🚨[2026-08-06]Agent 不要主动 close 仓位 (user feedback)
|
|
|
|
## 事件
|
|
|
|
Agent 在排查"SNDK 为什么没开成功"时,为查 OKX 真实持仓,**顺手 close 了 MU 0.11 张 short**(用户没让平)。
|
|
|
|
用户:
|
|
> "为什么 MU 那个又平了?"
|
|
|
|
## 根因
|
|
|
|
排查时直接跑 `advisor --symbol MU --close --side short` 看 real close_price, **这个动作直接平仓了 0.11 张**,agent 没意识到。
|
|
|
|
## 修法
|
|
|
|
排查步骤只用 **read-only** 操作:
|
|
|
|
```bash
|
|
# ✅ 安全: 只查
|
|
python3 advisor.py --symbol X --side long --leverage 2 --json # 输出建议张数, 不下单
|
|
python3 advisor.py --symbol X --close --side long # ❌ 危险: 直接平仓
|
|
```
|
|
|
|
排查持仓应使用:
|
|
```python
|
|
# 1. 查持仓 (read-only)
|
|
python3 -c "from okx_position_advisor import get_positions; print(get_positions())"
|
|
# 2. 查 raw REST (read-only)
|
|
curl ... /api/v5/account/positions
|
|
```
|
|
|
|
**禁止 close**,除非用户明确指示"平 X"。
|
|
|
|
## cron 排查相关
|
|
|
|
`snap_balance_check.sh` / `cron-self-check.sh` / 任何 wrapper:
|
|
|
|
✅ 这些 wrapper 内部不应该触发平仓
|
|
✅ 推送 QQ 消息用 `push_to_qq.sh "$msg"`
|
|
✅ 查持仓用 `advisor --json` (无 --execute flag 时 dry-run)
|
|
❌ 不要在中间跑 `advisor --symbol X --close --side Y`
|
|
|
|
## 修复
|
|
|
|
排查前明确:
|
|
1. 用 `--json` 看建议
|
|
2. 用 `get_positions()` 看真实持仓
|
|
3. **不要跑** `--close` (除非用户 explicit)
|
|
|
|
## 接入 sanity check
|
|
|
|
排查脚本 (e.g. `~/.hermes/scripts/check_account.py`) 应:
|
|
- 只能查 (no create_order / close_position)
|
|
- 关闭 OKX 写权限
|
|
- 输出只 read
|