跳转至

1. 双 Hermes 群聊辩论系统

日期: 2026-06-03
主题: 群聊接力辩论机制的设计与实现


架构

VM164:6060 (A 的 Web UI, Docker)        VM160:6060 (B 的 Web UI, systemd)
├── profile: default                     ├── Hermes v0.15.1
│   └── DeepSeek V4 Pro (实验者)         ├── Qwen QwQ-Plus (验证者)
├── profile: verifier-b                  ├── 独立 Web UI
│   └── Qwen QwQ-Plus (群聊用)
├── 群聊房间: "双 Hermes 验证"
│   ├── @A-实验者 (default)
│   └── @B-验证者 (verifier-b)
└── 邀请码: ABVERIFY

辩论机制

规则

  • 用户发消息 → A 先回答(A 是主实验者)
  • A 回答完 → B 自动质疑(无需 @)
  • B 质疑完 → A 自动回应
  • 交替接力,最多 5 轮
  • 每轮 B 收到系统提示:"请审视其中的逻辑、事实和结论,提出质疑……"

流程

你: 问题
 ↓
A: 回答                    (mentionDepth 0→1)
 ↓
B: 质疑 A 的回答            (mentionDepth 1→2)
 ↓
A: 回应 B 的质疑            (mentionDepth 2→3)
 ↓
B: 再质疑                  (mentionDepth 3→4)
 ↓
A: 再回应                  (mentionDepth 4→5)
 ↓
停                         (mentionDepth 5 ≥ 5)

@mention 用法

输入 效果
不加 @ A 先答,接力辩论(默认)
@A-实验者 只让 A 回答
@B-验证者 只让 B 回答
@all 所有人都答

代码改动

文件: packages/server/src/services/hermes/group-chat/agent-clients.ts

改动 1: 新增 isAgentMentioned import

改动 2: processMentions 路由逻辑 - 用户消息不加 @ → 只发给第一个 Agent(A) - Agent 回复不加 @ → 只发给其他 Agent(辩论接力) - sender 检测使用 agentId + name 双重匹配

改动 3: 辩论触发前缀 - 辩论消息带特定提示:"这是 B-验证者 的回复。请审视其中的逻辑、事实和结论,提出质疑、补充或不同意见。直接回复,不要只是附和。"

深度控制: 硬编码为 5 轮(绕过 env var HERMES_GROUP_CHAT_MAX_AGENT_MENTION_DEPTH

待完善

  1. Dify 知识库接入: B 验证通过的结论写入 Dify
  2. 人工审核关: 写入 Dify 前需要用户拍板
  3. 快照保护: A 操作前自动快照,B 验证失败可回滚
  4. 深度可配置化: 当前硬编码 5,未来可改为房间级配置
  5. 容器重建: 当前容器 env var 与硬编码不一致,下次重建时建议设为 5

待讨论

  • 第三个 Hermes (C) — 投票 tie-breaker 还是知识库管家?
  • B 的验证失败后,A 如何修正重来?
  • Dify 知识库结构:按 RouterOS / Linux / 网络 分类,带过期时间

群聊入口: http://192.168.29.164:6060 → 群聊 → "双 Hermes 验证"
B 的独立 UI: http://192.168.29.160:6060