OpenClaw 安全指南(二·入口篇):谁能跟你的 AI 说话?
这是「OpenClaw 安全指南」系列的第 2 篇。上一篇我们锁好了 Gateway 大门,这篇解决下一个问题:门开了之后,谁能进来?进来之后能干什么?
适用版本:OpenClaw ≥ 2026.3.2(推荐 2026.3.31+)
Gateway 绑定和 token 解决的是”网络层谁能连上来”的问题。但 OpenClaw 还有一层更细的控制:谁能跟 AI 对话、对话时能用哪些工具、在群里怎么表现。
1. DM 配对流程
1.1 配对流程说明
在讲配对流程之前,先分清两个概念:
📱 通道消息(Channel):
通过 Telegram、Discord、微信等聊天平台给 AI 发消息–就像给朋友发私聊。这种场景需要配对机制来控制谁能访问 AI。💻 控制面板(Dashboard):你自己登录的 Web 管理页面–这是 AI 的”家”,管理员天然拥有完全控制权,不需要配对。
接下来我们说的是通道消息场景。你可能听过”DM”这个词–DM = Direct Message(私聊),就是你和 AI 一对一的对话(类似微信私聊,不是群聊)。OpenClaw 用配对机制来控制谁能私聊你的 AI。
流程很简单:
-
有人第一次私聊你的 AI(比如在 Telegram 给 Bot 发消息,Bot 就是”机器人”–在聊天平台里自动运行、响应消息的 AI 程序) -
AI 检查 dmPolicy配置 -
如果是 pairing(默认),AI 会拒绝未配对的用户 -
管理员(你)通过命令批准配对 -
配对完成,该用户可以正常私聊
为什么需要配对? 因为私聊是一对一的,AI 会把对方当成”主人”来响应。如果谁都能私聊你的 AI,那任何人都能让它执行命令、读取文件。想象一下:你的 AI 助手连接了你的邮箱和日历,陌生人发条消息就能读取你的邮件–这就是为什么需要配对这道”门禁”。
1.2 配置示例
DM 策略在各通道的配置中设置,也可以设全局默认值:
{ "channels": { "defaults": { "dmPolicy": "pairing" }, "telegram": { "dmPolicy": "pairing", "allowFrom": ["tg:123456789"] }, "discord": { "dmPolicy": "pairing" } }}
|
|
|
|
|
|---|---|---|---|
channels.<provider>.dmPolicy |
pairing |
|
|
channels.<provider>.dmPolicy |
allowlist |
allowFrom 名单里的人能 DM |
|
channels.<provider>.dmPolicy |
open |
allowFrom: ["*"]) |
|
channels.<provider>.dmPolicy |
disabled |
|
|
💡 <provider>代表具体的通道名称(如telegram、discord,替换掉尖括号部分)–比如 Telegram 就写成 channels.telegram.dmPolicy,Discord 就写成 channels.discord.dmPolicy。实际配置时把尖括号部分替换掉。
1.3 管理配对
# 查看待审批的配对请求openclaw pairing list <provider># 批准一个配对请求(输入对方收到的配对码)openclaw pairing approve <provider> <pairing-code>


