OpenClaw 多工作区 (Multi-Workspace) 架构设计与配置实践
在 AI 助手 (AI Agent) 日益普及的今天,我们往往希望一个智能体能处理多种截然不同的任务:既能温柔耐心地辅导孩子(例如我的孩子 Andrew 和 Alice),又能冷酷理性地处理量化交易和租务管理。
为了在这些冲突的身份和任务之间保持上下文的纯净性,我探索并实践了基于 OpenClaw 的多工作区物理隔离 (Multi-Workspace) 方案。本文将详细记录我的配置思路、踩坑过程以及最佳实践建议。
1. 为什么需要多工作区?
在默认配置下,不管是通过 Web UI、Telegram 还是 QQ 接入,OpenClaw 都是在一个主代理(Main Agent)和同一个长记忆上下文(MEMORY.md)下工作的。
如果把所有的任务都塞给同一个主代理,会导致以下问题:
- 上下文污染 (Context Pollution):辅导孩子时的”共情与温柔”和股票交易时的”理智与数据驱动”容易互相干扰,甚至导致大模型出现身份混乱。
- 配置冲突:难以针对特定任务设置专属的大模型 API,也无法独立管理敏感的投资数据。
2. 方案对比:Sub-agent vs Multi-Workspace
最初,我考虑了两种方案:
方案 A:子代理调度 (Sub-agent Orchestration)
主代理作为路由中心,需要处理金融数据时,通过 sessions_spawn 动态拉起一个隔离的子代理处理 R 语言脚本和 Quarto 报告。
- 优点:只需维护一个 OpenClaw 实例。
- 缺点:所有的通信还是经过主入口,主代理的任务负载和历史记录会变得庞大。
方案 B:多工作区物理隔离 (Multi-Workspace Isolation)
运行两个相互独立的 OpenClaw 服务:
主工作区 (
~/.openclaw):绑定 QQ,扮演”家庭教育助手”,专注陪伴 Andrew 和 Alice。金融工作区 (
~/.openclaw-finance):绑定 Telegram,扮演”量化与租务管家”,处理 R 代码与财务。优点:100% 的上下文和记忆隔离。针对不同渠道精细化配置。
缺点:需要维护两套配置和双重后台进程,但安全性最高。
最终,我选择了方案 B。
3. 具体配置过程与最佳实践
步骤一:创建独立工作区目录
我们使用 OpenClaw 原生的 Profile 机制(--profile),它会自动将状态、配置和上下文隔离在对应的文件夹中:
# 这个命令会自动创建 ~/.openclaw-finance 以及对应的配置
openclaw --profile finance setup步骤二:重塑智能体灵魂 (IDENTITY.md / SOUL.md / USER.md)
在 ~/.openclaw-finance/workspace 下,我们需要彻底剥离家庭上下文:
IDENTITY.md:设定为”冷酷、严密、数据驱动”的量化管家。SOUL.md:设定为只通过数据、图表和逻辑说话,拒绝任何情感和家庭相关话题。USER.md:明确对 R 语言和响应式 Quarto (UTF-8) 报告的高要求。
步骤三:隔离通信渠道 (openclaw.json)
金融工作区应拥有专属的接收通道,以免与主工作区产生冲突:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_TELEGRAM_BOT_TOKEN"
},
"qqbot": {
"enabled": false
}
},
"gateway": {
"port": 18790,
"bind": "loopback"
}
}注意:修改端口 (18790) 非常重要,否则会与主工作区端口冲突导致启动失败。同时,不要忘了将主工作区的 Telegram 禁用,避免两个 Agent 抢消息。
4. 避坑要点 (Troubleshooting)
在配置过程中,我遇到了两个主要的技术坑,以下是解决办法:
避坑一:环境变量 (.env) 未同步导致模型调用失败
由于我为了安全起见,将所有真实的大模型 API Key 配置在了一个外置的 .env 文件中。当启动新的 finance profile 时,OpenClaw 会提示所有 API Key 缺失。
解决办法:手动将主工作区的 .env 文件复制到新的 profile 目录下。
Copy-Item -Path "~/.openclaw/.env" -Destination "~/.openclaw-finance/.env" -Force避坑二:安装后台服务报错”拒绝访问 (schtasks create failed)”
在 Windows 系统下,当我们试图运行 openclaw --profile finance gateway install 时,由于该命令会注册开机自启任务(schtasks),普通的终端权限会导致 拒绝访问。
解决办法:
- 必须使用管理员权限 (Run as Administrator) 打开 PowerShell。
- 在管理员终端中执行:
openclaw --profile finance gateway install
openclaw --profile finance gateway start如果只是想临时测试而不安装后台服务,可以直接运行前台命令: openclaw --profile finance gateway
5. 总结
通过多工作区物理隔离,我在同一台物理机上成功打造了两个”互不干扰的大脑”。家庭教育助手继续在 QQ 端温暖地陪伴 Andrew 和 Alice;而量化管家则在 Telegram 端冷静地执行 R 语言策略。
这种清晰的边界不仅保护了家庭隐私,也极大提升了特定任务的执行效率。希望这篇配置实践能给有类似需求的朋友带来启发!