核心概念
理解这些核心抽象,掌握 OpenClaw 的架构设计。
Gateway
核心进程
- OpenClaw 的单一常驻进程,绑定在可配置端口(默认 127.0.0.1:18789)
- 管理所有渠道连接(WhatsApp、Telegram、Discord 等),是消息路由的中枢
- 通过 WebSocket 协议与客户端通信(macOS App、CLI、Web Control UI、Mobile Node)
- 提供 HTTP 服务器,承载 Web Control UI 和 Canvas 画布
- 支持热重载配置——修改 openclaw.json 后大多数设置自动生效,无需重启
- 健康检查、诊断:openclaw gateway status、openclaw doctor
Channel
消息渠道
- 内置支持:WhatsApp(Baileys)、Telegram(grammY)、Discord、Slack、Signal、iMessage
- 插件扩展:Mattermost、Feishu、Google Chat、MS Teams、Matrix 等
- 每个渠道支持多帐号(accountId),一台 Gateway 可服务多个手机号 / Bot
- DM 策略可选:pairing(配对审批)、allowlist(白名单)、open(全开放)、disabled(关闭)
- 群聊支持 @提及激活,可配置 mentionPatterns
- 支持图片、音频、文档等多媒体消息收发
Agent
AI 运行时
- 内嵌 Pi 编程 Agent 运行时(基于 pi-mono),会话管理由 OpenClaw 控制
- 每个 Agent 拥有独立的工作区(workspace)、状态目录(agentDir)、会话存储
- 工作区包含引导文件:AGENTS.md(指令)、SOUL.md(人格)、USER.md(用户画像)、TOOLS.md(工具说明)等
- 首次会话自动注入引导文件内容到 Agent 上下文
- 可通过 openclaw agents add 创建新的隔离 Agent
Session
会话管理
- 会话是 Agent 与用户交互的基本单元,存储为 JSONL 格式
- 作用域可配置:main(共享)、per-peer、per-channel-peer、per-account-channel-peer
- DM 默认合并到 Agent 的 main 会话,群聊自动隔离
- 支持自动重置:按时间段、空闲超时等策略重新开始会话
- 上下文窗口接近上限时自动压缩(compaction),压缩前触发记忆刷盘
- 转录文件路径:~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
Skill
能力包
- 遵循 AgentSkills 规范的目录,包含 SKILL.md(YAML frontmatter + 指令说明)
- 三级加载:bundled(随安装)→ ~/.openclaw/skills(本地共享)→ workspace/skills(工作区优先)
- 通过 metadata.openclaw 门控:要求二进制、环境变量、配置开关等条件满足才加载
- ClawHub(clawhub.com)社区 Skill 仓库,可安装 / 更新 / 同步
- Skill 在会话开始时快照,变更在下次新会话或热加载后生效
- 第三方 Skill 应视为不受信代码,使用前请审查
Tool
Agent 的操作接口
- 内置核心工具:read(读文件)、write(写文件)、edit(编辑)、exec(执行命令)等
- Tool 可通过策略控制:allow / deny 列表,逐工具授权
- 可选 Docker 沙箱隔离执行,减少工具操作的影响范围
- elevated 模式可跳过沙箱在宿主机执行(需授权)
- memory_search / memory_get 提供记忆语义检索
- sessions_send 可跨渠道发送消息
Provider
模型提供商
- 支持 Anthropic(Claude 系列)、OpenAI、Google(Gemini)、OpenRouter、Ollama 等
- 配置格式:provider/model(如 anthropic/claude-sonnet-4-5)
- 支持 API Key 和 OAuth 两种认证方式
- Auth Profile 轮换:遇到速率限制时自动切换到下一个 Key
- 模型故障转移(failover):主模型失败时自动切换到 fallback
- 在 /model 聊天命令中可实时切换模型
Multi-Agent
多 Agent 路由
- 一个 Gateway 可同时运行多个隔离 Agent,各有独立工作区、会话、认证
- 通过 bindings 配置确定性路由:按渠道、帐号、发送者等维度分发消息
- 路由优先级:peer 精确匹配 > parentPeer > guildId+roles > accountId > channel > 默认 Agent
- 支持每 Agent 独立的沙箱、工具策略、模型选择
- openclaw agents add / openclaw agents list --bindings 管理 Agent
- 不同的人可共享同一台 Gateway 服务器,数据完全隔离
Memory
记忆系统
- 记忆以 Markdown 文件存储在工作区:MEMORY.md(长期)、memory/YYYY-MM-DD.md(每日)
- 向量语义搜索(sqlite-vec 加速),支持混合 BM25 + 向量检索
- Embedding 提供商可选:OpenAI、Gemini、Voyage、Mistral、Ollama、本地 GGUF
- Compaction 前自动触发记忆刷盘(silent agentic turn)
- 可选 QMD 后端(BM25 + 向量 + reranking)
- 支持 MMR 去重和时间衰减排序
架构总览
┌───────────────────────────────────────────────┐ │ Gateway │ │ (WebSocket + HTTP, :18789) │ ├──────────┬────────────┬───────────┬────────────┤ │ WhatsApp │ Telegram │ Discord │ iMessage… │ ← Channels ├──────────┴────────────┴───────────┴────────────┤ │ Bindings (路由规则) │ ├────────────────┬──────────────────┬─────────────┤ │ Agent "home" │ Agent "work" │ Agent … │ ← 隔离 Agent │ ┌──────────┐ │ ┌──────────┐ │ │ │ │ Sessions │ │ │ Sessions │ │ │ │ │ Skills │ │ │ Skills │ │ │ │ │ Memory │ │ │ Memory │ │ │ │ │ Tools │ │ │ Tools │ │ │ │ └──────────┘ │ └──────────┘ │ │ ├────────────────┴──────────────────┴─────────────┤ │ Providers (Anthropic, OpenAI…) │ └─────────────────────────────────────────────────┘ │ ↕ ↕ ↕ │ │ macOS App CLI Control UI Nodes │ ← 客户端
Gateway 是唯一进程,管理所有渠道连接和客户端。通过 Bindings 将消息路由到对应 Agent,每个 Agent 独立维护工作区、会话和记忆。