OpenClaw 深度拆解:从环境部署到架构构造的完整指南

OpenClaw 深度拆解:从环境部署到架构构造的完整指南

OpenClaw 深度拆解:从环境部署到架构构造的完整指南

本文基于 OpenClaw 官方文档和源码分析,系统拆解这个 375k+ Stars 的个人 AI Agent 框架。从环境准备到核心架构,再到思维导图可视化,带你一文看懂 OpenClaw 的构造逻辑。


一、OpenClaw 是什么?

OpenClaw 是一个个人 AI 助手框架,你可以在自己的设备上运行它。它通过你已经在用的通讯渠道(WhatsApp、Telegram、Slack、Discord、Signal、iMessage 等 20+ 渠道)与你交互,支持语音唤醒、实时画布渲染,以及多 Agent 隔离运行。

核心特点:
– 本地优先:Gateway 守护进程跑在你自己的机器上
– 多渠道 inbox:20+ 通讯渠道统一接入
– 多 Agent 路由:每个 Agent 独立工作区、独立人格、独立会话
– 语音交互:macOS/iOS 唤醒词 + Android 持续语音
– 实时画布:Agent 驱动的可视化工作区(A2UI)
– Skills 生态:ClawHub 技能市场,5400+ 技能


二、环境部署:从零开始

2.1 系统要求

组件 最低要求 推荐
Node.js 22.19+ 24.x
OS macOS / Linux / Windows (WSL2) macOS / Linux
内存 4GB 8GB+
存储 2GB 5GB+

2.2 安装步骤

# 全局安装
npm install -g openclaw@latest
# 或 pnpm add -g openclaw@latest

# 引导安装(推荐)
openclaw onboard --install-daemon

onboard 会引导你完成:
1. Gateway 配置
2. 工作区初始化
3. 渠道连接(Telegram/WhatsApp/Slack 等)
4. Skills 安装

2.3 目录结构

~/.openclaw/
├── openclaw.json          # 主配置文件
├── credentials/           # 渠道/提供商状态 + OAuth 数据
├── agents/
│   └── <agentId>/
│       ├── agent/
│       │   └── auth-profiles.json  # 模型认证配置
│       └── sessions/      # 会话记录 (JSONL)
├── skills/                # 托管技能
└── sandboxes/            # 沙盒工作区

~/.openclaw/workspace/      # 默认 Agent 工作区
├── AGENTS.md             # 操作指令 + 记忆
├── SOUL.md               # 人格、语气、边界
├── USER.md               # 用户画像
├── IDENTITY.md           # Agent 名称/氛围/表情
├── TOOLS.md              # 本地工具约定
├── HEARTBEAT.md          # 心跳检查清单
├── BOOTSTRAP.md          # 首次运行仪式
├── memory/               # 每日记忆日志
│   └── YYYY-MM-DD.md
└── skills/               # 工作区专属技能

2.4 快速启动

# 守护进程模式(推荐)
openclaw onboard --install-daemon
openclaw gateway status

# 前台调试模式
openclaw gateway stop
openclaw gateway --port 18789 --verbose

# 发送测试消息
openclaw message send --target +1234567890 --message "Hello from OpenClaw"

# 与 Agent 对话
openclaw agent --message "Ship checklist" --thinking high

三、核心架构拆解

3.1 整体架构图

┌─────────────────────────────────────────────────────────────┐
│                        用户层 (Channels)                      │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐            │
│  │WhatsApp │ │Telegram │ │ Discord │ │  Slack  │  ...      │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘            │
│       └───────────┴───────────┴───────────┘                 │
│                         │                                   │
│                    ┌─────┴─────┐                            │
│                    │  Gateway   │  ← 单一控制平面              │
│                    │ (Daemon) │    WebSocket 服务器          │
│                    │:18789    │                              │
│                    └─────┬─────┘                            │
│       ┌─────────────────┼─────────────────┐                │
│       │                 │                 │                │
│  ┌────┴────┐      ┌────┴────┐      ┌────┴────┐           │
│  │  macOS  │      │  iOS    │      │ Android │           │
│  │  App    │      │  Node   │      │  Node   │           │
│  └─────────┘      └─────────┘      └─────────┘           │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐  │
│  │                    Agent Runtime                       │  │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐ │  │
│  │  │ Agent 1 │  │ Agent 2 │  │ Agent 3 │  │   ...   │ │  │
│  │  │(工作区A)│  │(工作区B)│  │(工作区C)│  │         │ │  │
│  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘ │  │
│  │                                                      │  │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐           │  │
│  │  │ Skills  │  │  Tools  │  │ Sessions│           │  │
│  │  │ 加载器  │  │ 执行器  │  │ 管理器  │           │  │
│  │  └─────────┘  └─────────┘  └─────────┘           │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

