OpenClaw 架构详解 · 第一部分:控制平面、会话管理与事件循环

编者按: 当我们惊叹于OpenClaw仿佛"活过来"般的自主行为时,我们究竟在惊叹什么------是模型真的拥有了某种意识,还是我们被某种精妙的工程机制"欺骗"了?

今天为大家带来的这篇文章,作者给出了一个清晰而坚定的答案:OpenClaw 的"自主性"并非源于神秘的涌现能力,而是一套严谨、可解释的事件驱动架构所带来的工程成果。

本文深入技术底层,为读者抽丝剥茧地解析了 OpenClaw 的核心架构。文章首先厘清了 OpenClaw 的本质 ------ 一个围绕集中式控制平面构建的事件驱动状态机,而非具备感知能力的后台大脑。随后,作者详细拆解了网关作为"中央路由器"如何通过会话键实现隔离,利用 lane-aware FIFO 队列避免并发冲突,以及如何通过统一的 WebSocket 协议协调多端通信。最为关键的是,文章揭示了让智能体产生"活着"这一错觉的真实原因:心跳、Webhooks 等多种输入类型触发的事件循环,而非某种灵光一现。最后,作者还从安全角度出发,针对这一高权限系统的潜在风险提供了务实的加固建议。

作者 | Vinoth Govindarajan

编译 | 岳扬

大多数 AI 智能体的演示看起来神奇无比,就像魔法一样。

而 OpenClaw 给人的感觉是真正的"自主运行"。

但在技术底层,它并非依靠魔法 ------ 而是一套严谨的事件驱动机制。

OpenClaw 是一款可自托管、开源的个人 AI 助手,与典型的聊天应用相比,它更贴近你的操作系统。它不在浏览器标签页里与你对话,而是直接接入你正在使用的通讯渠道(WhatsApp、Telegram、Slack、Discord、iMessage、WebChat 等),并能通过工具执行实际的操作。

很多人把 OpenClaw 描述为"自主的"或"始终在线的"。最简单的理解方式是:

OpenClaw 的"主动行为"并不是因为它有"自我意识"或像人一样会"睡醒然后开始思考"。它之所以给人主动感,是因为它能接收的输入类型远不止你的消息 ------ 并且通过一个持续的循环对所有这些输入进行处理。

这便是其架构设计的奥秘所在。

01 OpenClaw 是什么(以及不是什么)

它是什么:

  • 网关(控制平面),负责接收来自四面八方的各类事件并进行路由分发。
  • 智能体运行时(agent runtime),能够执行"轮次操作":调用大语言模型、使用工具、写入状态,并回复。

OpenClaw 的官方文档将网关 WebSocket 协议描述为统一的控制平面,所有客户端(命令行界面、网页界面、macOS 应用、iOS/Android 节点等)都通过它连接。

它不是什么:

  • 一个有感知能力的系统。
  • 一个在后台持续运转的推理大脑。

如果它看起来像是"在凌晨 3 点灵光一闪",通常只是因为某个定时器、计划任务、网络钩子(webhook)或系统钩子(hook)在凌晨 3 点触发了一个事件,然后智能体执行了一轮正常的处理流程。

02 整体架构:以网关为中心的星型拓扑

如果你更喜欢可视化内容,下面这张图展示了整个架构:

OpenClaw 本质上是一个围绕集中式控制平面构建的、事件驱动的、会话隔离的单写入状态机。

核心思想:网关(Gateway)是流量调度器和唯一事实来源。智能体运行时(agent runtime)是负责"思考与执行"的工作单元。

03 网关:中央路由器(以及事实来源)

OpenClaw 运行着一个持续在线的网关守护进程,负责维持所有连接并协调整个系统。文档中明确指出:

  • 所有会话状态均由网关管理
  • UI 客户端应通过查询网关来获取信息,而不是直接读取本地的会话文件

3.1 会话(Sessions):隔离是刻意的(并且是可配置的)

当你从不同的场景(私信与群聊、Telegram 与 Slack 等)与 OpenClaw 对话时,你肯定不希望发生意外的上下文泄露。OpenClaw 通过会话键(session keys)来建模这一需求。

会话模型(session model)非常灵活,但其默认逻辑是:

  • 每个智能体实例,默认会拥有一个"类似于私信"的主会话,这个会话通常被命名为 main。
  • 针对群组/频道/话题则有独立的会话
  • 可选的"安全私信模式",按发送者/频道/账号隔离私聊会话,避免不同用户间的上下文泄露

一个简单的思维模型:

如果你部署 OpenClaw 不只是给自己用,那么安全私信模式就很重要 ------ 因为默认情况下,私信的作用域会让所有私信共享同一个会话上下文以保持连续性,除非你另行配置。

3.2 会话状态的实际存储位置

