OpenClaw 探索笔记:多 Agent 架构

摘要:本文深入解析 OpenClaw 的多 Agent 架构,包括核心概念、三层隔离机制、配置实战和安全最佳实践。无论你是想实现工作/生活隔离,还是想安全地分享 AI 能力给朋友,这篇文章都能给你答案。

提醒:该文章内容与 OpenClaw 共同探索完成,主要用作笔记参考,请辩证看待。


📖 目录

  1. 为什么需要多 Agent?
  2. 核心概念:什么是"一个 Agent"
  3. 三层隔离机制详解
  4. 实战:配置访客 Agent
  5. 安全最佳实践
  6. 常见问题解答

为什么需要多 Agent?

真实场景驱动

在研究 OpenClaw 多 Agent 架构之前,我们遇到了一个真实需求:

场景:我想把 AI 助手分享给朋友体验,或者帮朋友解决一些具体问题。但我不希望直接把主 Agent 提供给他们——我担心主 Agent 被"污染",同时主 Agent 具备的权限太高了。我需要一个权限足够低、完全不可能威胁到我隐私、可用性以及宿主机安全的 Agent。

这个需求揭示了多 Agent 架构的核心价值:

需求 单 Agent 方案 多 Agent 方案
工作/生活隔离 会话混合,记忆污染 完全物理隔离
权限控制 全有或全无 细粒度权限控制
分享体验 暴露全部隐私 独立沙盒环境
多人共享 会话历史混乱 每人独立 Agent

多 Agent 的真正价值场景

  1. 个人用户:工作/生活分离,不同人格切换
  2. 团队共享:多人共享一个 Gateway,每人独立 AI
  3. 访客体验:安全地分享 AI 能力,权限受限
  4. 专业隔离:不同领域专家(编程、写作、研究)

核心概念:什么是"一个 Agent"

在 OpenClaw 中,一个 Agent 是一个完全隔离的"大脑",拥有独立的:

1. Workspace(工作区)

~/.openclaw/workspace-main/
├── SOUL.md      # 人格设定
├── AGENTS.md    # 操作指令
├── USER.md      # 用户信息
├── TOOLS.md     # 工具笔记
├── MEMORY.md    # 长期记忆
└── skills/      # 专属技能

这是 Agent 的"知识库"和"人格设定"。

2. AgentDir(状态目录)

~/.openclaw/agents/main/agent/
├── auth-profiles.json  # API 密钥
├── models.json         # 模型配置
└── config.json         # 专属配置

这是 Agent 的"认证信息"和"配置中心"。

3. Sessions(会话存储)

~/.openclaw/agents/main/sessions/
├── session-001.jsonl
├── session-002.jsonl
└── ...

这是 Agent 的"对话历史"。

关键理解

  • 每个 Agent 完全独立 — 不共享认证、会话、记忆
  • 技能可以共享~/.openclaw/skills 是全局技能库
  • Workspace 是隔离的 — 但只是逻辑隔离,不是物理沙盒

三层隔离机制详解

OpenClaw 提供三个层次的隔离,可以叠加使用

层级 1:逻辑隔离(必选,Always On)

┌─────────────────────────────────────┐
│         Gateway 进程                 │
│  ┌───────────┐     ┌───────────┐    │
│  │ main      │     │ guest     │    │
│  │ Agent     │     │ Agent     │    │
│  │           │     │           │    │
│  │ Workspace │     │ Workspace │    │
│  │ 隔离       │     │ 隔离       │    │
│  │ Session   │     │ Session   │    │
│  │ 隔离       │     │ 隔离       │    │
│  │ Auth      │     │ Auth      │    │
│  │ 隔离       │     │ 隔离       │    │
│  └───────────┘     └───────────┘    │
└─────────────────────────────────────┘

隔离内容

  • Workspace 隔离 — 每个 Agent 有自己的工作目录
  • Session 隔离 — 会话存储在不同文件夹
  • Auth 隔离 — API Keys 独立
  • 配置隔离 — 每个 Agent 可以有不同的配置

实现方式:配置文件中定义 agents.list[],Gateway 内部路由时根据 agentId 切换上下文。

这是 OpenClaw 的核心能力 — 无需 Docker,原生支持。


层级 2:工具权限隔离(可选,配置实现)

{
  agents: {
    list: [
      {
        id: "main",
        tools: {
          profile: "full",  // 完整工具集
        },
      },
      {
        id: "guest",
        tools: {
          profile: "restricted",  // 限制工具集
          allow: ["read", "web_search"],  // 白名单
        },
      },
    ],
  },
}

隔离内容

  • 工具白名单 — guest Agent 只能用允许的工具
  • 命令限制 — 可以禁止 exec
  • 文件操作限制 — 可以禁止 edit/write

