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)
待完善
- Dify 知识库接入: B 验证通过的结论写入 Dify
- 人工审核关: 写入 Dify 前需要用户拍板
- 快照保护: A 操作前自动快照,B 验证失败可回滚
- 深度可配置化: 当前硬编码 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