OpenClaw 的技术本质与架构深度解析

从 TypeScript CLI 到通道队列架构,揭秘 OpenClaw 如何实现持久记忆、计算机使用与浏览器自动化

Hesamation
15 分钟阅读
来源: Twitter/X @Hesamation

一、OpenClaw 的技术本质

OpenClaw 本质上是一个 TypeScript 命令行应用程序

它并非 Python 或 Next.js 项目,也不是网页应用。它是一个运行在您设备上的进程,能够启动网关服务器处理所有渠道连接、调用各类大语言模型 API、在本地执行工具命令,并在您的计算机上执行任意操作。

OpenClaw 究竟是什么?

OpenClaw 是一款可在本地或通过模型 API 运行的私人助手,能像手机应用般便捷使用。但与普通聊天机器人不同,它具备真正的计算机操作能力。

  • 启动网关服务器以处理所有渠道连接(Telegram、WhatsApp、Slack 等)
  • 调用各类大语言模型 API(Anthropic、OpenAI、本地模型等)
  • 在本地执行工具命令
  • 在您的计算机上执行任意操作

二、架构解析

当你在通讯软件中向 OpenClaw 发送指令时,以下六个组件协同工作:

1渠道适配器

专用适配器接收并预处理消息(标准化处理、提取附件)

不同通讯平台都有独立的适配器

2网关服务器

作为任务/会话协调核心的网关服务器,将消息路由至对应会话

这是 OpenClaw 的心脏,能处理大量并发请求

为实现操作序列化,OpenClaw 采用基于通道的命令队列架构

每个会话拥有独立通道,低风险可并行任务则通过并行通道处理(如定时任务)

默认串行,显式并行 —— 这与混乱的异步/等待模式形成鲜明对比。过度并行化会损害系统可靠性,引发大量调试难题。

3智能体执行器

人工智能在此真正介入。它会动态选择模型、匹配 API 密钥(若均失效则标记配置文件冷却并尝试下一个)

在主模型失败时自动回退

执行器通过整合可用工具、技能、记忆系统以及会话历史记录(来自 .jsonl 文件)动态组装系统提示词

交由上下文窗口守卫检测剩余空间。当上下文将满时,系统会压缩会话(概括上下文)或优雅报错

4大语言模型 API 调用

调用过程支持响应流式传输

对不同供应商进行抽象封装

若模型支持,还可请求扩展思考功能

5智能体循环

当大语言模型返回工具调用响应时,OpenClaw 会在本地执行并将结果加入对话

该循环持续至模型返回最终文本或达到最大轮次(默认约 20 轮)

此处正是魔法发生之地:使用计算机

6响应路径

结果通过原渠道返回用户

会话通过基础 JSONL 格式持久化存储,每行包含用户消息、工具调用、结果、响应等 JSON 对象

这正是 OpenClaw 实现会话记忆的基础

三、记忆系统解析

缺乏记忆系统的 AI 助手如同金鱼,OpenClaw 通过双重机制实现记忆:

JSONL 会话记录

如前所述,每行包含用户消息、工具调用、结果、响应等 JSON 对象

Markdown 记忆文件

存储于 MEMORY.md 或 memory/ 文件夹,由智能体自主生成

搜索机制

融合向量搜索与关键词匹配优势。例如搜索「身份验证错误」时,既能找到提及「认证问题」的文档(语义匹配),也能精确定位包含该短语的内容。

  • 向量搜索使用 SQLite 实现
  • 关键词搜索采用 SQLite 扩展 FTS5
  • 嵌入供应商可配置
  • 系统受益于智能同步机制,文件监视器检测到变更时自动触发

简洁性哲学

「这些 Markdown 文件由智能体通过标准「写入」文件工具自主生成,没有专用的记忆写入 API。智能体直接写入 memory/*.md 文件。新会话启动时,钩子程序会抓取历史对话并生成 Markdown 摘要。OpenClaw 的记忆系统异常简洁,没有记忆合并机制,也无需月度/周度记忆压缩。这种简洁性既是优势也可能是隐患,但我始终推崇可解释的简洁性而非复杂的代码。记忆永久保存且历史记忆权重均等,可以说系统不存在遗忘曲线。」

四、使用计算机

这是 OpenClaw 的核心优势:授权它操作您的计算机。其使用方式基本符合您的预期。

执行环境

沙盒环境(默认)

在 Docker 容器内运行命令

宿主机直接运行

在本地机器上直接执行

远程设备执行

通过网络控制其他设备

文件系统工具

读写编辑本地文件

浏览器工具

基于 Playwright 的浏览器自动化

进程管理工具

后台长时命令、结束进程等

安全机制

类似 Claude Code,系统设有用户命令许可清单(单次允许/永久允许/拒绝提示):

// ~/.clawdbot/exec-approvals.json
{
  "agents": {
    "main": {
      "allowlist": [
        { "pattern": "/usr/bin/npm", "lastUsedAt": 1706644800 },
        { "pattern": "/opt/homebrew/bin/git", "lastUsedAt": 1706644900 }
      ]
    }
  }
}
安全命令(已预授权)

常用安全的命令可以直接执行

jqgrepcutsortuniqheadtailtrwc
危险 shell 结构(默认拦截)

以下命令执行前会被拒绝:

  • npm install $(cat /etc/passwd) # 命令替换
  • cat file > /etc/hosts # 重定向
  • rm -rf / || echo "failed" # 链式操作
  • (sudo rm -rf /) # 子shell

安全策略与 Claude Code 高度相似,核心理念是在用户允许范围内实现最大自主权。

五、浏览器:语义快照技术

浏览器工具主要采用语义快照而非截图。这种基于文本的页面可访问性树(ARIA)呈现方式使智能体获得更清晰的页面视图:

智能体看到的页面视图:

  • - 按钮「登录」[ref=1]
  • - 文本框「邮箱」[ref=2]
  • - 文本框「密码」[ref=3]
  • - 链接「忘记密码?」[ref=4]
  • - 标题「欢迎回来」
  • - 列表
  • - 列表项「仪表盘」
  • - 列表项「设置」

语义快照的四大优势:

更高效

网页浏览未必是视觉任务。相较于 5MB 的截图,语义快照仅需不到 50KB,且仅消耗图像所需令牌量的零头。

更清晰

基于文本的可访问性树(ARIA)提供结构化的页面信息,避免了视觉噪音

更准确

直接获取页面元素的语义信息,无需从图像中推断

更经济

大幅降低 token 消耗,使复杂浏览器自动化成为可能

来源:https://x.com/Hesamation/status/2017038553058857413 | 翻译整理:OpenClaw 团队