群聊消息处理
OpenClaw 支持在各平台的群组 / 频道中工作。本页说明群聊场景下的触发策略和隔离机制。
触发策略
OpenClaw 提供两种群聊触发策略:
requireMention(默认)
只有当消息中 @Agent 名称时,Bot 才会响应。这是默认策略,适用于大多数场景。
yaml
channels:
telegram:
groupActivation: mention # 默认值,可省略为什么默认使用 mention 模式
群聊中消息量通常很大。如果 Bot 响应每一条消息,不仅会消耗大量 token,还会干扰正常群聊体验。mention 模式让 Bot 只在被明确召唤时才参与对话。
always 模式
Bot 响应群内的每一条消息。适用于 Bot 作为群内唯一"成员"的场景,或小型工作群需要 AI 实时参与讨论。
yaml
channels:
telegram:
groupActivation: always注意 token 消耗
always 模式下,群内每条消息都会触发 AI 调用。在活跃群组中,这可能导致:
- 大量 token 消耗和 API 费用
- 消息响应延迟(排队处理)
- 对群聊体验的干扰
建议仅在小型、低流量群组中使用此模式。
切换触发策略
使用命令行切换:
bash
# 切换到 mention 模式(只响应 @Agent)
/activation mention
# 切换到 always 模式(响应所有消息)
/activation always也可以在 openclaw.yaml 中为不同频道单独配置:
yaml
channels:
telegram:
groupActivation: mention
discord:
groupActivation: always # Discord 某个特定用途的服务器可以用 always
slack:
groupActivation: mention群组沙箱
隔离机制
每个群组使用独立的隔离 session。这意味着:
- 不同群组之间的对话上下文互不影响
- 每个群组有独立的对话历史
MEMORY.md不会加载到群组会话中(仅在私聊中生效)
群组沙箱确保:
| 特性 | 私聊 | 群聊 |
|---|---|---|
| 对话上下文 | 与用户绑定 | 与群组绑定 |
| MEMORY.md | 加载 | 不加载 |
| Session 隔离 | 按用户隔离 | 按群组隔离 |
| 历史记录 | 持久化 | 持久化(独立存储) |
各平台群聊差异
不同平台在群聊中的行为略有不同:
| 平台 | @Bot 方式 | 说明 |
|---|---|---|
| Telegram | @botusername | 需关闭隐私模式才能接收非 @ 消息 |
| Discord | @BotName | 需要 Bot 有对应频道的读取权限 |
| Slack | @BotName | 需要先将 Bot 邀请到频道 |
| 飞书 | @机器人名 | 需配置群聊 @ 消息权限 |
| 直接提及名称 | WhatsApp 群组无正式 @ 机制 |
最佳实践
- 默认使用 mention 模式 — 除非有明确需求,否则保持默认的 mention 触发策略
- 为群组设置专用 systemPrompt — 群聊场景下的回复风格通常应更简洁
- 控制群组规模 — always 模式适合 5 人以下的小型工作群
- 监控 token 用量 — 使用
openclaw usage查看各频道的 token 消耗情况
yaml
channels:
slack:
groupActivation: mention
groupSystemPrompt: "你在一个工作群中。回复要简洁,避免长篇大论。只在被 @ 时回复。"