OpenClaw 将会话记录以 JSONL 格式存储在磁盘上,并维护一个存储文件,用于将会话键(session keys)映射到具体的会话 ID 和元数据。文档中显示的路径如下:

  • 存储文件:~/.openclaw/agents//sessions/sessions.json
  • 会话记录:~/.openclaw/agents//sessions/.jsonl

这部分内容很重要,原因有二:

1)持久性:会话在系统重启后依然存在

2)安全性:这些文件可能包含敏感内容

04 队列:OpenClaw 如何防止"两种想法同时碰撞"

如果多个输入几乎同时到达(一条 Slack 私信 + 一个心跳信号 + 一个 webhook),你肯定不希望并发运行导致同一会话文件或工具状态被破坏。

OpenClaw 通过 lane-aware FIFO 队列来解决这个问题:

  • 它保证每个会话只有一个活跃运行
  • 它仍然允许跨不同会话的并行处理,直到达到配置上限

以下是该队列工作原理的简化示意图:

OpenClaw 还支持不同的队列行为("模式"),例如:

  • collect(默认) :将多条消息聚合起来,合并成一次后续的执行轮次来处理。
  • followup:始终等待当前正在执行的"思考 - 行动"循环结束
  • steer:注入到当前正在进行的任务流中(在工具调用的边界点)

"顺序状态机"的体验在每个会话内部是真实存在的 ------ 但整个系统仍可根据配置,并发运行其他会话。

05 协议:所有组件都通过同一套带类型的 WebSocket 语言进行通信

OpenClaw 能够支持多种界面(CLI、Web UI、桌面应用、移动节点)的一个重要原因是,它将网关视为一个真正的控制平面。

5.1 三种帧类型:req / res / event

OpenClaw 定义了一个简单的 WebSocket 消息模型:

  • Request(请求) : { type: "req", id, method, params }
  • Response(响应) : { type: "res", id, ok, payload | error }
  • Event(事件) : { type: "event", event, payload, ... }

且第一帧必须是 connect(连接)请求。

5.2 TypeBox:通过模式定义(Schema)来驱动数据校验和代码生成

OpenClaw 将 TypeBox 定义的模式(Schema)作为其通信协议的唯一事实来源。这使得以下操作成为可能:

  • 系统在运行过程中实时检查数据,如果发现不符合规则的数据包,直接拒绝处理。
  • 系统能够将内部定义的数据结构,导出为标准的 JSON Schema 格式文件。
  • 系统能够根据协议定义,自动为客户端生成所需的数据模型(类型定义)和代码(如 SDK 函数)。

以下是最简单的"hello world"连接流程:

文档还提到了协议版本控制和连接时的身份验证,包括如果你设置了网关令牌(Gateway token),可以使用基于令牌(token)的认证。

06 Agent 运行时循环:"聊天"变成"工作"的地方

一旦网关决定了由哪个 agent 和哪个会话来处理输入,智能体运行时(agent runtime)就会执行这样一个常规循环:

1)加载上下文(会话历史 + 工作区上下文)

2)调用模型

3)执行工具调用(浏览器、文件系统、shell、节点、插件)

4)持久化更新

5)响应(或故意保持沉默)

此处提供一个紧凑的循环示意图:

6.1 "记忆"并非学习 ------ 而是文件

这是最重要的思维转变之一:

OpenClaw 不会通过改变模型权重来"学习"。

它通过读写磁盘上的状态数据,并在每轮执行时重新注入上下文,来维持连续性。

OpenClaw 的"Agent Workspace"文档将工作区描述为 agent 的家,一个你应当视作记忆载体的地方。

另外有一点值得注意:工作区是默认的工作目录,而非严格的沙箱 ------ 相对路径会在工作区内解析,但除非你启用沙盒,绝对路径仍可访问外部。

07 让人产生"OpenClaw 具有自主性"幻觉的五种输入类型

大多数聊天机器人只有在你打字时才会唤醒。OpenClaw 在多种触发条件下都会唤醒,这正是它给人"仿佛活着"的感觉的原因。

以下是五种核心输入类型(外加一个补充项):

一些出人意料但至关重要的细节:

  • Heartbeats 默认间隔为 30 分钟(某些认证模式除外),推荐的做法是:如果无需处理任何事务,就回复 HEARTBEAT_OK。
  • Webhooks 可配置为立即触发或等待下一次 heartbeat 再处理,且投递功能可随时启用/禁用。
  • Hooks 是一个事件驱动的自动化系统,会从多个目录(workspace、managed、bundled)中自动发现。

08 "凌晨 3 点来电"示例:本质就是一条 pipeline

让我们揭开这个经典"灵异时刻"的神秘面纱:

"为什么我的 AI 助手会在我睡觉时去决定做某事?"

这并不需要什么涌现能力。仅仅是:

  • 到达指定时间而触发了一个事件
  • 网关将其加入队列
  • 智能体执行了一个处理轮次
  • 某个工具执行了该操作

