多 Agent 工作区隔离 — 不同助手各管各的地盘
为什么要隔离
多个 Agent 共用一个 workspace 会出问题:
- 记忆串扰:飞书 Agent 处理过的对话,钉钉 Agent 会"记得",导致错误响应
- 文件覆盖:两个 Agent 如果都写了同名文件,会互相覆盖
- 权限扩大:客服 Agent 只能读文档,但如果和主 Agent 共用 workspace,主 Agent 能读写的目录客服 Agent 也"看得到"
- 安全风险:客服 Agent 收到一条恶意指令要删除文件,如果刚好能访问到正式工作目录,就会出事
结论:每个独立的 Agent 必须有独立的 workspace。
怎么配置
在 Sophclaw 的配置文件中,为每个 Agent 在 agents.list 里指定独立的 workspace 路径:
{
"agents": {
"defaults": {
// 默认配置,所有 Agent 继承
},
"list": [
{
"id": "main",
"name": "主助手",
"workspace": "~/.openclaw/workspace"
},
{
"id": "feishu-bot",
"name": "飞书助手",
"workspace": "~/.openclaw/workspace-feishu"
},
{
"id": "dingtalk-bot",
"name": "钉钉助手",
"workspace": "~/.openclaw/workspace-dingtalk"
},
{
"id": "support-bot",
"name": "客服助手",
"workspace": "~/.openclaw/workspace-support"
}
]
}
}
怎么把 Agent 绑定到 Channel
配置完多个 Agent 后,需要把 channel 和 Agent 关联起来。在各 channel 的配置里指定 agentId:
{
"channels": {
"feishu": {
"enabled": true,
"agentId": "feishu-bot",
// ... 其他 feishu 配置
},
"dingtalk": {
"enabled": true,
"agentId": "dingtalk-bot",
// ... 其他 dingtalk 配置
}
}
}
这样飞书消息会自动路由到 feishu-bot 这个 Agent,钉钉消息路由到 dingtalk-bot,各自独立 workspace,互不干扰。
每个 workspace 里有什么
每个 Agent 的 workspace 是一个独立目录,里面包含:
| 内容 | 说明 |
|---|---|
| SOUL.md | 这个 Agent 的身份和人设 |
| MEMORY.md | 这个 Agent 的长期记忆 |
| AGENTS.md | 这个 Agent 的工作规则(允许/禁止的操作) |
| TOOLS.md | 这个 Agent 可用的工具清单 |
| skills/ | 这个 Agent 已安装的 Skills |
| 执行产物/ | Agent 执行指令时生成的文件(文档、表格等) |
典型隔离方案
以下是推荐的多 Agent 隔离方案:
个人用户(2-3 个 Agent)
| Agent | Workspace | 用途 |
|---|---|---|
| main | workspace | 日常个人助手 |
| feishu-bot | workspace-feishu | 飞书群里的助手 |
| telegram-bot | workspace-telegram | Telegram 个人入口 |
小团队(4-6 个 Agent)
| Agent | Workspace | 用途 |
|---|---|---|
| main | workspace | 管理/调度用 |
| feishu-internal | workspace-feishu-internal | 内部协作群助手 |
| feishu-support | workspace-feishu-support | 客户服务机器人 |
| feishu-reports | workspace-feishu-reports | 定时生成报表推送到管理层 |
| dingtalk-dev | workspace-dingtalk-dev | 开发团队钉钉群助手 |
什么时候需要隔离
必须隔离的场景:
- 不同 Agent 服务不同的人群(比如内部团队 vs 外部客户)
- 不同 Agent 有不同的权限范围(比如只允许客服 Agent 读文档,主 Agent 可以读写)
- 不同 Agent 有不同的身份人设(比如一个叫"数据助手"、一个叫"文档小能手")
- 执行产物需要物理隔离(比如不希望客服 Agent 生成的文件和主 Agent 的混在一起)
可以不隔离的场景:
- 只有一个 Agent,只用一个 channel
- 不同 Agent 之间需要共享部分记忆(可以用主 Agent 作为调度中心,子 Agent 按需读取主 Agent 的特定文件)
实操建议
1. 先想清楚每个 Agent 的职责边界——为什么要分这么多个?它们各自服务谁?2. 每个 Agent 的 workspace 单独初始化——创建后用对话引导 AI 写好 SOUL.md 和 AGENTS.md 3. 先在测试 channel 里跑通再上正式环境——尤其是客服 Agent,避免它直接接触正式用户
隔离做好了,每个 Agent 就像独立的"员工"——有自己的工位(workspace)、自己的岗位职责(AGENTS.md)、自己的记忆(MEMORY.md)。不会串岗、不会越权、不会把 A 的事记成 B 的事。