jixiaxue 知识库
research / OpenClaw学习框架

OpenClaw 学习框架

6 个章节 · 0 条产出 · 0 条证据

OpenClaw 学习框架

状态:🟢 已完成 日期:2026-03-22 驱动问题:如何系统性地理解和学习 OpenClaw 这个自托管多通道 AI 网关? 方法论:系统架构分层学习法 + 组件分解法 数据来源:https://deepwiki.com/openclaw/openclaw 全部 12 大章节 + 20+ 子章节


结论摘要

  1. OpenClaw 是一个自托管的多通道 AI 网关,将 20+ 消息平台(WhatsApp/Telegram/Discord/Signal/iMessage/Slack 等)统一连接到 AI 个人助理,采用 Hub-and-Spoke 架构
  2. 核心是 Gateway + Pi Agent Runtime 双引擎:Gateway 负责连接管理/路由/认证,Agent Runtime 负责 LLM 调用/工具执行/上下文管理
  3. 高度模块化设计:Skills 系统(SKILL.md 格式)+ Plugin SDK(Channel/Auth/Tool 三类插件)+ 原生客户端(iOS/Android/macOS)
  4. 安全模型基于”单一可信运营者”假设,通过 9 层工具策略级联、SSRF 防护、沙箱隔离、设备配对等实现多层安全
  5. 学习路径建议:概念 → 架构 → Gateway → Agent Runtime → Skills/Channels → 高级特性(Cron/多 Agent/安全)

详细论证 → findings.md


方法论如何指导本次调研

系统架构分层学习法 定义了学习维度:

  • 第 0 层:概念与定位(是什么、解决什么问题)→ 0-概念与定位.md
  • 第 1 层:系统架构(Hub-and-Spoke、数据流、组件关系)→ 1-系统架构.md
  • 第 2 层:核心引擎(Gateway + Agent Runtime 深入)→ 2-Gateway核心.md, 3-Agent-Runtime核心.md
  • 第 3 层:扩展系统(Channels/Skills/Plugins)→ 4-消息通道与Skills.md
  • 第 4 层:高级特性(Cron/多 Agent/原生客户端/安全)→ 5-高级特性.md

组件分解法 指导每个层级的学习:

  • 每个组件拆解为:职责 → 接口 → 数据流 → 配置 → 安全边界
  • 组件间关系通过数据流串联

调研框架

OpenClaw学习框架/
├── _brief.md                    ← 你在这里(调研地图)
├── 0-概念与定位.md               ← 第 0 层:是什么、为什么、核心术语
├── 1-系统架构.md                 ← 第 1 层:整体架构、数据流、存储
├── 2-Gateway核心.md              ← 第 2 层-A:网关协议/认证/配置/会话/路由
├── 3-Agent-Runtime核心.md        ← 第 2 层-B:执行管线/工具系统/上下文压缩
├── 4-消息通道与Skills.md         ← 第 3 层:Channels + Skills + Plugin SDK
├── 5-高级特性.md                 ← 第 4 层:Cron/原生客户端/安全/开发
└── findings.md                  ← 收敛:学习路径推荐 + 关键洞察

关联调研

调研章节

0 OpenClaw — 概念与定位

OpenClaw — 概念与定位

📍 位置:OpenClaw学习框架 / 第 0 层 📌 核心发现:OpenClaw 是自托管多通道 AI 网关,将消息平台统一接入 AI 助理 📥 输入:DeepWiki Overview / Getting Started / Core Concepts / Glossary 📤 流向:→ findings.md [定位与价值判断]


一句话定义

OpenClaw is a self-hosted multi-channel AI gateway that connects messaging platforms to personal AI assistants.

关键词拆解:

关键词含义
Self-hosted运行在个人硬件上(macOS/Linux/WSL2),本地优先,数据不经第三方
Multi-channel同时服务 20+ 消息平台(WhatsApp、Telegram、Discord、Signal、iMessage、Slack、Matrix…)
AI Gateway中心化网关,统一管理所有通道→Agent 的连接、路由、认证
Personal Assistant面向个人使用场景,非企业多租户

解决什么问题

没有 OpenClaw 之前:

  • 想在 Telegram 用 AI 助理?写一个 Bot
  • 想在 Discord 也用?再写一个
  • WhatsApp 也要?又一个
  • 每个都要单独管理会话、配置 API Key、设置工具权限……

有了 OpenClaw 之后:

  • 一个 Gateway 进程统一管理所有通道
  • 一套会话系统跨平台隔离
  • 一套工具/技能体系所有通道共享
  • 一套安全策略统一管控

核心特性一览

特性说明
多通道20+ 消息平台,DM + 群聊 + 线程
多 Agent单 Gateway 可承载多个隔离的 Agent,各自独立工作区/人格/工具
多模型支持 Anthropic、OpenAI、Google、Ollama 等,自动故障转移
工具系统exec(命令执行)、文件操作、网络搜索、记忆检索等,策略级联管控
Skills模块化能力扩展,SKILL.md 声明式格式
Cron定时自动化任务,支持 cron 表达式/固定间隔/一次性
原生客户端iOS/Android/macOS 原生 App,摄像头/录屏/语音唤醒等设备能力
Plugin SDK第三方扩展:自定义 Channel、Auth、Tool 插件
本地优先配置/会话/凭证全部存储在 ~/.openclaw/

核心术语表

架构层

术语定义
Gateway中央控制面,管理通道连接、会话持久化、Agent 编排
Agent隔离的 AI 执行单元,拥有独立工作区、人格、配置
Pi Agent / Pi EmbeddedAgent 的具体执行环境,处理系统提示词、工具调用、模型回退
Channel连接 Gateway 到外部消息平台的插件
Node原生客户端设备(iOS/Android/macOS),提供设备本地能力
Session对话线程,包含隔离的聊天历史和执行状态
SessionKey会话唯一标识,格式 channel:account:peer

数据与配置层