实现方式:配置 tools.profiletools.allow,Gateway 在工具调用前检查权限。

这也是核心能力 — 配置驱动,无需额外组件。


层级 3:沙盒隔离(可选,需要 Docker)

┌─────────────────────────────────────────────┐
│         Gateway 进程                         │
│  ┌───────────┐     ┌───────────┐            │
│  │ main      │     │ guest     │            │
│  │ Agent     │     │ Agent     │            │
│  │ (直接运行) │     │ (沙盒运行)│            │
│  │           │     │           │            │
│  │  ┌─────┐  │     │  ┌─────┐  │            │
│  │  │工具 │  │     │  │工具 │  │            │
│  │  │执行 │  │     │  │执行 │  │            │
│  │  └──┬──┘  │     │  └──┬──┘  │            │
│  │     │    │     │     │     │            │
│  │     ▼    │     │     ▼     │            │
│  │  宿主机   │     │  Docker   │            │
│  │  文件系统 │     │  Container│            │
│  │           │     │  ┌─────┐  │            │
│  │           │     │  │隔离  │  │            │
│  │           │     │  │文件系统│  │            │
│  │           │     │  └─────┘  │            │
│  └───────────┘     └───────────┘            │
└─────────────────────────────────────────────┘

隔离内容

  • 文件系统隔离 — 容器内无法访问宿主机文件
  • 进程隔离 — 容器内进程与宿主机隔离
  • 网络隔离 — 可限制容器网络访问
  • 资源限制 — 可限制 CPU/内存使用

实现方式:配置 agents.defaults.sandbox.mode,Gateway 启动 Docker 容器,工具执行在容器内进行。

这是可选能力 — 需要 Docker,但配置简单。


三层隔离对比表

隔离层级 是否需要 Docker 配置复杂度 安全级别 适用场景
逻辑隔离 ❌ 否 ⭐ 简单 ⭐⭐ 基础 信任用户、工作/生活分离
工具权限 ❌ 否 ⭐⭐ 中等 ⭐⭐⭐ 中等 访客体验、权限控制
沙盒隔离 ✅ 是 ⭐⭐⭐ 较高 ⭐⭐⭐⭐ 最高 不受信任用户、高风险操作

实战:配置访客 Agent

场景描述

你想让朋友体验 AI 能力,但希望:

  • ✅ 主 Agent 不被"污染"(记忆、会话历史)
  • ✅ 朋友无法访问你的文件
  • ✅ 即使被滥用,影响也局限在安全范围内

步骤 1:创建访客 Agent

# 创建 guest Agent
openclaw agents add guest --workspace ~/.openclaw/workspace-guest

这会创建:

  • ~/.openclaw/workspace-guest/ — 独立工作区
  • ~/.openclaw/agents/guest/ — 独立认证和会话存储

步骤 2:配置访客 Agent 的身份

创建 ~/.openclaw/workspace-guest/SOUL.md

# SOUL.md - Guest Agent

你是一个友好的 AI 助手,专门帮助用户体验 AI 能力。

## 边界
- 不访问用户个人文件
- 不执行系统命令
- 不存储敏感信息
- 只提供通用帮助和演示

## 能力
- 网络搜索
- 网页内容提取
- 通用问题解答
- 代码示例(不执行)

## 语气
- 友好、耐心
- 适合新手体验

创建 ~/.openclaw/workspace-guest/AGENTS.md

# AGENTS.md - Guest Agent

## 工作目录
- 仅限:`~/.openclaw/workspace-guest/`
- 禁止:访问其他目录

## 可用工具
- ✅ read (只读工作区内文件)
- ✅ web_search
- ✅ web_fetch
- ❌ exec (禁止命令执行)
- ❌ edit/write (禁止修改文件)

步骤 3:配置主配置文件

编辑 ~/.openclaw/openclaw.json

{
  // 定义两个 Agent
  agents: {
    list: [
      {
        id: "main",
        workspace: "~/.openclaw/workspace",
        tools: {
          profile: "full",
        },
      },
      {
        id: "guest",
        workspace: "~/.openclaw/workspace-guest",
        // 🔒 安全限制
        tools: {
          profile: "restricted",
          allow: [
            "read",
            "web_search",
            "web_fetch",
          ],
          deny: [
            "exec",
            "edit",
            "write",
          ],
        },
        // 可选:启用沙盒(需要 Docker)
        sandbox: {
          mode: "all",
        },
      },
    ],
  },
  
  // 📡 路由配置
  bindings: [
    // 你的飞书 → main Agent
    {
      agentId: "main",
      match: { channel: "feishu", accountId: "default" },
    },
    // 朋友的 Telegram → guest Agent
    {
      agentId: "guest",
      match: { channel: "telegram", accountId: "guest-bot" },
    },
  ],
  
  // 💬 渠道配置
  channels: {
    feishu: {
      accounts: {
        default: {
          appId: "cli_xxx",
          appSecret: "***",
        },
      },
    },
    telegram: {
      accounts: {
        "guest-bot": {
          botToken: "GUEST_BOT_TOKEN",
          dmPolicy: "allowlist",
          allowFrom: ["tg:friend_user_id"],  // 只允许特定朋友
        },
      },
    },
  },
}

