群组
OpenClaw 在各平台上一致地处理群组聊天:WhatsApp、Telegram、Discord、Slack、Signal、iMessage、Microsoft Teams、Zalo?
入门介绍? 分钟?
OpenClaw”生活”在您自己的消息账户上。没有单独的 WhatsApp 机器人用户? 如果**?*在群组中,OpenClaw 可以看到该群组并在那里回复?
默认行为?
- 群组受限(
groupPolicy: "allowlist")? - 回复需要提及,除非您明确禁用提及门控?
翻译:白名单发件人可以通过提及 OpenClaw 来触发它?
简要说?
- DM 访问?
*.allowFrom控制?- 群组访问?
*.groupPolicy+ 白名单(*.groups、*.groupAllowFrom)控制?- 回复触发由提及门控控制(
requireMention、/activation)?
快速流程(群组消息会发生什么)?
groupPolicy? disabled -> drop
groupPolicy? allowlist -> group allowed? no -> drop
requireMention? yes -> mentioned? no -> store for context only
otherwise -> reply
如果您想?..
| 目标 | 设置内容 |
|---|---|
| 允许所有群组但仅在 @mentions 时回? | groups: { "*": { requireMention: true } } |
| 禁用所有群组回? | groupPolicy: "disabled" |
| 仅特定群? | groups: { "<group-id>": { ... } }(无 "*" 键) |
| 只有您可以在群组中触? | groupPolicy: "allowlist",groupAllowFrom: ["+1555..."] |
会话密钥
- 群组会话使用
agent:<agentId>:<channel>:group:<id>会话密钥(房?频道使用agent:<agentId>:<channel>:channel:<id>)? - Telegram 论坛主题添加
:topic:<threadId>到群?ID,以便每个主题有自己的会话? - 直接聊天使用主会话(或按发件人配置)?
- 心跳针对群组会话被跳过?
模式:个?DM + 公共群组(单个代理)
是的 ?如果您的”个人”流量?DM 且您?公共”流量?群组,这很有效?
原因:在单代理模式下,DM 通常落在**?*会话密钥(agent:main:main)中,而群组始终使?*非主**会话密钥(agent:main:<channel>:group:<id>)。如果您使用 mode: "non-main" 启用沙盒,那些群组会话在 Docker 中运行,而您的主 DM 会话留在主机上?
这给您一个代?大脑”(共享工作区 + 内存),但有两种执行姿态:
- DM:完整工具(主机?
- 群组:沙?+ 受限工具(Docker?
如果您需要真正独立的工作?角色?个人”?公共”绝不能混合),请使用第二个代?+ 绑定。请参阅多代理路由?
示例(DM 在主机上,群组沙盒化 + 仅消息工具)?
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // groups/channels are non-main -> sandboxed
scope: "session", // strongest isolation (one container per group/channel)
workspaceAccess: "none",
},
},
},
tools: {
sandbox: {
tools: {
// If allow is non-empty, everything else is blocked (deny still wins).
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: "paths",
workspaceAllowedPaths: ["/data/public"],
},
},
},
}
会话密钥详情
格式
agent:<agentId>:<channel>:group:<groupId>
例如?
agent:main:whatsapp:group:123456789agent:main:telegram:group:-1001234567890agent:ops:discord:group:987654321
Telegram 论坛主题
agent:<agentId>:telegram:group:<chatId>:topic:<threadId>
例如:agent:main:telegram:group:-1001234567890:topic:123
多代?
如果您有多个代理,每个代理有自己的群组会话:
agent:ops:whatsapp:group:123456789
agent:support:whatsapp:group:987654321
配置
基本群组配置
{
channels: {
whatsapp: {
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"],
groups: {
allow: ["[email protected]"],
},
},
telegram: {
groupPolicy: "allowlist",
groupAllowFrom: ["123456789"],
groups: {
"-1001234567890": {
requireMention: true,
},
},
},
},
}
允许所有群?
{
channels: {
whatsapp: {
groupPolicy: "allowlist",
groups: {
"*": {
requireMention: true,
},
},
},
},
}
禁用所有群?
{
channels: {
whatsapp: {
groupPolicy: "disabled",
},
},
}
激活命?
用户可以在群组中使用以下命令?
/activation mention- 仅在提及时回?/activation always- 始终回复(需要白名单?/activation off- 禁用该群组的响应
行为详情
消息处理流程
- 检查群组策略(如果禁用则丢弃)
- 检查群组是否在白名单中(如果使用白名单?
- 检查是否需要提?
- 如果需要提及但未提及,则仅存储为上下文
- 否则回复
提及检?
OpenClaw 检测提及:
- 明确提及机器人身?
- 配置的提及正则表达式模式
- 隐式回复检测(回复发件人匹配机器人身份?
安全考虑
- 引用/回复仅满足提及门控,不授予发件人授权
- 使用
groupPolicy: "allowlist"时,非白名单发件人即使回复白名单用户的消息也会被阻止 - 始终审查群组成员资格
故障排除
群组消息未收?
- 检?
groupPolicy设置 - 确认群组在白名单?
- 验证需要提及设?
机器人不回复
- 确认已提及机器人
- 检查发件人是否?
groupAllowFrom? - 使用
/activation always启用自动回复
错误回复到错误群?
- 检查会话密钥配?
- 验证代理绑定
- 检查频道配?