09 安全性:强大的智能体天生"带刺"

OpenClaw 的官方安全文档几乎说出了所有人的顾虑:运行具有 shell/文件访问权限的 agent 是有风险的,不存在绝对安全的配置 ------ 你的目标是审慎地控制谁可以与它对话、它可以在哪里行动、它能接触哪些资源。

9.1 为什么攻击面很大

OpenClaw 能够:

  • 从多个渠道接收不受信任的文本
  • 读取文件、浏览网页、运行工具
  • 安装/运行"skills"或扩展

上述能力的组合,使得那些已知的智能体安全风险不再是理论上的担忧,而是切实存在的威胁。

  • Prompt 注入(直接或通过网页/文档/邮件的间接注入)
  • Skill 供应链风险(所谓 "有用的" skill 实际上是恶意软件)
  • 凭证泄露(token、API key、cookies)
  • 命令误触发(模型试图帮忙但执行了破坏性的 shell 命令)

Cisco 的 AI 威胁与安全研究团队强调了"skills"的风险,并引用研究指出,在他们分析的 31,000 个 agent skills 中,有 26% 包含至少一个漏洞,为此他们推出了一款开源扫描工具。

9.2 你真正应该用起来的内置防护机制

一份实用的加固清单:

1)配对 + 私信策略

配对码一小时后过期,且待处理请求有数量上限,因此未知用户无法随意私聊你的智能体并获得完全访问权限。

2)非本地访问的 Gateway token

如果你将网关暴露到 localhost 之外,务必要求连接在握手时通过 token 认证。

3)多人可私信时启用安全私信模式

按发送者/频道隔离会话,避免上下文泄露。

4)沙箱/最小权限原则

记住:工作区默认并非沙箱。如果你允许智能体运行代码或接触敏感路径,请启用沙箱机制。

5)审计你的配置

文档建议运行 openclaw security audit 来识别危险配置和潜在暴露点。

6)将社区 skills 视为不受信任的代码

扫描、审查、固定版本,避免"每天随机使用 skill"的行为。

9.3 部署建议(简单且务实)

如果你想要有所获益,又不想陷入噩梦:

  • 在专用机器或 VM 上运行 OpenClaw(这样"agent 被攻破"不意味着"你的整台笔记本被攻破")。
  • 为 email、Slack、GitHub 等使用独立账号/限定范围的 token。
  • 在让它执行动作之前,先从"只读"工作流开始(如生成摘要、起草内容)。

10 一份"代码/文档快速查阅指南"

如果你想深入了解,以下是与架构最相关的关键入口点:

11 最终结论:OpenClaw 的"自主性"本质上是一种工程模式

如果把所有内容提炼到最简,OpenClaw 的架构基本由四部分组成:

  • 时间 Time(心跳 + 定时任务)
  • 事件 Events(消息 + Hooks + Webhooks)
  • 状态 State(会话 + 磁盘上的 workspace 记忆)
  • 循环 Loop(智能体处理轮次:读取 → 决策 → 执行 → 写入)

当人们问"智能体是否有生命"时,他们问错了问题。

真正应该问的是:

  • 什么事件会唤醒它们?
  • 它们拥有什么状态?
  • 它们强制遵守哪些 invariants?
  • 它们能执行哪些工具?

OpenClaw 用清晰的架构回答了这些问题。

而正是这种清晰,赋予了它强大的能力。

END

本期互动内容 🍻

❓OpenClaw 默认工作区不是沙箱。在你实际部署中,更倾向「先跑起来再加固」,还是「一开始就最小权限」?有没有踩过相关的坑?

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://theagentstack.substack.com/p/openclaw-architecture-part-1-control

相关推荐
博图光电几秒前
Libra 27105相关技术参数
人工智能·数码相机
浮链序12 分钟前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具
算法·安全·llm
IT_陈寒25 分钟前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
yumgpkpm38 分钟前
Acceldata ODP(Open Data Platform)3.3.6.4(RHEL9)保姆级完整安装手册
大数据·人工智能·hive·hadoop·kafka·hbase·cloudera
程序员cxuan40 分钟前
腾讯又来一王炸,开源版 WorkBuddy 太夯了!
人工智能·后端·程序员
邓工说电1 小时前
智慧断路器安全吗?数据加密、离线保护与合规认证全解读
大数据·数据库·人工智能·智能断路器·炜晔科技
阿里云大数据AI技术1 小时前
Lance 数据检索怎么选,当然阿里云 Milvus 向量湖
人工智能
出海客1 小时前
跨境电商多语言客服知识库怎么建:资料结构、检索边界与人工升级
大数据·人工智能
xsd202411181 小时前
从自主导航到视觉读表:一台工业巡检机器人的全栈技术链路拆解
人工智能
袁哥大话安全1 小时前
巡隐WEBSHELL扫描软件
人工智能·安全·web