配置
群组
无论你使用 WhatsApp、Telegram、Discord、Slack、Signal、iMessage、Microsoft Teams 还是 Zalo,OpenClaw 对群聊的处理方式都保持一致。
两分钟快速入门
OpenClaw 直接「运行」在你自己的消息账号上——没有独立的机器人用户。只要 你 在某个群组里,OpenClaw 就能看到这个群组并在其中响应。默认配置如下:
- 群组处于受限状态(
groupPolicy: "allowlist") - 必须提及才能触发回复,除非你显式关闭提及门控
换句话说:只有白名单中的发送者才能通过 @提及 来唤醒 OpenClaw。
一句话总结
- 私聊访问 由
*.allowFrom控制- 群组访问 由
*.groupPolicy+ 白名单(*.groups、*.groupAllowFrom)控制- 回复触发 由提及门控(
requireMention、/activation)控制
群组消息的处理流程:
groupPolicy? disabled -> 丢弃
groupPolicy? allowlist -> 群组在白名单?否 -> 丢弃
requireMention? 是 -> 被提及?否 -> 仅保存为上下文
否则 -> 回复
想实现某种效果?
| 目标 | 如何配置 |
|---|---|
| 允许所有群组,但只在被 @提及 时回复 | groups: { "*": { requireMention: true } } |
| 完全禁用群组回复 | groupPolicy: "disabled" |
| 只允许特定群组 | groups: { "<group-id>": { ... } }(不设置 "*" 键) |
| 只有你能触发群组回复 | groupPolicy: "allowlist",groupAllowFrom: ["+1555..."] |
会话密钥
- 群组会话使用
agent:::group:格式的会话密钥(房间/频道则使用agent:::channel:) - Telegram 论坛主题会在群组 ID 后追加
:topic:,让每个主题拥有独立会话 - 私聊使用主会话(或按发送者配置的会话)
- 群组会话不执行心跳检测
典型模式:私聊归私聊,群组归群组(单个智能体)
如果你的「个人」流量集中在 私聊,「公共」流量集中在 群组,这个模式非常适合你。原因是:在单智能体模式下,私聊消息通常进入 主会话(agent:main:main),而群组始终使用 非主会话(agent:main::group:)。如果你启用沙箱并设置 mode: "non-main",群组会话会在 Docker 中运行,而主私聊会话留在主机上。这样你就拥有了一个智能体「大脑」(共享工作空间 + 记忆),同时具备两种执行姿态:
- 私聊:完整工具权限(主机)
- 群组:沙箱隔离 + 受限工具(Docker)
如果你需要完全独立的工作空间或角色(「个人」和「公共」绝不能混用),请使用第二个智能体 + 绑定。参见 多智能体路由。
配置示例(私聊在主机,群组沙箱化 + 仅消息工具):
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // 群组/频道属于非主会话 -> 沙箱化
scope: "session", // 最强隔离(每个群组/频道一个容器)
workspaceAccess: "none",
},
},
},
tools: {
sandbox: {
tools: {
// allow 非空时,其他工具都被阻断(deny 优先级最高)
allow: ["group:messaging", "group:sessions"],
deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"],
},
},
},
}
想要「群组只能看到 X 文件夹」而不是「完全禁止主机访问」?保持 workspaceAccess: "none",只把白名单路径挂载进沙箱:
{
agents: {
defaults: {
sandbox: {
mode: "non-main",
scope: "session",
workspaceAccess: "none",
docker: {
binds: [
// 主机路径:容器路径:模式
"/home/user/FriendsShared:/data:ro",
],
},
},
},
},
}
延伸阅读:
- 配置项与默认值:网关配置
- 调试工具为何被阻断:沙箱 vs 工具策略 vs 提升权限
- 绑定挂载详解:沙箱机制