前言
在私聊场景中,AI 助手对每条消息都进行回复是合理的。但在群聊中,如果对每条消息都做出响应,不仅会造成频道刷屏,还会产生大量不必要的 API 调用。OpenClaw 提供了精细的群聊行为规则配置,让你控制 AI 在什么条件下回复、如何回复、回复哪些人。
群聊规则概览
OpenClaw 的群聊规则配置位于 openclaw.json 的 groupRules 段:
{
"groupRules": {
"triggerMode": "mention",
"mentionName": ["小智", "AI", "bot"],
"commandPrefix": "/",
"replyToBot": true,
"ignoreOtherBots": true,
"cooldown": 0,
"maxResponseLength": 500,
"threadMode": "auto"
}
}
触发模式详解
triggerMode 是群聊行为的核心配置,决定 AI 在什么条件下处理消息。
mention 模式(默认)
{
"groupRules": {
"triggerMode": "mention"
}
}
仅当消息中 @提及了机器人时才会响应。这是最常用的模式,适合大多数群聊场景。各频道的 @提及机制:
| 频道 | 提及方式 |
|---|---|
| Telegram | @botusername |
| Discord | @Bot名称 或 <@botid> |
| Slack | @Bot名称 |
@手机号 |
|
| Matrix | @bot:server |
keyword 模式
{
"groupRules": {
"triggerMode": "keyword",
"mentionName": ["小智", "AI助手", "openclaw"]
}
}
当消息中包含 mentionName 列表中的任一关键词时触发回复。关键词匹配不区分大小写。这个模式适合在不方便使用 @提及的平台上使用。
command 模式
{
"groupRules": {
"triggerMode": "command",
"commandPrefix": "/"
}
}
仅处理以指定前缀开头的消息。例如用户发送 /ask 今天天气怎么样,OpenClaw 会提取前缀后的内容作为提问。
always 模式
{
"groupRules": {
"triggerMode": "always"
}
}
对群聊中的每条消息都进行回复。通常仅在小型私密群组中使用。
mixed 模式
{
"groupRules": {
"triggerMode": "mixed",
"mentionName": ["小智"],
"commandPrefix": "/"
}
}
同时支持 @提及、关键词和指令前缀三种触发方式,满足任一条件即响应。
指令前缀配置
除了用于触发 AI 回复,指令前缀还可以用来执行特定命令:
{
"groupRules": {
"commandPrefix": "/",
"commands": {
"help": "显示帮助信息",
"model": "切换当前使用的模型",
"clear": "清除当前会话历史",
"status": "显示系统状态"
}
}
}
用户在群聊中发送 /help 时,OpenClaw 会返回帮助信息而非交给 AI 模型处理。发送 /ask 你的问题 或者不匹配任何已知命令的前缀消息,则交给 AI 处理。
回复行为配置
是否回复引用消息
{
"groupRules": {
"replyToBot": true,
"replyChainDepth": 3
}
}
当 replyToBot 为 true 时,用户通过"回复"功能回复 AI 之前的消息时,即使没有 @提及,AI 也会响应。replyChainDepth 控制回复链的最大追溯深度——如果用户回复的是另一个用户回复 AI 的消息,是否仍然触发。
忽略其他机器人
{
"groupRules": {
"ignoreOtherBots": true
}
}
避免与群里的其他机器人产生"对话循环"。启用后,OpenClaw 会忽略来自其他机器人账号的消息。
冷却时间
{
"groupRules": {
"cooldown": 5
}
}
两次回复之间的最小间隔(秒)。在高活跃群聊中,设置冷却时间可以避免 AI 回复过于密集。设为 0 则无冷却限制。
响应长度限制
{
"groupRules": {
"maxResponseLength": 500
}
}
群聊中 AI 回复的最大字符数。超出部分会被截断并附加"查看完整回复请私聊"的提示。这个限制仅对群聊生效,私聊不受影响。
话题模式
在支持话题/线程的平台(如 Slack、Discord、Telegram 超级群组)中,OpenClaw 可以利用话题功能组织对话:
{
"groupRules": {
"threadMode": "auto",
"autoCreateThread": true,
"threadTitle": "AI 对话"
}
}
| threadMode | 行为 |
|---|---|
"auto" |
如果用户在话题中@AI,则在话题内回复;否则在主频道回复 |
"always" |
始终在话题中回复,自动创建话题 |
"never" |
始终在主频道回复,不使用话题功能 |
话题模式的好处是将 AI 对话集中在独立话题中,避免干扰群组的正常讨论。
按频道覆盖规则
不同的群组可能需要不同的规则。OpenClaw 支持按频道类型或具体群组 ID 覆盖全局群聊规则:
{
"groupRules": {
"triggerMode": "mention",
"channelOverrides": {
"telegram": {
"triggerMode": "mixed",
"mentionName": ["小智"]
},
"discord": {
"triggerMode": "command",
"commandPrefix": "!"
}
},
"groupOverrides": {
"-100123456789": {
"triggerMode": "always",
"maxResponseLength": 1000
}
}
}
}
优先级顺序:groupOverrides(具体群组)> channelOverrides(频道类型)> 全局 groupRules。
群聊上下文处理
群聊中的上下文处理与私聊有所不同。OpenClaw 支持两种群聊上下文策略:
{
"groupRules": {
"contextMode": "mention-thread",
"includeOtherUsers": false
}
}
| contextMode | 行为 |
|---|---|
"full" |
将群聊中所有消息(包括其他用户的)纳入上下文 |
"mention-thread" |
仅将与 AI 相关的消息链纳入上下文 |
"isolated" |
每次@提及都作为独立对话,不保留历史 |
includeOtherUsers 控制是否将其他用户(非提问者)的消息也纳入上下文。在"团队讨论"场景中开启此选项可以让 AI 理解完整的讨论背景。
实战配置示例
技术支持群
{
"groupRules": {
"triggerMode": "mixed",
"mentionName": ["小智"],
"commandPrefix": "/ask",
"replyToBot": true,
"cooldown": 2,
"maxResponseLength": 800,
"threadMode": "always",
"contextMode": "mention-thread"
}
}
朋友闲聊群
{
"groupRules": {
"triggerMode": "keyword",
"mentionName": ["小智", "AI"],
"cooldown": 10,
"maxResponseLength": 300,
"contextMode": "isolated"
}
}
工作协作群
{
"groupRules": {
"triggerMode": "command",
"commandPrefix": "/",
"threadMode": "always",
"contextMode": "full",
"includeOtherUsers": true,
"maxResponseLength": 1500
}
}
调试群聊规则
如果群聊中 AI 没有按预期响应,可以启用调试日志:
openclaw gateway --log-level debug
在日志中搜索 group-rules 相关条目,可以看到每条消息的触发判断过程:
[DEBUG] group-rules: 消息来自 telegram 群组 -100123456789
[DEBUG] group-rules: 触发模式=mention, 检测到@提及=false, 是否回复链=false
[DEBUG] group-rules: 判定结果: 跳过
总结
群聊行为规则是 OpenClaw 多频道管理中最需要精细调优的部分。核心是选择合适的触发模式——大多数场景下 mention 模式是最佳起点,再根据实际群组的活跃度和用途逐步调整冷却时间、响应长度和上下文策略。记得利用 channelOverrides 和 groupOverrides 为不同群组定制规则,避免一刀切的配置影响用户体验。