OpenClaw给每个Agent单独指定workspace
在OpenClaw中为每个Agent独立配置Workspace
想让OpenClaw里的每个Agent都有自己专属的工作区,互不干扰,这个需求其实挺常见的。毕竟谁都不希望“写手”Agent生成的文件,被“开发”Agent不小心改掉吧?
实现起来并不复杂,核心就在于配置文件。你得在 agents.list 里,为每个Agent对象都明确写上 workspace 这个字段,用它来覆盖掉默认的路径。下面就是一个可以直接复制粘贴的完整配置方案,还附带了一些关键的注意事项。
一、核心配置写法(openclaw.json)
首先,找到这个文件:~/.openclaw/openclaw.json,然后参考下面的结构进行修改。
{
"agents": {
// 全局默认(可选,不写也可以)
"defaults": {
"workspace": "~/.openclaw/workspace-default"
},
// 每个 Agent 单独配置
"list": [
{
"id": "main",
"model": "gpt-4o",
// 给 main 单独指定工作区
"workspace": "~/.openclaw/workspaces/main"
},
{
"id": "write",
"model": "claude-sonnet",
// 给 write 单独指定工作区
"workspace": "~/.openclaw/workspaces/write"
},
{
"id": "design",
"model": "qwen-vl",
// 给 design 单独指定工作区
"workspace": "~/.openclaw/workspaces/design"
},
{
"id": "dev",
"model": "deepseek-coder",
// 给 dev 单独指定工作区
"workspace": "~/.openclaw/workspaces/dev"
},
{
"id": "ops",
"model": "gpt-4o-mini",
// 给 ops 单独指定工作区
"workspace": "~/.openclaw/workspaces/ops"
}
]
}
}
关键规则
这里有几条关键规则必须把握住:
- 优先级原则:
agents.list里为单个Agent指定的workspace,其优先级是最高的,会直接覆盖掉agents.defaults.workspace这个全局默认值。 - 路径格式:路径支持使用
~来代表用户目录,也支持绝对路径或相对路径。采用相对路径时,会基于~/.openclaw这个目录来计算。 - 自动创建:好消息是,不用担心手动建目录的麻烦。即使你指定的目录不存在,OpenClaw在启动时通常也会自动为你创建,这一点在其官方文档(docs.openclaw.ai)中也有说明。
二、先创建目录(推荐)
不过,话说回来,提前在终端里把所有独立的目录都建好,其实是个好习惯。这样做能避免一些潜在的权限问题,让整个过程更加顺畅。
# 创建父目录
mkdir -p ~/.openclaw/workspaces
# 为每个 Agent 创建独立工作区
mkdir -p ~/.openclaw/workspaces/main
mkdir -p ~/.openclaw/workspaces/write
mkdir -p ~/.openclaw/workspaces/design
mkdir -p ~/.openclaw/workspaces/dev
mkdir -p ~/.openclaw/workspaces/ops
三、验证是否生效
配置好了,怎么知道真的生效了呢?别急,按下面三步走,一验便知。
-
重启服务,加载配置:首先,让OpenClaw重新启动一下,确保新的配置被正确加载。
openclaw restart -
查看工作区路径:接下来,可以用命令行工具分别查看每个Agent当前使用的工作区路径,确认是否已经切换到我们指定的位置。
# 查看 main 的工作区 openclaw config get --agent main agents.list[0].workspace # 查看 write 的工作区 openclaw config get --agent write agents.list[1].workspace -
实战测试隔离效果:最直观的验证方法就是做个简单的读写测试。例如,切换到“write”Agent,让它创建一个文件;然后再切换到“dev”Agent,让它尝试去读取这个文件。如果“dev”提示找不到,那就恭喜你,目录隔离成功了。
# 切换到 write,创建文件 openclaw use write session_send write "write test.txt 'hello write'" # 切换到 dev,尝试读取(会提示找不到,隔离成功) openclaw use dev session_send dev "read test.txt"
四、命令行快速添加(不手动改JSON)
如果你觉得直接编辑JSON文件有点麻烦,OpenClaw也提供了更方便的命令行操作。用下面这条命令,可以一键创建一个已经配置好独立工作区的Agent,配置会自动写入到文件中。
openclaw agents add \
--id write \
--model claude-sonnet \
--workspace ~/.openclaw/workspaces/write
五、搭配沙箱(彻底隔离)
对于安全性要求极高的场景,仅仅指定不同的工作目录可能还不够。这时候,可以考虑为Agent增加 sandbox 配置,实现彻底的运行环境隔离。这样一来,每个Agent不仅文件目录是独立的,其运行环境也完全被“关”在自己的沙箱里,无法越权访问到主机的其他目录。
{
"id": "write",
"model": "claude-sonnet",
"workspace": "~/.openclaw/workspaces/write",
"sandbox": {
"mode": "all", // 强制开启沙箱模式
"scope": "agent", // 每个 Agent 拥有独立沙箱
"workspaceAccess": "none" // 沙箱内无法看到主机其他目录
}
}