# TG信号群 Channel Prompts 配置 ## 当前配置(2026-08-21 改: 防重复推送) ⚠️ **历史问题**: 之前 prompt 让 agent 收到信号就调 format_signal.py + push_to_qq.sh。但 gateway inline hook (signal_inbox.py → process_signal.py) 已经会自动处理信号 + 推"执行结果"。**结果同一信号推两次**:一次自动开仓的"✅ 执行结果",一次冗余的"⚡ 跟单建议"。 **修复**: channel_prompts 改为先**检查信号是否已被 inline hook 处理过**(查 signal_queue.db status='done'),**已 done → 静默**;否则走 fallback format_signal.py。 ```yaml telegram: channel_prompts: '-1003966251111': '交易信号处理规则(必须严格执行): 收到含【币种】的消息后,第一步:用terminal工具执行 `sqlite3 ~/.hermes/trading/signal_queue.db "SELECT status FROM queue WHERE raw_text LIKE '%' || '{从【币种】提取}' || '%' ORDER BY id DESC LIMIT 1"` 检查最新队列状态。第二步:如果 status='done' (已被 inline hook 处理过, 即已自动开仓或已跳过) → 静默返回 "⏭️ 已处理", 不做任何推送。第三步:如果 status='failed' 或 'pending' → 用terminal工具执行python3 ~/.hermes/skills/trading/okx-auto-position/scripts/format_signal.py --symbol {从【币种】提取} --side {做多=long/做空=short} --leverage {从【杠杆】提取数字} --trader {从第一行【】提取名字} --trader-pos {从【仓位大小】提取} --trader-value {从【仓位价值】提取} --trader-entry {从【开仓价】提取} --trader-pnl {从【未实现盈亏】提取} --signal-type C,然后执行 bash ~/.hermes/scripts/push_to_qq.sh {脚本输出}。非交易消息忽略。' ``` ### 关键变化 - ✅ 新增第一步:查 signal_queue.db 状态 - ✅ status='done' → 静默(`⏭️ 已处理`),**不重复推送** — 这是修复重复推送的核心 - status='failed' 或 'pending' → 才走 format_signal.py fallback 推人工确认 ⚠️ 注意: inline hook 处理的信号会自动推"✅ 执行结果"(开仓成功)或"⏭️ 跳过"(被拦),这些才是真正的推送。agent 走 format_signal.py 是给 inline hook 没处理的信号做兜底,例如 cron retry 或人工补单。 ### ⚠️ 极简版channel_prompts("加载skill按流程处理")实测失败 **教训(2026-07-04)**:agent不会主动加载skill。写"加载skill okx-auto-position按流程处理"时,agent无视指令,继续用硬编码模板推送错误金额。 **根因**: - mimo-v2.5-pro模型不会执行模糊指令 - ongoing session重启后保留旧的"行为记忆" - channel_prompts的指令被旧上下文覆盖 **解决**:channel_prompts里写完整命令,agent只需用terminal工具执行,不需要"理解"skill。 所有流程细节在 `okx-auto-position` skill 的 SKILL.md 里维护。改流程只改skill,不碰config.yaml,不需要重启gateway。 ## 历史教训 旧版config.yaml把完整流程指令写在channel_prompts里(6步详细指令),导致: 1. 每次改流程都要重启gateway 2. config.yaml越写越长,难以维护 3. skill和config里的指令重复甚至冲突 极简版解决了这些问题:channel_prompts只做路由(指向skill),skill做所有逻辑。 ## 关键规则 1. **不要回复群** — 所有回复只在QQ私信推送 2. **不要做分析** — 不在主群做趋势复盘 3. **非交易消息忽略** — 广告、闲聊直接跳过 4. **推送目标** — QQ DM: `qqbot:B1EF50442496D57C1B4F3890501C34C2` ## ⚠️ 改了channel_prompts后必须删旧session **问题**:ongoing session不会自动加载新的channel_prompts。改了配置后agent行为不变。 **解决**:删除TG群的旧session,gateway自动重建。 ```bash # 查找TG群session sqlite3 ~/.hermes/state.db "SELECT id, chat_id, title FROM sessions WHERE chat_id LIKE '%1003966251111%';" # 删除(让gateway重建) sqlite3 ~/.hermes/state.db "DELETE FROM sessions WHERE id = 'xxx';" ``` **同理**:改了skill后如果TG agent行为没变,也可能是旧session缓存了旧skill内容。删session重建即可。 ## 修正已有信号金额 当agent推送了硬编码模板(金额错误)时,可用fix_recommendation.py修正: ```bash python3 ~/.hermes/skills/trading/okx-auto-position/scripts/fix_recommendation.py '原始信号文本' ``` 自动提取币种/方向/杠杆,调advisor获取正确金额,输出含📐的修正消息。可直接push_to_qq.sh推送。