Files
Hermes-Skills/okx-auto-position/references/channel-prompts-template.md
T

4.4 KiB
Raw Blame History

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。

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自动重建。

# 查找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修正:

python3 ~/.hermes/skills/trading/okx-auto-position/scripts/fix_recommendation.py '原始信号文本'

自动提取币种/方向/杠杆,调advisor获取正确金额,输出含📐的修正消息。可直接push_to_qq.sh推送。