3.2 Gateway(网关)

Gateway 是 OpenClaw 的核心控制平面,负责:

  • 连接管理:维护所有渠道(WhatsApp/Telegram/Discord 等)的连接
  • WebSocket 服务器:暴露 typed WS API,处理请求/响应/事件
  • 协议验证:JSON Schema 校验入站帧
  • 事件分发:agent, chat, presence, health, heartbeat, cron

WebSocket 协议:

Transport: WebSocket, text frames with JSON
First frame: connect (必须)
Requests:  {type:"req", id, method, params}
Responses: {type:"res", id, ok, payload|error}
Events:    {type:"event", event, payload, seq?}

连接生命周期:

Client → Gateway: req:connect
Gateway → Client: res (ok) + event:presence + event:tick
Client → Gateway: req:agent
Gateway → Client: res:agent {runId, status:"accepted"}
Gateway → Client: event:agent (streaming)
Gateway → Client: res:agent final {runId, status, summary}

3.3 Agent Runtime(代理运行时)

OpenClaw 运行单个嵌入式 Agent 运行时,每个 Gateway 一个 Agent 进程,包含:

组件 说明
Workspace Agent 唯一工作目录(文件工具上下文)
Bootstrap 文件 AGENTS.md/SOUL.md/USER.md/IDENTITY.md 等
Skills 从多个来源加载,按优先级覆盖
Sessions JSONL 格式存储在 ~/.openclaw/agents/<id>/sessions/
Tools 内置工具(read/exec/edit/write 等)

Agent 循环(Agent Loop):

┌─────────────────────────────────────────────────┐
│              Agent Loop 生命周期                 │
├─────────────────────────────────────────────────┤
│  1. Intake → 接收用户输入                        │
│     ↓                                           │
│  2. Context Assembly → 组装系统提示 + 上下文     │
│     ↓                                           │
│  3. Model Inference → LLM 推理                   │
│     ↓                                           │
│  4. Tool Execution → 执行工具调用                │
│     ↓                                           │
│  5. Streaming Replies → 流式回复                 │
│     ↓                                           │
│  6. Persistence → 持久化会话记录                  │
└─────────────────────────────────────────────────┘

3.4 多 Agent 路由

OpenClaw 支持多 Agent 隔离运行,每个 Agent 拥有:

  • 独立工作区:~/.openclaw/agents/<agentId>/workspace
  • 独立认证:~/.openclaw/agents/<agentId>/agent/auth-profiles.json
  • 独立会话:~/.openclaw/agents/<agentId>/sessions/
  • 独立人格:各自的 SOUL.md + AGENTS.md

路由绑定(Bindings):

{
  agents: {
    list: [
      { id: "work", workspace: "~/workspaces/work" },
      { id: "personal", workspace: "~/workspaces/personal" }
    ]
  },
  bindings: [
    { channel: "telegram", account: "work_bot", agent: "work" },
    { channel: "whatsapp", account: "+1234567890", agent: "personal" }
  ]
}

3.5 Skills 系统

Skills 是 OpenClaw 的核心扩展机制,采用 AgentSkills 兼容格式。

加载优先级(高→低):

优先级 来源 路径
1 工作区 skills <workspace>/skills
2 项目 Agent skills <workspace>/.agents/skills
3 个人 Agent skills ~/.agents/skills
4 托管/本地 skills ~/.openclaw/skills
5 内置 skills 随安装包分发
6 额外目录 skills.load.extraDirs

