Internals

架构

14分钟

理解 OpenClaw 的 Gateway、Agent runtime、工具、插件、会话、节点、记忆、模型提供商和协议如何组合。

OpenClaw 是一个分层 Agent 平台。Gateway 管入口、认证、路由、事件和控制界面;Agent runtime 管提示词、工具、记忆、模型和执行;插件和节点向外扩展能力。

系统概览

OpenClaw 架构:clients、gateway、runtime、extensionsClients - Control UI、WebChat、CLI、ACP、MCP、桌面应用、移动节点、聊天渠道Gateway - 认证、配对、路由、WebSocket 协议、会话、健康、用量、事件Agent Runtime - 系统上下文、模型提供商、工具 catalog、记忆、子 Agent、自动化Extensions - 插件、Skills、渠道、providers、hooks、媒体、浏览器、沙盒后端

Gateway

Gateway 是长期运行的控制平面。它负责:

  • 提供 Control UI
  • 暴露 WebSocket 和 HTTP 界面
  • 管理认证和设备配对
  • 连接聊天渠道
  • 将入站消息路由到 session 和 Agent
  • 发出事件
  • 跟踪健康和用量
  • 协调 nodes 和 paired clients

默认本地端口通常是 18789

Wire Protocol

Gateway clients 使用 WebSocket 上的 JSON frames。常见形态是:

  • 先建立连接
  • request/response frames 处理 RPC 风格调用
  • event frames 处理服务端推送
  • auth 放在连接 handshake 中
  • 有副作用的方法按需做幂等

具体协议会演进;构建 client 时,把 docs 和生成出来的 schemas 当作真源。

Agent Runtime

每轮运行时会组合:

  • session state
  • workspace context
  • system prompt 和 runtime preface
  • selected model provider
  • visible tools
  • active skills
  • memory recall
  • channel/runtime policy

Agent loop 仍然是:

  1. 接收输入
  2. 路由到 agent/session
  3. 组装上下文
  4. 调用模型
  5. 执行工具
  6. 观察结果
  7. 回复或继续
  8. 持久化 session 和 memory state

Tools、Skills、Plugins

  • tools 是可调用动作
  • skills 是 prompt-level 工作流指令
  • plugins 是运行时扩展,可添加工具、渠道、providers、hooks、媒体和 skills

这个分层让 OpenClaw 不必把所有能力塞进核心 runtime。

Sessions 与 Memory

Sessions 保存对话和工具历史。Compaction 总结长上下文。长期记忆以 workspace 文件为基础,主要是 MEMORY.mdmemory/YYYY-MM-DD*.md;memory search、QMD、active memory、dreaming 和 memory wiki 是围绕文件层增加的检索和整理路径。

Channels

Channels 是 ingress/egress adapters。Gateway 把 Telegram、WhatsApp、Slack、Discord、iMessage、Signal、WebChat 等统一成 routing events 和 message delivery。

Nodes

Nodes 是配对设备界面,可以暴露 camera、screen、location、Canvas、voice 和平台动作。配对后,应把 node 看作同一 operator trust boundary 的一部分。

Model Providers

Runtime 要协调:

  • provider IDs
  • model catalog
  • auth profiles
  • tool schema compatibility
  • fallback behavior
  • usage reporting

长会话里,provider-specific replay 和 tool-schema 行为是实际运维问题。

ACP 与 MCP

OpenClaw 可以扮演几种角色:

  • ACP bridge:编辑器或 ACP client 连接 OpenClaw,OpenClaw 转发到 Gateway session
  • ACP agents:OpenClaw 启动 Codex、Claude Code、Gemini CLI 等外部 harness
  • MCP:让外部客户端或工具接入 OpenClaw conversation/capability

不要混淆这些角色。

Sandboxing

Sandboxing 作用于工具执行,不作用于 Gateway 进程本身。关键问题不是“有没有开沙盒”,而是哪类 session、哪些工具、什么 workspace access、哪些 escape paths。

Design Principles

Gateway-Centered

一个控制平面负责入口、认证、路由、状态和 client surfaces。

Local-First

核心状态和控制留在 operator 拥有的基础设施里。

Extensible

Plugins 增加运行时能力,skills 增加工作流知识。

Policy Before Prompt

可见工具在模型能调用之前就被过滤。

架构课

OpenClaw 的价值在于边界清晰:Gateway、runtime、tools、plugins、sessions、memory、models、nodes 和 sandboxing 都可以独立失败,也可以独立推理。

继续实践

架构 的核心概念已经读完

如果你想把理解变成可复用的能力,可以到 AgentWay 继续练习