Files
Hermes-Skills/okx-auto-position/references/v4.5.15-silent-repeat-template.md
T

77 lines
3.9 KiB
Markdown

# v4.5.15 — Silent-repeat reply template ban (2026-07-08)
**Captured from**: 2026-07-08 Telegram session, ~30 consecutive SKHYNIX long add-signals from 熬鹰资本 (3.06 → 400+ 张, 1% < change per signal). User observed agent producing the exact same one-liner ~30 times.
## The exact anti-template (DO NOT WRITE)
```text
SKHYNIX long 0.216张@5x 浮盈+$X 仍持仓; 重复加仓信号已推
```
Variants observed in this session (all banned):
- `SKHYNIX long 0.216张@5x 浮盈+$0.32 仍持仓; 重复加仓信号已推`
- `SKHYNIX long 0.216张@5x 浮盈+$0.12 仍持仓; 重复加仓信号已推`
- `SKHYNIX long 0.216张@5x 浮盈+$4.18 仍持仓; 重复加仓信号已推`
The pattern: any reply that only re-states the current holding + floats + adds "重复信号已推" / "重复加仓信号已推" is forbidden when `process_signal.py` returned one of:
- `⏭️ 重复信号,跳过`
- `⏭️ 噪声信号(<1%变化),跳过`
- `⏭️ 平仓信号完全重复跳过`
- `✅ 已推送 | X X x | N张 | 性价比XX` AND no actual position change
## Why it kept happening
1. `process_signal.py` returned the dedup string → agent thought "I should still report something" → wrote the holding state.
2. `position not changed` was treated as worth reporting (it isn't — QQ already has the latest state).
3. No hard rule said "if dedup hit, output ≤ 5 chars or nothing".
## Hard rule (v4.5.15)
When `process_signal.py` returns `⏭️` or `✅ 已推送` AND no new position was opened AND no position was closed:
- **Reply ≤ 1 line, ≤ 30 chars**
- Preferred: `⏭️` (literally one emoji, or two: `⏭️ dedup`)
- Acceptable: `⏭️ SKHYNIX 仍持仓` (no floats, no USDT)
- **Forbidden**: re-stating floats (`+$0.32`), USDT balance, or "重复加仓信号已推"
- **Forbidden**: writing a NEW line of analysis ("熬鹰持续加仓中, 等平仓信号")
When `process_signal.py` returns `⚠️ advisor错误: ...` (SSL/timeout/raw REST also failed):
- Reply: `⚠️ {SYMBOL} advisor失败,无execute,USDT $X` (1 line, the USDT is allowed because user needs to know if balance changed)
- Do NOT spam this for every consecutive signal — after the first occurrence, switch to `⏭️ 仍SSL抽风`
## Session-timeline reference
| Signal # | process_signal result | Reply agent gave | Reply should have been |
|----------|----------------------|------------------|------------------------|
| 1 | `✅ 已推送 SKHYNIX long 5x 0.216张` | `SKHYNIX long 0.216张@5x 已跟, 浮盈+$0.30, USDT $39` | (correct — first execution) |
| 2 | `⏭️ 重复信号跳过` | `SKHYNIX long 0.216张@5x 浮盈+$0.32 仍持仓; 重复加仓信号已推` | `⏭️` (or `⏭️ SKHYNIX 仍持仓`) |
| 3-30 | `⏭️ 重复信号跳过` | (same 1-line re-state) | `⏭️` every time |
| ~10 | `⚠️ advisor错误: SSL` | `⚠️ advisor SSL报错无execute` | `⚠️ SKHYNIX advisor失败,无execute,USDT $39` |
| ~15-30 | same `⚠️` | repeated | `⏭️ 仍SSL抽风` |
## Why this complements v4.5.10/13
- v4.5.10 banned "三选一/Y持/Y减/Y加" — these are decision-tree replies, not status replies.
- v4.5.13 banned repeated state replies — but the agent kept producing a "soft" version (one line, status only, no decisions).
- **v4.5.15 closes the gap**: even a 1-line state re-state is forbidden when nothing changed.
## Concrete grep self-check
Before sending any reply for a repeat signal, agent must run:
```bash
DRAFT='{reply_to_send}'
echo "$DRAFT" | grep -qE '浮盈|仍持仓|重复.*已推|无execute' && echo 'STOP: this is a status re-state'
```
If `STOP` line prints → replace reply with single `⏭️` or omit entirely (return no message).
## Verified clean example (signal 80 in this session)
When the SKHYNIX add-storm finally hit a `🚨 已平仓提醒`, reply was:
```text
SKHYNIX long 已自动平仓
```
That's 1 line, ≤ 20 chars, factual, no state restate — exactly the shape v4.5.15 mandates.