术语定义
Workspace持久化文件系统目录(默认 ~/.openclaw/workspace),存放 SOUL.md、AGENTS.md、Skills
SOUL.mdAgent 的人格/行为指令文件
AGENTS.md多 Agent 路由配置文件
SecretRef安全引用系统,从环境变量或文件解析密钥,避免明文存储
TranscriptPolicy对话历史发送给 LLM 前的处理规则(过滤、格式化)
Compaction自动总结长对话以适应模型上下文窗口
CalVer版本号格式 YYYY.M.D(如 2026.3.14

扩展层

术语定义
Skill模块化工具+提示词包,SKILL.md 格式
PluginGateway 级扩展(Channel/Auth/Tool),通过 Plugin SDK 开发
A2UIAgent-to-User Interface,Canvas 和交互元素渲染格式
SwabblemacOS 语音唤醒守护进程
Binding将特定通道/用户映射到特定 Agent 的配置
Subagent主 Agent 派生的子 Agent,权限受限
Hook插件定义的回调函数,在 Agent 生命周期特定点执行

环境要求

项目要求
Node.jsv24(推荐)或 v22.16+
系统macOS / Linux / Windows (WSL2)
包管理npm / pnpm / bun
当前版本2026.3.14 (CalVer)

快速启动

# 1. 安装
npm install -g openclaw@latest

# 2. 引导向导(配置模型 API Key、Gateway、通道)
openclaw onboard

# 3. 启动网关
openclaw gateway start

# 4. 打开控制台
openclaw dashboard

# 5. 诊断检查
openclaw doctor

引导向导两种模式:

  • QuickStart:最少交互,默认端口 18789、token 认证、pairing 模式
  • Advanced:逐项手动配置

存储布局

~/.openclaw/
├── openclaw.json                    # 主配置(JSON5 格式)
├── credentials/                     # OAuth/API Key 凭证
├── agents/
│   └── <agentId>/
│       ├── agent/
│       │   ├── auth-profiles.json   # 模型供应商凭证
│       │   └── models.json          # 模型注册表
│       └── sessions/
│           ├── sessions.json        # 会话注册表
│           └── *.jsonl              # 对话记录
├── workspace/                       # 默认工作区
│   ├── SOUL.md                      # Agent 人格
│   ├── AGENTS.md                    # 多 Agent 配置
│   └── skills/                      # 技能目录
├── skills/                          # 全局共享技能
├── cron/
│   ├── jobs.json                    # 定时任务定义
│   └── runs.jsonl                   # 执行日志
└── workspace-<agentId>/             # 多 Agent 独立工作区

与类似产品的定位差异

维度OpenClaw类似产品(如 Botpress/Rasa/Dify)
部署模型个人自托管企业/云端
用户模型单一可信运营者多租户
通道覆盖20+ 统一网关通常 3-5 个
Agent 运行时内嵌 Pi Agent + 工具执行通常调用外部 API
扩展方式Skills (SKILL.md) + Plugin SDK通常 GUI 配置
原生客户端iOS/Android/macOS App通常仅 Web
1 OpenClaw — 系统架构

OpenClaw — 系统架构

📍 位置:OpenClaw学习框架 / 第 1 层 📌 核心发现:Hub-and-Spoke 架构,Gateway 为中心,所有接口通过 WebSocket/HTTP 连接 📥 输入:DeepWiki System Architecture / Protocol / Configuration 📤 流向:→ findings.md [架构理解与设计决策]


整体架构:Hub-and-Spoke

                    ┌─────────────────────────────────────────────┐
                    │              Gateway (Hub)                   │
                    │         Node.js / Port 18789                │
                    │                                             │
                    │  ┌───────────┐  ┌──────────────┐           │
                    │  │ Session   │  │ Channel      │           │
                    │  │ Manager   │  │ Manager      │           │
                    │  └───────────┘  └──────────────┘           │
                    │  ┌───────────┐  ┌──────────────┐           │
                    │  │ Agent     │  │ Tool Policy  │           │
                    │  │ Executor  │  │ Pipeline     │           │
                    │  └───────────┘  └──────────────┘           │
                    │  ┌───────────┐  ┌──────────────┐           │
                    │  │ Cron      │  │ Config       │           │
                    │  │ Service   │  │ System       │           │
                    │  └───────────┘  └──────────────┘           │
                    └──────────┬───────────┬──────────────────────┘
                               │           │
              ┌────────────────┼───────────┼─────────────────┐
              │                │           │                 │
     ┌────────▼──────┐  ┌─────▼───┐  ┌────▼────┐   ┌───────▼──────┐
     │  Messaging     │  │  CLI    │  │ Control │   │  Native      │
     │  Channels      │  │         │  │   UI    │   │  Clients     │
     │  (Spokes)      │  │         │  │  (SPA)  │   │  (Nodes)     │
     ├────────────────┤  └─────────┘  └─────────┘   ├──────────────┤
     │ Telegram       │                              │ iOS          │
     │ Discord        │                              │ Android      │
     │ WhatsApp       │                              │ macOS        │
     │ Slack          │                              └──────────────┘
     │ Signal         │
     │ iMessage       │
     │ Matrix         │
     │ Feishu         │
     │ ...20+         │
     └────────────────┘

核心设计决策:

  • 单进程、单端口:所有服务(WebSocket RPC、HTTP、静态文件)复用同一端口
  • Gateway 是唯一控制面:所有接口必须通过 Gateway 交互
  • 无外部依赖:不需要 Redis/PostgreSQL,纯文件系统存储

数据流:从用户消息到 Agent 响应

用户在 Telegram 发消息


① Channel Plugin (Telegram) 接收


② dmPolicy 安全门控
   ├── pairing → 要求审批码
   ├── allowlist → 检查白名单
   └── open → 直接通过


③ resolveSessionKey() → 确定会话标识
   格式:agent:<agentId>:<provider>:<peerId>


④ resolveAgentIdFromSessionKey() → 路由到目标 Agent
   优先级:精确 peer → 父级 peer → Guild → Account → 默认


⑤ 加载会话历史(JSONL transcript)


⑥ runEmbeddedPiAgent() → 执行 Agent 回合
   ├── 组装系统提示词(Identity + Tools + Skills + Context)
   ├── 解析指令(/think, /model 等)
   ├── 选择模型 + 解析 Auth Profile
   ├── 调用 LLM API(支持故障转移)
   ├── 工具调用循环(策略过滤 → 执行 → 返回结果)
   └── 上下文压缩(超 85% token 限制时触发)


⑦ 持久化更新的 transcript (JSONL)


⑧ 通过 Channel Plugin 回送响应到 Telegram

WebSocket 帧协议

Gateway 使用 WebSocket 协议 v3,基于 JSON 帧通信:

帧类型方向用途
ConnectParamsClient → Server握手:协议版本协商、认证、客户端元数据
HelloOkServer → Client握手响应:协商结果、系统快照、授权策略
RequestFrameClient → ServerRPC 调用:方法名 + 参数 + 唯一 ID
ResponseFrameServer → ClientRPC 响应:ok/error + payload,按 ID 匹配
EventFrameServer → Client异步事件推送(流式输出、状态变更、cron 完成等)

所有帧通过 Ajv 进行 JSON Schema 校验。

关键 RPC 方法:

方法用途
agent执行 Agent 推理
config.get / config.apply / config.patch配置管理
sessions.list会话列表
channels.status通道健康检查
cron.add / cron.run / cron.list定时任务管理
gateway.health / gateway.status网关诊断
device.pair.*设备配对

配置系统

配置管道

openclaw.json (JSON5)


JSON5 解析 + 环境变量替换 (${VAR_NAME})


$include 合并(支持外部配置片段)


Zod Schema 严格校验(拒绝未知字段)


SecretRef 解析(env: / file: → 实际值)


运行时快照(供所有子系统消费)

热重载模式

模式行为
hybrid(默认)安全变更热加载,关键变更(端口)触发重启
hot全部就地热加载,需要重启时仅记日志
restart任何变更直接重启 Gateway
off关闭文件监听

SecretRef 示例

{
  "gateway": {
    "auth": {
      "token": { "source": "env", "id": "OPENCLAW_GATEWAY_TOKEN" }
    }
  }
}

存储架构

数据类型格式路径
主配置JSON5~/.openclaw/openclaw.json
Agent 凭证JSON~/.openclaw/agents/<id>/agent/auth-profiles.json
模型注册表JSON~/.openclaw/agents/<id>/agent/models.json
会话注册表JSON~/.openclaw/agents/<id>/sessions/sessions.json
对话记录JSONL~/.openclaw/agents/<id>/sessions/*.jsonl
定时任务JSON~/.openclaw/cron/jobs.json
执行日志JSONL~/.openclaw/cron/runs.jsonl
OAuth 凭证文件~/.openclaw/credentials/

关键设计:

  • 全部基于文件系统,无外部数据库依赖
  • JSONL 格式用于追加写(会话记录、cron 日志)
  • JSON 格式用于结构化状态(配置、注册表)
  • 原子写入:先写临时文件 → fs.rename() 原子替换

跨平台 Daemon 管理

平台技术配置路径
macOSlaunchd~/Library/LaunchAgents/ai.openclaw.gateway.plist
Linuxsystemd~/.config/systemd/user/openclaw-gateway.service
WindowsTask Scheduler生成 gateway.cmd 包装器

统一 CLI 命令抽象平台差异:openclaw gateway install/start/stop/status


Vendored 组件

组件用途位置
A2UIAgent-to-User Interface,Canvas/交互 UI 渲染vendor/a2ui
SwabblemacOS 语音唤醒守护进程Swabble/
clawdbot/moltbot历史兼容性垫片packages/

关键设计决策总结

决策理由
单进程单端口简化部署,个人使用无需分布式
文件系统存储本地优先,无外部依赖,便于备份
Hub-and-Spoke统一控制面,所有通道/客户端平等接入
WebSocket + JSON 帧双向实时通信,支持流式输出
Zod 严格校验启动时拒绝无效配置,防止运行时错误
CalVer 版本直觉性强,适合持续发布
2 OpenClaw — Gateway 核心

OpenClaw — Gateway 核心

📍 位置:OpenClaw学习框架 / 第 2 层-A 📌 核心发现:Gateway 是中央控制面,管理认证/路由/会话/配置,是理解 OpenClaw 的关键枢纽 📥 输入:DeepWiki Section 2(Gateway 及其 6 个子章节) 📤 流向:→ findings.md [Gateway 设计理解]


Gateway 职责全景

Gateway (GatewayServer) 是 OpenClaw 的心脏,负责:

┌─────────────────────────────────────────────────────────┐
│                    Gateway 职责                           │
├─────────────┬─────────────┬──────────────┬──────────────┤
│  认证授权    │  消息路由    │  会话管理     │  配置管理    │
│  Auth &     │  Multi-Agent │  Session     │  Config      │
│  RBAC       │  Routing     │  Lifecycle   │  Pipeline    │
├─────────────┼─────────────┼──────────────┼──────────────┤
│  通道管理    │  Agent 编排  │  诊断监控     │  Cron 调度   │
│  Channel    │  Agent       │  Health &    │  Scheduled   │
│  Manager    │  Execution   │  Doctor      │  Jobs        │
└─────────────┴─────────────┴──────────────┴──────────────┘

2.1 认证与授权

认证方式

方式场景说明
TokenCLI、Web UIBearer 风格令牌,safeEqualSecret 防时序攻击
PasswordWeb UI 登录用户凭证认证
Device Pairing原生客户端非对称加密挑战-响应,Ed25519 签名
Trusted ProxyTailscale 等代理层委托认证,接受身份头

角色模型(RBAC)

角色说明权限范围
operator人类用户 / CLI所有方法(按 scope 细分)
node原生客户端设备仅限 node 特定方法

Operator 权限作用域

Scope能力
operator.admin配置变更、系统重启
operator.read查看会话、日志
operator.write发送消息、触发 Agent
operator.approvals命令执行审批
operator.pairing设备配对审批

安全防护

  • 暴力破解防护:跟踪失败认证,IP 级冷却
  • RPC 限流:控制面写操作限速(如 config.apply 限 3 次/60 秒)
  • HTTP 工具调用/tools/invoke 端点验证 bearer token + SSRF 防护

2.2 会话管理

会话隔离模式(dmScope)

模式行为适用场景
main所有 DM 共享一个全局会话单人使用
per-peer按发送者隔离(跨通道)多人但不分通道
per-channel-peer按通道+发送者隔离推荐,最安全

SessionKey 格式

agent:<agentId>:main                              # 主会话
agent:<agentId>:<provider>:group:<groupId>         # 群组会话
agent:<agentId>:<provider>:<chatId>:thread:<tid>   # 线程会话

会话生命周期

创建 → 活跃对话 → 自动新鲜度重置 → 上下文压缩 → 过期清理
                    │                    │              │
            idleMinutes/           token > 85%     pruneAfter
            dailyReset                             (30 天)
  • 存储:JSONL 追加写,sessions.json 为注册表
  • 线程分叉:子线程继承父上下文但不修改原始记录
  • 并发安全:Promise 链互斥锁防止竞态写入
  • 路径安全validateSessionId 防目录穿越攻击

2.3 多 Agent 路由

Agent 隔离模型

每个 Agent 拥有完全独立的资源:

~/.openclaw/
├── agents/
│   ├── main/              # 默认 Agent
│   │   ├── agent/         # auth-profiles.json, models.json
│   │   └── sessions/      # 独立会话存储
│   └── work/              # 第二个 Agent
│       ├── agent/
│       └── sessions/
├── workspace/             # main Agent 的工作区
└── workspace-work/        # work Agent 的工作区

路由优先级(从高到低)

  1. 精确 peer 匹配:直接消息/群组 ID 绑定
  2. 父级 peer 匹配:线程继承
  3. Guild/Team ID:Discord 服务器/Slack 工作区
  4. Account ID:特定通道登录账号
  5. 默认 Agent 兜底:通常是 main

模型选择优先级

  1. 消息内联指令(/model claude-opus
  2. 会话级别覆盖
  3. Agent 配置中的主模型
  4. 全局默认模型

Subagent 路由

  • 主 Agent 派生子 Agent → 通过 requesterSessionKey 追踪
  • 结果通过 DeliveryContext(通道、账号、收件人)路由回原始对话
  • 内部标记防止子 Agent 输出触发外部投递

2.4 服务生命周期

启动模式

模式说明
ForegroundCLI 直接调用
Daemon平台 daemon 管理(launchd/systemd)
Embedded内嵌在原生应用中

状态机

Starting → Running → Shutting Down → Stopped
   │          │           │
   │          │      SIGTERM/SIGINT
   │          │      30 秒排空
   │     处理请求

加载插件
初始化通道
绑定端口

特殊信号:
SIGHUP  → 配置重载(不重启)
SIGUSR1 → 强制重启(破坏性变更时)

安全约束

非回环地址绑定时必须启用认证(token 或 password),否则拒绝启动。

诊断工具

openclaw doctor

  • 校验配置 Schema 完整性
  • 检查 API Key / OAuth Token 有效性
  • 测试 Gateway RPC 端口连通性
  • 检测环境变量覆盖和遗留设置
  • 提供自动修复建议

健康端点

  • gateway.health:运行时间、内存、通道状态、配置有效性
  • gateway.status:模式、服务列表、通道连接状态
  • gateway.probe:远程 Gateway 可达性检查

关键源文件

文件职责
src/gateway/gateway.ts主服务
src/gateway/rpc-server.tsWebSocket 协议处理
src/gateway/server.impl.ts服务器实现
src/gateway/config-reload.ts配置热重载
src/gateway/server/readiness.ts就绪检查
src/commands/doctor.ts诊断命令
src/daemon/launchd.tsmacOS daemon
src/daemon/systemd.tsLinux daemon
3 OpenClaw — Agent Runtime 核心

OpenClaw — Agent Runtime 核心

📍 位置:OpenClaw学习框架 / 第 2 层-B 📌 核心发现:Pi Agent Runtime 是执行引擎,管理 LLM 调用→工具执行→上下文压缩的完整循环 📥 输入:DeepWiki Section 3(Agent Runtime 及其 6 个子章节) 📤 流向:→ findings.md [Agent 执行模型理解]


Agent Runtime 职责

Agent Runtime(Pi Agent)编排一次 AI 助理回合的完整生命周期:

消息输入 → 指令解析 → 模型选择 → 提示词组装 → LLM 调用 → 工具循环 → 响应输出
                                                              ↑      │
                                                              └──────┘
                                                            (工具结果反馈)

3.1 执行管线(7 个阶段)

Stage 1: 输入处理

  • parseReplyDirectives():提取内联指令(/think/model/verbose
  • detectCommand():识别独立命令(/status/reset/new
  • 独立命令走快速路径,直接返回,不经过模型

Stage 2: 模型解析

  • resolveModel():按优先级选择模型(指令 > 会话覆盖 > Agent 配置 > 全局默认)
  • resolveAuthProfileOrder():解析 Auth Profile 链
  • 支持动态模型 ID(resolveDynamicModel 处理未来模型如 GPT-5、Claude 4)

Stage 3: 系统提示词组装

buildEmbeddedSystemPrompt() 从多个模块组装:

模块内容
Identity核心人格 + 安全护栏
Tools允许的工具描述
Skills来自 .skill 文件的动态指令
Context注入的 SOUL.md、AGENTS.md 等
RuntimeShell、OS、沙箱环境信息

三种提示词模式优化 token 使用:

  • full(默认):完整提示词
  • minimal:子 Agent 使用,精简版
  • none:仅基础身份

Stage 4: 执行

嵌套函数调用链:

runReplyAgent()
  → runAgentTurnWithFallback()
    → runEmbeddedPiAgent()
      → runEmbeddedAttempt()

Stage 5: 工具调度

  • createOpenClawCodingTools():组装可用工具集
  • isToolAllowedByPolicies():策略过滤
  • 工具调用 → 结果返回 → 继续推理(循环直到无工具调用)

Stage 6: 响应处理

  • subscribeEmbeddedPiSession():流式 delta 输出
  • 文本分块投递到通道

Stage 7: 状态管理

  • updateSessionStoreEntry():更新会话元数据
  • compactEmbeddedPiSession():触发上下文压缩(如需要)

并发控制

  • Lane 序列化:每个会话同时只运行一个回合
  • 全局并发限制:限制同时进行的 LLM 调用数

Auth Profile 轮换

尝试 Profile A → 速率限制/认证错误


markAuthProfileFailure(A)


尝试 Profile B → 成功 ✓

3.2 Transcript 处理

不同 LLM 供应商对消息格式有不兼容要求,系统自动适配:

供应商关键处理
OpenAI最少清洗,保留工具调用 ID
Anthropic删除 thinking blocks,校验轮次结构
Google严格 ID 清洗,强制 user 消息开头(不允许 assistant 先说)
Mistral工具 ID 必须 9 字符字母数字

其他处理:

  • 孤立消息修复:删除没有对应 tool_usetool_result
  • 图片约束:Anthropic 有最大尺寸/字节限制,自动缩放
  • 内容块过滤:移除某些端点拒绝的 thinking block

3.3 模型供应商与认证

支持的供应商

Anthropic、OpenAI、Google Gemini、Ollama、Minimax、Moonshot/Kimi、Qwen、Volcengine、Amazon Bedrock 等

Auth Profile 存储

// ~/.openclaw/agents/<id>/agent/auth-profiles.json
{
  "anthropic:default": {
    "type": "apiKey",
    "apiKey": "sk-ant-..."           // 明文
  },
  "openai:default": {
    "type": "apiKey",
    "apiKey": { "source": "env", "id": "OPENAI_API_KEY" }  // SecretRef
  },
  "openai-codex:user@example.com": {
    "type": "oauth",
    "accessToken": "...",
    "refreshToken": "..."
  }
}

隐式供应商发现

自动注册三个阶段:

  1. API Key 供应商(Minimax、Moonshot、Kimi)
  2. OAuth Profile 供应商(Qwen-portal、OpenAI-codex)
  3. 配对供应商(Volcengine、Byteplus)

特殊:Ollama 通过 API 发现本地模型


3.4 工具系统

工具组装管线

Pi Agent 基础工具


OpenClaw 替换/增强
(read/write/edit → 工作区隔离版本,bash → exec)


策略过滤(8 层级联)


供应商适配
(Gemini 去掉 minLength/pattern,xAI 去掉 web_search 等)


安全包装
(循环检测 + 中止信号)


最终 AnyAgentTool[] → 传给 LLM API

工具清单

工具组包含工具
group:runtimeexec(命令执行), process(后台进程管理)
group:fsread, write, edit, apply_patch
group:sessionssessions_list, sessions_history, sessions_send, sessions_spawn
group:memorymemory_search, memory_get
group:webweb_search, web_fetch
group:uibrowser, canvas
group:automationcron, gateway
group:messagingmessage
Channel 工具telegram_react, discord_thread

工具策略级联(8 层,从低到高优先级)

① 全局 tools.allow/deny

② 工具 Profile(minimal/coding/messaging/full)

③ 供应商特定约束

④ Agent 级配置

⑤ Agent + 供应商组合覆盖

⑥ 通道群组策略

⑦ 发送者级别限制

⑧ 运行时沙箱 + 子 Agent 继承

工具 Profile 预设:

Profile可用工具
minimalsession_status
codinggroup:fs + group:runtime + group:sessions + group:memory
messaginggroup:messaging + session 工具
full无限制

Owner-Only 工具(需 senderIsOwner: true):

  • crongatewaynodeswhatsapp_login

Exec 工具

参数说明
command要执行的 shell 命令(必需)
background立即后台运行
yieldMs超时后自动后台化(默认 10 秒)
timeout超时终止(默认 30 分钟)
pty分配伪终端

安全措施:

  • Shell 注入检测:检查 $VAR_NAME 出现在脚本文件中的模式
  • 审批流程:allowlist + safe binaries(lsgit 等)+ skill 关联工具
  • 进程隔离:按 scopeKey 隔离,防跨 Agent 干扰

工作区隔离

tools.fs.workspaceOnly: true 时,文件操作工具强制路径守卫,拒绝访问工作区外的系统文件。


3.5 命令与指令

独立命令(快速路径)

命令用途
/status显示模型、token 用量、上下文窗口、缓存统计等
/reset重置会话
/new新建会话
/think <level>控制推理深度
/model <name>切换模型

内联指令

指令用途
/think <level>推理深度
/verbose <level>输出详细度
/elevated <level>权限提升
/reasoning <mode>推理模式
/exec <params>执行参数
/queue <mode>队列行为

授权模型

  • 默认拒绝:所有命令需通过 CommandAuthorized 检查
  • 优先级:commands.allowFrom > 通道白名单 + 配对系统 > commands.useAccessGroups
  • bashconfigdebug 三个特殊命令需要显式配置标志

3.6 上下文压缩(Compaction)

触发条件

estimateTokens(messages + prompt) > contextWindow × 0.85

阈值:硬最低 8,192 tokens,警告 32,768 tokens

压缩流程

Token 超限检测


Memory Flush(如需要)
  └── tokens > 75% 且本轮未 flush → 持久化到记忆存储


获取会话写锁(防 transcript 损坏)


加载完整 JSONL transcript


调用 LLM 压缩(runEmbeddedAttempt + 特殊指令)
  └── 模型可配置:agents.defaults.compaction.model


替换旧消息为生成的摘要


广播诊断事件


后压缩同步(memory 重索引)
  └── off / async(默认)/ await

超时保护

  • 单次压缩超时:180 秒
  • 累计重试超时:防止无限循环

错误恢复

  • 压缩失败 → resetSessionAfterCompactionFailure():生成新 sessionId,清空 transcript
  • 轮次校验 → validateAnthropicTurns() / validateGeminiTurns():确保符合供应商要求

诊断追踪

每次压缩生成:

  • 诊断 ID:ovf-{timestamp36}-{random4}
  • 指标:消息数、字符总量、工具结果大小、top 贡献者

3.7 记忆与搜索

双后端架构

后端技术特点
Built-in (SQLite)sqlite-vec + FTS5向量相似度 + 关键词搜索
QMD (Quick Markdown)外部 qmd CLI大规模集合优化

嵌入模型支持

  • OpenAI text-embedding-3-small
  • Google Gemini text-embedding-004
  • Voyage voyage-3
  • Ollama(用户自定义)

混合搜索评分

FinalScore = (VectorScore × VectorWeight) + (KeywordScore × KeywordWeight)

CLI 命令

  • memory status:索引健康状态和 chunk 数
  • memory index:强制重新扫描工作区
  • memory search:测试查询

关键源文件

文件职责
src/agents/pi-tools.ts工具组装入口
src/agents/tool-policy.ts策略解析
src/agents/tool-policy-pipeline.ts策略管线
src/agents/openclaw-tools.ts原生工具定义
src/agents/bash-tools.tsExec/Process 实现
4 OpenClaw — 消息通道与 Skills

OpenClaw — 消息通道与 Skills

📍 位置:OpenClaw学习框架 / 第 3 层 📌 核心发现:Channel 插件化 + Skills 声明式扩展 + Plugin SDK 第三方集成,三层扩展体系 📥 输入:DeepWiki Section 4(Messaging Channels)、Section 5(Skills)、Section 9(Plugin SDK) 📤 流向:→ findings.md [扩展体系理解]


一、消息通道(Channels)

架构模型

每个消息平台通过 ChannelPlugin 接口实现,注册配置 Schema、设置适配器和路由逻辑。

支持平台

类别平台
内置Telegram (grammY)、Discord (discord.js)、Slack (Socket Mode)、WhatsApp (Baileys)、Signal (signal-cli)、iMessage、Matrix
扩展包Feishu(飞书)、Mattermost、Google Chat、IRC、LINE、Nextcloud Talk 等

总计 20+ 平台

消息流转

入站流程

外部平台消息


Channel Plugin 接收


DM 安全门控 ─────────────────────┐
  ├── pairing → 发送审批码        │
  ├── allowlist → 检查白名单       │
  ├── open → 直接通过             │
  └── disabled → 拒绝             │
      │                          │
      ▼                          │
Group 策略过滤 ←──────────────────┘


路由到 Agent + Session


Agent 执行

出站流程

Agent 响应


平台适配器
  ├── sendMessageTelegram()
  ├── sendMessageDiscord()
  ├── sendMessageSlack()
  └── ...


外部平台显示

通道配置

每个通道在 openclaw.jsonchannels.<provider> 下配置,通过 Zod Schema 校验:

字段说明
enabled启用/禁用
dmPolicyDM 访问策略(pairing/allowlist/open/disabled)
groupPolicy群聊限制
streaming回复投递模式(流式/一次性)

多账号支持:同一平台可配置多个登录,通过账号特定配置合并。

通道能力

  • 消息发送与反应
  • 卡片/按钮渲染(平台支持时)
  • 线程回复和管理操作(踢出/封禁,需信任要求)
  • 输入状态指示器和确认反应

二、Skills 系统

定义

Skill = 模块化的工具 + 提示词包,以 SKILL.md 文件声明。

Skill 发现与加载

系统扫描多个位置构建注册表,优先级从高到低

优先级位置说明
1<workspace>/skillsAgent 工作区 Skills(per-agent 隔离)
2~/.openclaw/skills全局共享 Managed Skills
3内置 Skills随 OpenClaw 发行
4插件提供的 Skills活跃插件注入

同名 Skill 高优先级覆盖低优先级。

SKILL.md 格式

---
name: my-skill
description: 一句话说明
version: 1.0.0
os: [darwin, linux]        # 平台限制
requirements:
  binaries: [git, curl]    # 系统工具依赖
  env: [MY_API_KEY]        # 环境变量依赖
  config: [some.config.path]  # 配置路径依赖
---

# 技能指令

这里写给 Agent 的使用说明...

需求门控

Skill 只有满足所有需求时才被标记为”eligible”:

需求类型检查方式示例
BinarieshasBinary(bin)gitcurl
EnvironmentisEnvSatisfied(envName)OPENAI_API_KEY
ConfigisConfigPathTruthy()channels.telegram.enabled
OSentry.metadata.osdarwinlinux

安装管线

根据宿主环境选择包管理器(优先级从高到低):

  1. Homebrew(如 preferBrew 设置)
  2. uv (Python)
  3. Node.js (npm/pnpm/bun)
  4. Go
  5. Direct Download

多 Agent 隔离

Agent 工作区中的 Skills(~/.openclaw/workspace-<agentId>/skills)对其他 Agent 不可见,确保人格和工具隔离。


三、Plugin SDK

定位

Plugin SDK 与 Skills 互补:

维度Plugin SDKSkills 系统
作用域Gateway 基础设施(Channel、Auth)Agent 能力(工具、知识)
分发npm 包,放在 extensions/目录,放在 workspace/managed
加载包元数据发现文件系统路径扫描
开发语言TypeScriptMarkdown (SKILL.md)

插件类型

类型用途示例
Channel Plugin集成新消息平台WhatsApp、Signal、Feishu
Auth Plugin自定义认证流程OAuth、企业 SSO
Tool Plugin扩展 Agent 工具能力自定义 API 集成

SDK 包结构

openclaw/plugin-sdk                      # 主入口
openclaw/plugin-sdk/telegram             # Telegram 特定工具
openclaw/plugin-sdk/discord              # Discord 特定工具
openclaw/plugin-sdk/slack                # Slack 特定工具

插件开发流程

1. extensions/<name>/ 目录下创建
2. package.json 添加 openclaw.extensions 元数据
3. 实现入口,导出插件实例
4. pnpm 构建 → dist/plugin-sdk/

插件发现与加载

package.json 中的 openclaw 元数据


Manifest 注册表扫描


动态 import 加载


生命周期管理(Gateway 启动/关闭事件挂载)

关键导出函数

  • buildTokenChannelStatusSummary():Telegram/WhatsApp 状态摘要
  • discordSetupAdapter()slackSetupAdapter():平台设置适配器
  • feishuPlugin()matrixPlugin():平台插件实例
  • 路由和策略执行工具函数

扩展体系关系图

                    ┌─────────────────────┐
                    │     Plugin SDK       │
                    │  (Gateway 级扩展)     │
                    │  Channel / Auth / Tool│
                    └──────────┬──────────┘


┌──────────────────────────────────────────────────┐
│                    Gateway                         │
│                                                    │
│   ┌─────────────┐    ┌─────────────────────┐      │
│   │  Channels    │    │  Agent Runtime       │      │
│   │  (Plugin)    │    │                     │      │
│   │              │    │   ┌──────────────┐  │      │
│   │  Telegram    │    │   │  Skills      │  │      │
│   │  Discord     │    │   │  (SKILL.md)  │  │      │
│   │  WhatsApp    │    │   │              │  │      │
│   │  Slack       │    │   │  工具 + 提示词 │  │      │
│   │  ...20+      │    │   └──────────────┘  │      │
│   └─────────────┘    └─────────────────────┘      │
└──────────────────────────────────────────────────┘
5 OpenClaw — 高级特性

OpenClaw — 高级特性

📍 位置:OpenClaw学习框架 / 第 4 层 📌 核心发现:Cron 自动化、原生客户端设备能力、多层安全模型、开发者生态 📥 输入:DeepWiki Section 6(Cron)、7(Control UI)、8(Native Clients)、10(Security)、11(Development) 📤 流向:→ findings.md [高级能力与安全模型]


一、Cron 定时自动化

核心架构

CronService 实现基于定时器的状态机,管理任务存储、定时器和并发控制。

调度类型

类型字段行为
atISO 8601 时间戳一次性执行
everyeveryMs + 可选 anchorMs固定间隔循环
cronCron 表达式 + 可选时区/错开标准 Cron 调度

会话目标

目标行为
main向主会话发 systemEvent
isolated全新隔离会话(forceNew: true
current复用现有会话状态
session:key指定具名会话

执行生命周期(隔离任务)

准备(Agent 配置 + 工作区 + 会话 Key)
  → 模型选择(检查 subagents.model + hook 覆盖)
  → 提示词构建(安全边界包装 + 投递指令)
  → Agent 执行(模型回退 + 中间确认检测 + 续写)
  → 投递(直接通道 → 回退 webhook → 抑制 HEARTBEAT_OK)

投递机制

  • channel='last':查询会话最近使用的通道/收件人
  • 显式通道:直接使用配置的 delivery.channeldelivery.to
  • bestEffort=true:投递失败返回 ok 而非错误
  • 消息工具抑制:Agent 已通过 message 工具投递时跳过重复投递
  • Webhook:SSRF 防护(阻止私有 IP)

错误处理与重试

退避策略:

连续错误延迟
130 秒
21 分钟
35 分钟
415 分钟
5+60 分钟

自动识别的瞬态错误(重试最多 3 次):速率限制、过载、网络错误、超时、5xx

连续 3 次调度错误 → 自动禁用任务 + 系统事件通知

高级特性

  • Stagger 逻辑sha256(jobId) % staggerMs 确定性错开
  • 启动时遗漏恢复:识别过期任务,错开执行(默认间隔 5 秒,最多 5 个)
  • 会话清理器:每 5 分钟清理 cron/hook 会话(默认保留 7 天)
  • 子 Agent 等待:隔离任务等待派生的子 Agent 完成后再投递

RPC 方法

cron_addcron_updatecron_removecron_runcron_listcron_list_pagecron_status


二、Control UI(Web 仪表盘)

技术栈

  • 框架:Lit Web Components(无 Shadow DOM,全局样式)
  • 构建:Vite
  • 布局:CSS Grid + CSS Variables 主题
  • 状态@state() 反应式属性 + localStorage 持久化
  • 通信:WebSocket RPC

视图

视图功能
Chat交互式对话,流式输出,工具执行可视化
Sessions浏览管理会话记录,预览面板
Configurationopenclaw.json 在线编辑器 + Schema 校验
AgentsAgent 创建/编辑,工作区文件管理
Cron定时任务调度和监控
Nodes/Devices已配对设备管理,配对请求审批
Logs实时日志流,级别过滤

关键特性

  • 流式响应:delta/final/aborted 状态转换
  • 工具执行卡片:可展开查看输入/输出/思考内容
  • Exec 审批弹窗:approve/deny/always-allow,60 秒过期
  • URL 参数认证?token=...&session=...

三、原生客户端(Nodes)

什么是 Node

Node = 设备本地执行表面,向 Gateway 宣告自身能力(摄像头、录屏、通知等)。

平台支持

平台技术特有能力
iOSSwiftUIShare Extension、Live Activities、watchOS 伴侣、摄像头、录屏、语音唤醒、位置
AndroidCameraX、DNS-SD通话记录搜索、SMS、多 ABI(arm64-v8a, x86_64)
macOSSwiftUI + SparkleAppleScript、Shell 执行、系统通知、自动更新

发现机制

  1. Bonjour/mDNS_openclaw-gw._tcp 局域网发现
  2. Wide-Area DNS-SD:Tailscale tailnet 发现(dnsjava)
  3. Tailscale Servewss://<peer>.ts.net 远程连接
  4. 手动 URL:直接 WebSocket 输入

设备配对流程

Gateway 发送 connect.challenge(随机 nonce)


Node 用私钥签名 challenge


Node 在 connect 参数中包含签名


Gateway 验证签名 → 允许访问

权限模型

平台机制
iOS/macOSTCC(Info.plist 使用描述)
Android运行时权限(AndroidManifest.xml)

node.describe RPC 返回权限状态:granteddeniednot_determinedrestricted

构建系统

  • iOS:XcodeGen(YAML → Xcode 项目)
  • Android:Gradle + Kotlin DSL
  • macOS:Xcode + Sparkle delta 更新
  • 全部 CalVer 版本

四、安全模型

核心假设

单一可信运营者模型:一个 Gateway = 一个可信运营者。 能修改 ~/.openclaw 的人 = 可信运营者。 明确不支持恶意多租户场景。

安全层级全景

┌─────────────────────────────────────────────┐
│ 第 1 层:网络访问控制                          │
│   非回环绑定强制认证 / 暴力破解防护             │
├─────────────────────────────────────────────┤
│ 第 2 层:身份认证                              │
│   Token / Password / Device Pairing / Proxy  │
├─────────────────────────────────────────────┤
│ 第 3 层:角色授权(RBAC)                      │
│   operator / node + scope 权限               │
├─────────────────────────────────────────────┤
│ 第 4 层:DM/Group 策略                        │
│   pairing / allowlist / open / disabled       │
├─────────────────────────────────────────────┤
│ 第 5 层:工具策略级联(8 层)                   │
│   Profile → Provider → Global → Agent → ...   │
├─────────────────────────────────────────────┤
│ 第 6 层:Exec 安全                            │
│   full / safeBins / off + 审批流程             │
├─────────────────────────────────────────────┤
│ 第 7 层:文件系统隔离                          │
│   workspaceOnly + 路径校验                    │
├─────────────────────────────────────────────┤
│ 第 8 层:SSRF 防护                            │
│   主机名黑名单 / 私有 IP 阻断 / DNS 重绑防护   │
├─────────────────────────────────────────────┤
│ 第 9 层:凭证管理                              │
│   SecretRef / env/file 引用 / 不明文存储       │
└─────────────────────────────────────────────┘

SSRF 防护细节

  • 预取校验:阻断 localhost*.internal*.local
  • 私有 IP 阻断:RFC1918、RFC6598、link-local
  • DNS 解析守卫:防 rebinding 攻击
  • 重定向拦截:重新校验
  • 跨域头剥离:Authorization、Cookie、X-Api-Key

安全审计命令

openclaw security audit --deep --fix

检查项:Gateway 暴露/认证模式、DM/Group 策略、小模型风险(≤300B 无沙箱)、Webhook token 复用、Docker 沙箱配置、插件完整性、文件权限(目标 600)。

--fix 自动修复安全问题(权限、策略)。

最佳实践

  • 使用 token 认证(不用 password)
  • DM scope 用 per-channel-peer
  • 不信任的 Agent 启用沙箱:agents[].sandbox.enabled: true
  • 沙箱中拒绝危险工具:sandbox.tools.deny: ["gateway", "cron", "nodes"]
  • 文件系统限制:tools.fs.workspaceOnly: true
  • Exec 限制环境用 safeBins

五、开发者生态

技术栈

  • TypeScript(ESM only)+ Node.js 22+
  • pnpm monorepo
  • Oxlint + Oxfmt 代码质量
  • Vitest + V8 覆盖率(70% 门槛)
  • GitHub Actions CI/CD

代码规范

  • 单文件 < 700 行
  • 禁止 any 类型和 @ts-nocheck
  • 动态 import 使用 *.runtime.ts 边界
  • American English 拼写

版本与发布

渠道格式npm 标签
stablevYYYY.M.Dlatest
betavYYYY.M.D-beta.Nbeta
devHEAD不发布

多 Agent 协作安全规则

  • 禁止:创建/删除 git stash、创建 worktree、切换分支
  • 允许:使用 scripts/committer 进行作用域暂存
  • 假设其他 Agent 在并发工作

安全敏感路径(需 Code Owner 审查)

SECURITY.mdsrc/security/src/secrets/、认证和沙箱文件、发布工作流

调研发现

OpenClaw 学习框架 — 调研发现

收敛自:0-概念与定位.md、1-系统架构.md、2-Gateway核心.md、3-Agent-Runtime核心.md、4-消息通道与Skills.md、5-高级特性.md 数据来源:DeepWiki 全部 12 大章节 + 20+ 子章节深度阅读


Key Findings

  1. OpenClaw 是目前最完整的自托管 AI 网关方案 — 20+ 消息平台统一接入、多 Agent 隔离、多模型故障转移、原生客户端三端覆盖、从 Cron 自动化到安全审计的完整工具链
  2. Hub-and-Spoke 单进程架构是核心设计选择 — 简化部署(个人使用无需分布式),但也意味着单点故障和性能瓶颈在同一进程
  3. 工具策略 8 层级联是安全基石 — 从全局 Profile 到运行时沙箱,每层可独立配置,实现了精细化工具权限控制
  4. Skills 系统(SKILL.md)是最易上手的扩展点 — 纯 Markdown 声明式,无需编写代码即可扩展 Agent 能力
  5. “单一可信运营者”假设贯穿整个安全模型 — 不适用于多租户/企业场景,但为个人使用提供了合理的安全-便利平衡

推荐学习路径

路径 A:快速上手(1-2 小时)

0-概念与定位.md(15 分钟)
  ├── 理解:是什么、解决什么问题、核心术语
  └── 动手:npm install -g openclaw → openclaw onboard → openclaw gateway start

1-系统架构.md(20 分钟)
  ├── 理解:Hub-and-Spoke、数据流、存储布局
  └── 动手:浏览 ~/.openclaw/ 目录结构

4-消息通道与Skills.md → Skills 部分(15 分钟)
  ├── 理解:SKILL.md 格式、Skills 发现优先级
  └── 动手:在 workspace/skills/ 创建第一个 Skill

Control UI 探索(10 分钟)
  └── 动手:openclaw dashboard → 浏览 Chat/Sessions/Configuration 视图

路径 B:深入理解架构(3-5 小时)

路径 A 全部内容


2-Gateway核心.md(40 分钟)
  ├── 理解:认证模型、会话隔离、多 Agent 路由
  └── 重点:WebSocket 帧协议、SessionKey 格式、路由优先级

3-Agent-Runtime核心.md(60 分钟)
  ├── 理解:执行管线 7 阶段、工具系统、上下文压缩
  └── 重点:工具策略 8 层级联、Exec 安全模式、Compaction 触发条件

5-高级特性.md → 安全部分(30 分钟)
  ├── 理解:9 层安全模型、SSRF 防护
  └── 动手:openclaw security audit

路径 C:开发者/贡献者(额外 3-5 小时)

路径 B 全部内容


Plugin SDK 开发(60 分钟)
  ├── 理解:Channel Plugin 接口、插件发现加载
  └── 动手:创建简单 Channel 插件

Cron 系统(30 分钟)
  ├── 理解:调度类型、执行生命周期、错误处理
  └── 动手:配置定时 Agent 任务

源码阅读(90+ 分钟)
  ├── 入口:src/gateway/gateway.ts → src/agents/pi-tools.ts
  ├── 工具系统:src/agents/tool-policy-pipeline.ts
  └── 通道插件:extensions/<channel>/

共识(多个信息源一致确认)

  1. Gateway 是绝对中心 — 所有通道、客户端、CLI 必须通过 Gateway 交互,这是架构不变量
  2. 文件系统是唯一持久层 — 无外部数据库依赖,JSONL + JSON 覆盖所有持久化需求
  3. Zod Schema 严格校验 — 配置错误在启动时拒绝,不进入运行时
  4. CalVer 版本策略YYYY.M.D 格式,适合持续发布节奏

矛盾 / 值得关注的张力

  1. 单进程 vs 可扩展性 — 个人使用足够,但多通道高并发时可能成为瓶颈。Gateway 的 lane 序列化和全局并发限制是缓解措施,不是根本解决方案
  2. 本地优先 vs 远程访问 — 默认绑定 localhost,远程需 Tailscale 或显式配置 + 强制认证。对不熟悉网络配置的用户有门槛
  3. Skills 声明式 vs Plugin SDK 编程式 — 两套扩展体系职责不同(Agent 能力 vs Gateway 基础设施),但开发者可能困惑于何时用哪个

信号(少量来源但密度高)

  1. A2UI(Agent-to-User Interface) — Vendored 组件,暗示 OpenClaw 可能在探索 Agent 控制 UI 渲染的方向,不仅仅是文本对话
  2. Swabble 语音唤醒 — macOS 专属,显示向语音交互发展的意图
  3. Exec Approvals 弹窗 — 60 秒超时的审批流,介于全自动和全手动之间的中间态,暗示对 Agent 安全执行的持续探索
  4. 隐式供应商发现 — 自动注册 Minimax、Moonshot、Kimi 等中国模型供应商,显示对中国市场的关注

空白(文档未覆盖或不够深入)

  1. 性能基准 — 没有关于单 Gateway 支撑多少并发会话/通道的性能数据
  2. 备份与恢复 — 文件系统存储的备份策略、灾难恢复方案未提及
  3. 升级迁移 — CalVer 发布间的数据迁移策略不够详细(openclaw doctor 有迁移功能但细节不明)
  4. 企业部署 — 明确说不支持恶意多租户,但对”小团队共享”场景的指导缺失

架构决策点理解(给开发者的洞察)

决策选择替代方案理由推测
存储文件系统SQLite/PostgreSQL零依赖,~/.openclaw/ 即全部状态,cp 即备份
进程模型单进程微服务个人使用场景,运维成本最小化
通道集成内嵌+插件独立进程/sidecar内存共享高效,插件崩溃隔离通过 try-catch
配置格式JSON5 + ZodYAML/TOMLJSON 生态 + 严格校验,JSON5 允许注释
协议自研 WebSocket 帧gRPC/GraphQL轻量、全双工、适配流式输出
版本CalVerSemVer持续发布,日期直觉性强

与 OpenClaw-Workspace文件规范 的关联

本框架中多处提及的 SOUL.md、AGENTS.md 等工作区文件的具体写法规范,请参考: → OpenClaw-Workspace文件规范

Skills 开发的详细实践,请参考: → Skill编写指南