Skip to content

8.2 工作区物理隔离 ​


想象一下这个场景:

公司里有五个部门:研发、销售、运营、财务、人事。

如果所有人都挤在一个大办公室里,会发生什么?

研发在讨论代码,销售在打电话,运营在吵架...一片混乱。

所以公司给每个部门独立的办公室。各有各的档案柜,各有各的会议记录。

多 Agent 的核心也是这样——物理隔离。每个 Agent 有自己的办公室、自己的档案柜、自己的记忆。这一节,我们用15分钟,理解多Agent的物理隔离机制。


每个Agent独立工作区 ​

在 OpenClaw 里,一个 Agent 是一个完全独立作用域的“大脑”:

Workspace(工作区) ​

存放文件、AGENTS.md、SOUL.md、本地笔记、人设规则。就像员工的办公桌和文件柜。

AgentDir(状态目录) ​

存放认证配置文件、模型注册表、每 Agent 配置。就像员工的工牌和系统账号。

Sessions(会话存储) ​

独立的聊天记录,位于 ~/.openclaw/agents/<agentId>/sessions。就像员工的邮件历史。

认证配置文件是每 Agent 独立的。每个 Agent 从自己的位置读取:

~/.openclaw/agents/<agentId>/agent/auth-profiles.json

⚠️ 重要:主 Agent 凭证不会自动共享。切勿在 Agent 之间重用 agentDir,这会导致认证/会话冲突。


工作区目录结构 ​

单Agent模式 ​

~/.openclaw/
├── openclaw.json          # 全局配置
├── workspace/             # 主工作区
│   ├── AGENTS.md          # 行为规则
│   ├── SOUL.md            # 人格定义
│   ├── USER.md            # 用户信息
│   ├── MEMORY.md          # 长期记忆
│   ├── TOOLS.md           # 工具使用指南
│   ├── HEARTBEAT.md       # 定时任务监控
│   └── memory/            # 每日日志
└── agents/
    └── main/
        ├── agent/         # 认证配置
        └── sessions/      # 会话记录

多Agent模式 ​

~/.openclaw/
├── openclaw.json
├── workspace-main/        # 主Agent工作区
├── workspace-research/    # 研究Agent工作区
├── workspace-writer/      # 写作Agent工作区
├── skills/                # 全局共享技能
└── agents/
    ├── main/
    ├── research/
    └── writer/

每个 Agent 有自己的一套文件,互不干扰。


试一试:创建你的第二个Agent ​

用命令行快速创建:

bash
# 添加新Agent
openclaw agents add research \
  --model zai/glm-4.7 \
  --workspace ~/.openclaw/workspace-research

# 设置身份
openclaw agents set-identity --agent research \
  --name "研究员" \
  --emoji "🔍"

验证创建成功:

bash
openclaw agents list --bindings

你应该看到 agents.list 里多了一个 research 条目。

AGENT ID    NAME      WORKSPACE
main        主助手     ~/.openclaw/workspace
research    研究员     ~/.openclaw/workspace-research

子Agent能看到什么? ​

当你用 sessions_spawn 创建子任务时,子 Agent 的可见范围是受限的。

主会话能看到 ​

全部文件(AGENTS.md、SOUL.md、IDENTITY.md、USER.md、TOOLS.md、MEMORY.md、HEARTBEAT.md、BOOTSTRAP.md)

子Agent/Cron只能看到 ​

白名单 5 个文件:

文件说明
AGENTS.md行为规则
TOOLS.md工具指南
SOUL.md人格定义
IDENTITY.md身份信息
USER.md用户信息

被过滤掉的 ​

文件为什么过滤
MEMORY.md防止子任务污染长期记忆
HEARTBEAT.md定时任务配置不需要给子任务
BOOTSTRAP.md启动配置不需要给子任务

这意味着:子 Agent 看不到主 Agent 的长期记忆。如果需要历史背景,要在 task 描述里显式提供。

实践建议

spawn 时在 task 里显式给路径:

前置必读:
1. read prompts/content-guidelines.md — 内容创作规范
2. read memory/2026-03-10.md — 今日背景

隔离的好处和风险 ​

好处 ​

好处说明
记忆隔离写代码的 Agent 不会干扰写文案的 Agent
安全隔离可以给不同 Agent 设置不同的工具权限
资源控制沙箱隔离特定 Agent,其他 Agent 不受影响
独立演进每个 Agent 的记忆文件独立增长,互不拖累

风险 ​

风险说明
信息孤岛Agent 之间默认不能通信,需要额外配置
重复配置每个 Agent 都要单独设置认证、模型、工具权限
协调成本任务需要在 Agent 之间流转时,需要设计好交接机制

文件协作模式 ​

Agent 之间怎么共享信息?最简单的办法:文件。

workspace-main/
├── intel/
│   ├── DAILY-INTEL.md     # 研究员写入
│   └── data/
│       └── 2026-03-10.json
└── agents/
    ├── writer/             # 写作Agent读取intel/
    └── twitter/

协作原则 ​

原则说明
一写多读避免多个 Agent 同时写同一个文件
显式读取在 AGENTS.md 里写明“从哪读、写到哪”
数据双份JSON 存结构化数据,Markdown 存人类可读版本

每Agent独立配置 ​

从 v2026.1.6 开始,每个 Agent 可以有自己的沙箱和工具限制:

json5
{
  agents: {
    list: [
      {
        id: "personal",
        workspace: "~/.openclaw/workspace-personal",
        sandbox: {
          mode: "off",  // 个人Agent无沙箱
        },
        // 无工具限制
      },
      {
        id: "family",
        workspace: "~/.openclaw/workspace-family",
        sandbox: {
          mode: "all",     // 始终沙箱隔离
          scope: "agent",  // 每Agent一个容器
        },
        tools: {
          allow: ["read"],
          deny: ["exec", "write", "edit"],
        },
      },
    ],
  },
}

这样,personal Agent 可以执行任意命令,而 family Agent 只能读取文件。


故障排查 ​

Agent创建失败 ​

检查项操作
workspace 路径确保目录存在且有写权限
模型名称确认模型 ID 正确(如 zai/glm-5)
配置语法运行 openclaw config validate 检查

子Agent找不到文件 ​

检查项操作
文件是否在白名单子 Agent 只能看到 5 个白名单文件
路径是否正确使用相对于 workspace 的路径
task 是否显式指定在 task 里用 read 命令指定文件

Agent之间文件不共享 ​

检查项操作
workspace 是否独立每个 Agent 有自己的 workspace 目录
是否需要共享使用公共目录(如 ~/.openclaw/skills/)

这一节,你做了什么 ​

学了什么核心理解
物理隔离Workspace、AgentDir、Sessions 各自独立
目录结构多 Agent 模式下每个 Agent 有自己的工作区
子Agent限制只能看到 5 个白名单文件,看不到 MEMORY.md
协作模式通过文件系统实现“一写多读”
独立配置每 Agent 可设置不同的沙箱和工具权限

下一节 ​

物理隔离让每个 Agent 有了自己的“办公室”。但它们之间怎么通信呢?

8.3 Agent间通信。

基于 MIT 许可发布