💡 配对码 1 小时内有效,每个通道最多同时有 3 个待审批请求。
2. 会话隔离模式
2.1 main vs per-channel-peer
会话隔离决定了不同用户、不同频道的对话是否共享上下文。
|
|
|
|
|
|---|---|---|---|
main |
|
|
|
per-peer |
|
|
|
per-channel-peer |
|
|
|
per-account-channel-peer |
|
|
|
main 模式的风险:如果你在 DM 里让 AI 帮你处理了敏感信息,然后别人在群里 @AI,AI 可能会”记得”你的敏感信息并泄露出去。
推荐:只要有超过一个人可能跟 AI 说话,就用 per-channel-peer。
2.2 配置示例
{ "session": { "dmScope": "per-channel-peer" }}
|
|
|
|
|
|---|---|---|---|
session.dmScope |
main |
|
|
session.dmScope |
per-peer |
|
|
session.dmScope |
per-channel-peer |
|
|
session.dmScope |
per-account-channel-peer |
|
|
💡 openclaw security audit会在检测到多个 DM 发送者共享主会话时发出警告,并建议切换到per-channel-peer。
3. 工具权限层级
能跟 AI 说话只是第一步。说了之后,AI 能用哪些工具来执行,才是真正的权限边界。
3.1 工具风险分级
OpenClaw 里的工具按风险分成几个等级:
|
|
|
|
|
|---|---|---|---|
|
|
|
web_search、read、weather |
|
|
|
|
write、 |
|
|
|
|
exec、 |
|
|
|
|
|
|
3.2 预设配置 profiles
OpenClaw 内置了几套预设方案,开箱即用:
|
|
|
|
|
|
|---|---|---|---|---|
minimal |
session_status |
|
|
|
coding |
|
|
|
|
messaging |
|
|
|
|
full |
|
|
|
|
3.3 自定义 deny/allow 配置
预设不够用?自己配:
{ "tools": { "profile": "coding", "deny": ["exec", "process", "browser"], "allow": ["web_search", "web_fetch"] }}
规则优先级:deny > allow > profile
也就是说,如果你同时配了 deny 和 profile,deny 里的工具不管 profile 怎么说都会被禁用。
{ "tools": { "profile": "full", "deny": ["exec"] }}
上面这个配置的意思是:用 full 预设,但是额外禁用 exec。即使 full 里允许 exec,也会被 deny 覆盖掉。
还可以针对特定 AI 提供商做更细的限制:
{ "tools": { "profile": "coding", "byProvider": { "openai/gpt-4.1-mini": { "profile": "minimal" } } }}

4. 群组策略配置
4.1 requireMention
在群里,AI 是每条消息都响应,还是只有被 @ 才响应?
群组 requireMention 在各通道的 groups 配置里设置:
{ "channels": { "discord": { "groups": { "*": { "requireMention": true } } }, "telegram": { "groups": { "*": { "requireMention": true } } } }}
|
|
|
|
|
|---|---|---|---|
true |
|
|
|
false |
|
|
|
4.2 群组策略(allowlist vs open)
OpenClaw 默认使用 groupPolicy: "allowlist"(fail-closed),只有在 groups 里明确配置的群组才会响应:
{ "channels": { "defaults": { "groupPolicy": "allowlist" }, "discord": { "groupPolicy": "allowlist", "groups": { "1234567890": { "requireMention": true }, "9876543210": { "requireMention": false } } } }}
不在 groups 里列出的群,AI 直接不响应。 这是最简单但最有效的方式。
如果设为 groupPolicy: "open",AI 会响应所有群组消息(但 mention-gating 仍然生效)。不推荐,除非你清楚后果。
|
|
|
|
|
|---|---|---|---|
allowlist |
|
|
|
open |
|
|
|
disabled |
|
|
|
4.3 获取群组 ID
配置群组白名单需要群组 ID,怎么拿?
# 列出所有已知的群组和 IDopenclaw directory groups# 查看某个平台的群组openclaw directory groups --channel discordopenclaw directory groups --channel telegram
Discord 获取频道 ID:开启开发者模式(设置 → 高级 → 开发者模式),然后右键频道 → 复制频道 ID。
Telegram 获取群组 ID:把 @RawDataBot 加入群组,它会自动发送群组信息,包含 chat ID。
5. 小结
入口控制的核心就三件事:
|
|
|
|
|---|---|---|
|
|
|
dmPolicy: "pairing"(默认) |
|
|
|
session.dmScope: "per-channel-peer" |
|
|
|
tools.profile: "coding" + 按需 deny 高危工具 |
|
|
|
requireMention:true + groupPolicy:"allowlist" |
记住一个原则:最小权限。 不确定要不要开的,先别开。等真正需要了再放开,比出了事再收紧容易得多。
下一篇我们深入到最核心的安全话题–命令执行。AI 跑命令是最强大的能力,也是最危险的。怎么让它在笼子里干活?第三篇见。
系列导航:
-
OpenClaw 安全指南(一·认知篇):你的 AI 助手有多危险? -
✅ OpenClaw 安全指南(二·入口篇):谁能跟你的 AI 说话? -
OpenClaw 安全指南(三·执行篇):让 AI 在笼子里干活 -
OpenClaw 安全指南(四·进阶篇):密钥、注入与应急
👋 我是路人甲甲,公众号「AI 打怪升级」,专注 AI 工具实战。
觉得有用?点个在看,分享给需要的朋友。
夜雨聆风