Community Guide

OpenClaw 技术架构

用普通语言梳理 OpenClaw 的 Gateway、workspace、session、记忆、nodes 以及背后的运维取舍。

2026/03/13

一句话理解架构

OpenClaw 的核心,是一个常驻运行的 Gateway 控制平面,它协调渠道、session、工具和 nodes,而真正的 assistant 状态则保存在你自己可控的 workspace 里。

Gateway 是控制平面,不是产品全部

官方 README 对这一点说得很明确:Gateway 是 control plane,而 assistant 的真实体验跨越了渠道、工具、设备节点和浏览器界面。

所以 OpenClaw 不像一个“聊天壳”。Gateway 不只是转发消息,它还负责:

  • session 生命周期
  • auth 和 pairing
  • 路由
  • tool 访问
  • browser 和 web surface
  • channel 集成
  • node 协调

如果 Gateway 状态不健康,整套系统看起来都会不健康。

最基本的运行形态

最务实的理解方式是:

  • Gateway:中央常驻服务
  • Workspace:保存身份、记忆和持久状态的文件系统
  • Channels:Telegram、Discord、WhatsApp 等消息面
  • Nodes:设备侧执行能力
  • Web surfaces:dashboard、Control UI 和浏览器相关能力

这种拆法的价值在于:OpenClaw 可以长期运行,而不必把一切都塞进一个终端进程里。

Workspace 本身就是架构的一部分

OpenClaw 很重要的一点,是它把 assistant 状态尽量保持在可读文件里。

workspace 里常见的文件包括:

  • AGENTS.md
  • SOUL.md
  • USER.md
  • MEMORY.md
  • HEARTBEAT.md
  • memory/YYYY-MM-DD.md
  • skills/
  • sessions.json

这不是偶然实现,而是架构本身。OpenClaw 把持久状态放在你能读、能管、能排查的地方。

Session 是边界,不只是聊天窗口

OpenClaw 的 session 不只是“当前聊到哪里了”。它决定的是上下文、权限和隔离方式。

它会影响:

  • 谁在和 agent 说话
  • 这个人是否完成 pairing 或被允许
  • 哪些记忆应该共享,哪些应该隔离
  • 某个消息面上的 compaction 和 recall 怎么表现

所以群聊和私聊不应该被期待成同一种记忆体验。

记忆本质上是文件检索,不是神奇上下文

官方 memory 文档把这件事讲得比很多社区解释更清楚。

关键点是:

  • 长期记忆保存在 workspace 的 Markdown 文件里
  • MEMORY.md 是整理后的长期层,偏向私聊主 session
  • memory/YYYY-MM-DD.md 是每天的运行记忆
  • recall 通过 memory_searchmemory_get 完成
  • 在 session 接近 compaction 时,OpenClaw 还能触发一次 pre-compaction memory flush,提醒 agent 先把值得留的内容写下来

这意味着“token 压力”和“记忆质量”有关系,但并不是同一个问题。

为什么会出现 token 爆炸

很多人会把问题粗暴理解成“上下文太长了”。更准确的说法是:

  • session 会持续增长
  • 工具和渠道会增加状态和表面积
  • compaction 必须决定什么该保留、什么该丢掉
  • 如果重要事实没有被写进 durable memory,它们就只能继续挤在活动上下文里

所以如果你忽略持久记忆这一步,token 可能越来越高,但 recall 仍然感觉很差。

Nodes、channels 和 browser control 不是一回事

Gateway 协调的几个外部层不应该被混为一谈:

  • channels 负责消息出入
  • nodes 负责设备侧执行
  • browser control 可以走受管浏览器,也可以走 browser relay
  • web surfaces 提供 dashboard 和 Control UI

这种拆法的价值在于:跑 Gateway 的机器,不一定就是拿着设备或浏览器的那台机器。

默认的网络心智是 Loopback-First

OpenClaw 的网络默认值是保守设计,不是巧合:

  • 先本地监听
  • 默认要求 auth
  • 先走私有网络暴露,再考虑公网
  • 真有需要时才显式打开远程访问层

这也是为什么官方文档一直在提醒:不要随意把裸 Gateway 直接暴露到公网。

为什么这对操作者重要

架构不是给工程师炫耀的。它决定了:

  • 你到底信任哪台机器
  • 持久状态实际落在哪
  • 谁能访问 Gateway
  • 哪些 session 能看到哪些记忆
  • 哪些渠道或 nodes 能执行工具
  • 你一次给自己加了多少调试表面积

知道这些,和“只是装上了”之间,是有本质区别的。

下一步看什么