步骤 4:验证配置

# 查看 Agent 列表
openclaw agents list

# 查看路由绑定
openclaw agents list --bindings

# 重启 Gateway
openclaw gateway restart

安全最佳实践

1. 最小权限原则

访客 Agent 只授予必要的权限:

{
  id: "guest",
  tools: {
    profile: "restricted",
    allow: [
      "read",        // 只读
      "web_search",  // 搜索
      "web_fetch",   // 抓取网页
    ],
    // 明确禁止
    deny: [
      "exec",        // 禁止命令
      "edit",        // 禁止编辑
      "write",       // 禁止写入
      "message",     // 禁止主动发消息
    ],
  },
}

2. 工作区隔离

确保访客 Agent 的 Workspace 是干净的:

# 创建干净的工作区
mkdir -p ~/.openclaw/workspace-guest

# 只复制必要的文件
cp ~/Library/pnpm/global/5/.pnpm/openclaw@*/node_modules/openclaw/skills/README.md ~/.openclaw/workspace-guest/

3. 渠道访问控制

使用 allowFrom 限制访问用户:

{
  channels: {
    telegram: {
      accounts: {
        "guest-bot": {
          dmPolicy: "allowlist",
          allowFrom: [
            "tg:123456789",  // 朋友 A
            "tg:987654321",  // 朋友 B
          ],
        },
      },
    },
  },
}

4. 沙盒加固(可选)

对于不受信任的用户,启用 Docker 沙盒:

# 创建沙盒镜像
openclaw sandbox setup
{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main",  // 非 main Agent 都用沙盒
        scope: "session",  // 每会话一个容器
      },
    },
  },
}

5. 监控和审计

定期检查访客 Agent 的使用情况:

# 查看会话历史
openclaw sessions list --agent guest

# 查看日志
openclaw logs --follow | grep "guest"

常见问题解答

Q1: 多 Agent 会影响性能吗?

A: 影响很小。多个 Agent 运行在同一个 Gateway 进程里,只是逻辑隔离。只有启用沙盒时,Docker 容器会有轻微开销(约 5-10%)。

Q2: 每个 Agent 需要独立的 API Key 吗?

A: 是的。每个 Agent 有独立的 auth-profiles.json,需要分别配置 API Key。这是为了审计和权限控制。

Q3: 可以在同一个渠道(如飞书)上使用多 Agent 吗?

A: 可以,但需要多个 Bot 账号。飞书企业应用可以创建多个 Bot,每个 Bot 绑定一个 Agent。如果只有一个 Bot 账号,可以根据发送者路由到不同 Agent(见官方文档 multi-agent.md)。

Q4: 沙盒是必须的吗?

A: 不是。对于信任的用户(如自己的工作/生活分离),逻辑隔离 + 工具权限已经足够。沙盒适用于不受信任的用户(如公开分享)。

Q5: 如何删除一个 Agent?

# 删除 Agent(会删除所有会话和配置)
openclaw agents delete guest

# 手动清理工作区
rm -rf ~/.openclaw/workspace-guest

Q6: 可以在运行时切换 Agent 吗?

A: 不能。Agent 是在消息接收时根据 bindings 路由确定的。但你可以在对话中使用 /new 命令创建新会话,实现"软切换"。

Q7: 多 Agent 的最佳实践是什么?

A:

  1. 从单 Agent 开始,有需求再拆分
  2. 按场景拆分(工作/生活、专业领域)
  3. 不要过度拆分(维护成本高)
  4. 访客 Agent 必须限制权限
  5. 定期审计和清理

总结

OpenClaw 的多 Agent 架构提供了灵活、安全、可扩展的隔离方案:

隔离层级 配置难度 安全级别 推荐场景
逻辑隔离 ⭐⭐ 工作/生活分离
+ 工具权限 ⭐⭐ ⭐⭐⭐ 访客体验
+ 沙盒隔离 ⭐⭐⭐ ⭐⭐⭐⭐ 不受信任用户

核心要点

  1. 多 Agent 是 OpenClaw 的核心能力,无需额外组件
  2. 三层隔离可以叠加使用,按需选择
  3. 访客 Agent 必须限制权限,推荐使用沙盒
  4. 定期审计和清理,保持系统安全

参考资料


作者: SLASH 🦞
最后更新: 2026-03-12
基于: OpenClaw v2026.3.8


欢迎转发分享,转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容