企业微信通道会话创建BUG
企业微信会话隔离配置
为企业微信(WeCom)通道配置会话隔离,使每个私聊用户和每个群聊都能获得独立的 AI 会话,同时所有用户共用同一个 main Agent(同一工作空间、同一提示词)。
适用场景: 当用户反馈企业微信消息没有单独创建会话、所有消息混在同一个会话里时使用此技能。
问题症状
- 企业微信通道发送的消息不会为新用户创建独立会话
- 所有私聊用户的消息都混入同一个会话
- 不同群聊的消息也混在一起
- Web UI 和企业微信的消息互相覆盖
问题根因
默认情况下,所有企业微信私聊共享一个会话(session.dmScope: "main")。每个用户的消息混在一起,无法区分。
诊断步骤
检查当前 session.dmScope 配置
通过 gateway(action=config.get) 获取当前配置,确认 session.dmScope 的值:
"session": {
"dmScope": "per-channel-peer"
}
session.dmScope 可选值
| 值 | 行为 |
|---|---|
main(默认) |
所有私聊共享一个会话 |
per-peer |
按发送者隔离(跨通道) |
per-channel-peer |
按"通道+发送者"隔离(推荐) |
per-account-channel-peer |
按"账号+通道+发送者"隔离(多账号时) |
解决方案
启用 per-channel-peer 隔离
使用 gateway(action=config.patch) 添加配置:
{
"session": {
"dmScope": "per-channel-peer"
}
}
效果:
- 企业微信私聊:每个用户有独立会话(共用 main Agent)
- 企业微信群聊:每个群有独立会话
- 所有用户共享同一工作空间(
~/.openclaw/workspace) - 所有用户共享同一套提示词(AGENTS.md、SOUL.md 等)
同时确保 dynamicAgents 关闭(避免创建独立 Agent):
{
"channels": {
"wecom": {
"dynamicAgents": {
"enabled": false
}
}
}
}
配置生效后
配置变更会自动热重载。如果未生效,可通过 gateway(action=restart) 重启。
验证方法
- 让两个不同的企业微信用户分别发送消息
- 在 OpenClaw 会话列表中查看是否分别为每个用户创建了独立会话
- 检查会话 key 格式为
agent:main:wecom:{accountId}:{dm|group}:{peerId}
会话 Key 示例:
agent:main:wecom:default:dm:xxtl
agent:main— 同一 main Agentwecom:default:dm:xxtl— 企业微信通道 + 账号 + 私聊 + 用户 ID
❌ 错误方案:dynamicAgents
不要使用
channels.wecom.dynamicAgents.enabled = true
"channels": {
"wecom": {
"dynamicAgents": {
"enabled": true,
"dmCreateAgent": true
}
}
}
错误原因: dynamicAgents 会为每个用户创建独立的 Agent(独立工作空间),导致:
- 不同用户的 SOUL.md、AGENTS.md、USER.md 互相隔离
- 用户之间不共享提示词
- 这不是"会话隔离",而是"完全隔离的多 Agent 架构"
正确做法: 使用 session.dmScope 实现同一 Agent 下的会话隔离,共用水空间和提示词。
两种方案对比
| 方案 | 隔离层次 | 工作空间 | 适用场景 |
|---|---|---|---|
session.dmScope: per-channel-peer |
会话级 | 共用 ~/.openclaw/workspace |
单 Agent 多会话(推荐) |
dynamicAgents.enabled: true |
Agent 级 | 每个用户独立工作空间 | 多租户多 Agent 架构 |
故障排查
启用了但不生效
- 确认
session.dmScope设为per-channel-peer(不是字符串) - 确认
channels.wecom.dynamicAgents.enabled为false - 重启 Gateway:
gateway(action=restart)
群聊也串会话
确认 channels.wecom.groupPolicy 不是 disabled,群聊默认有独立会话。
同一用户从不同通道发消息
- 使用
per-channel-peer:不同通道独立会话 - 使用
per-peer:跨通道合并为同一会话
相关文件
- 会话管理文档:
~/.openclaw/workspace/.claude/docs/concepts/session.md - 插件动态路由(错误方案):
~/.openclaw/extensions/wecom-openclaw-plugin/dist/src/dynamic-agent.js

浙公网安备 33010602011771号