Skill 结构:

skills/
└── my-skill/
    ├── SKILL.md          # YAML frontmatter + 使用说明
    ├── references/       # 参考文档
    ├── templates/        # 模板文件
    ├── scripts/          # 脚本工具
    └── assets/           # 静态资源

3.6 安全模型

OpenClaw 的安全设计围绕默认不信任原则:

层级 机制 说明
DM 配对 dmPolicy="pairing" 未知发送者收到配对码,需手动批准
沙箱隔离 agents.defaults.sandbox.mode: "non-main" 非 main 会话在 Docker 沙箱中运行
工具审批 exec-approvals 危险命令需用户确认
签名验证 connect.challenge 所有连接必须签名 nonce

默认沙箱策略:
– ✅ 允许:bash, process, read, write, edit, sessions_list, sessions_history, sessions_send, sessions_spawn
– ❌ 拒绝:browser, canvas, nodes, cron, discord, gateway


四、核心组件详解

4.1 Bootstrap 文件系统

文件 作用 加载时机
AGENTS.md 操作指令 + 记忆规则 每次会话
SOUL.md 人格、语气、边界 每次会话
USER.md 用户画像 + 称呼方式 每次会话
IDENTITY.md Agent 名称/氛围/表情 首次运行后
TOOLS.md 本地工具使用约定 每次会话
HEARTBEAT.md 心跳检查清单 心跳触发时
BOOTSTRAP.md 首次运行仪式 仅新工作区
memory/YYYY-MM-DD.md 每日记忆日志 按需检索

4.2 工具系统

内置工具:
– read / write / edit — 文件操作
– exec — 命令执行
– browser — 浏览器自动化
– canvas — 画布操作
– sessions_list / sessions_history / sessions_send — 会话管理
– cron — 定时任务

工具审批:
– 危险命令(如 rm -rf)触发审批流程
– 用户可通过配置调整审批阈值

4.3 会话管理

会话存储:~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl

会话特性:
– 会话 ID 由 OpenClaw 生成,稳定不变
– 支持会话压缩(compaction)避免 token 爆炸
– 支持会话队列(steer/followup/collect/interrupt)
– 会话写锁保护,防止并发冲突

4.4 模型配置

模型引用格式:provider/model

{
  models: {
    defaults: {
      model: "openai/gpt-5.5"
    },
    providers: [
      { id: "openai", apiKey: "sk-...", baseUrl: "https://api.openai.com/v1" },
      { id: "anthropic", apiKey: "sk-ant-...", baseUrl: "https://api.anthropic.com" }
    ]
  }
}

模型回退:当首选模型不可用时,自动回退到备用模型。


五、与同类框架对比

特性 OpenClaw Hermes Claude Code Codex CLI
定位 个人 AI 助手 通用 Agent 代码助手 代码助手
部署 本地 + 自托管 本地 + 自托管 云端 本地
渠道 20+ 通讯渠道 Telegram/QQ/Discord IDE 插件 终端
多 Agent ✅ 原生支持 ✅ 支持 ❌ ❌
语音 ✅ 唤醒词+持续 ❌ ❌ ❌
画布 ✅ A2UI ❌ ❌ ❌
Skills ✅ ClawHub ✅ 技能系统 ❌ ✅
开源 ✅ MIT ✅ ❌ ❌
Stars 375k+ 172k+ N/A N/A

六、总结

OpenClaw 是一个面向个人用户的全功能 AI Agent 框架,其核心设计理念是:

  1. 本地优先:数据不离开你的设备
  2. 渠道统一:一个 Gateway 管理所有通讯渠道
  3. Agent 隔离:多 Agent 独立人格、独立会话
  4. 可扩展:Skills 生态支持无限扩展
  5. 安全默认:DM 配对 + 沙箱 + 工具审批

对于想要拥有私有化、可定制、多渠道 AI 助手的用户来说,OpenClaw 是目前最成熟的开源方案之一。


参考链接


本文基于 OpenClaw 官方文档和源码分析整理,如有更新请以官方文档为准。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注