📅 2026-02-03 | 🖱️
在上一篇文章中,我们介绍了如何部署 OpenClaw。这一篇换个角度:看看它的架构。作为一个开源的本地优先 AI 助手,OpenClaw 不只是聊天机器人集成工具;它更在意可靠性、隐私,以及系统级交互能力怎么落地。本文从工程实现的角度梳理 OpenClaw 的核心架构设计。
OpenClaw 采用了 TypeScript/Node.js (≥22) 作为核心开发语言和运行时。这个选择更像工程上的自然结果:
- 开发者友好:利用 TypeScript 的强类型系统,让复杂 Agent 逻辑更不容易写错。
- CLI 驱动:OpenClaw 把 CLI 当作第一入口。通过 命令行工具,用户可以完成从初始化 ()、服务管理 () 到 Agent 调试的所有操作。这样做的直接好处是:它能更直接地调用系统能力(比如 shell、文件系统),用起来更像“系统助手”,而不是聊天机器人外壳。
OpenClaw 的核心是一个负责任务协调的 Gateway,它作为整个系统的控制平面(Control Plane)。
Gateway 默认在本地 运行,是系统的中心编排器。它负责桥接各类通讯频道(如 Telegram、WhatsApp、Discord 等),并将消息准确地分发给已连接的各类客户端(CLI、移动端、桌面端等)和对应的任务会话。这种设计允许它作为核心控制平面,同时管理多个并发请求。
为了让执行顺序可控,OpenClaw 引入了 “车道式”(Lane-based)指令队列。
- 串行执行:对于每一个独立的 Session,指令是串行执行的。这避免了并发操作导致的状态冲突,特别是在执行 shell 命令或文件系统操作时。
- 可靠性保障:通过队列化管理,即使底层模型响应缓慢,Gateway 也能确保指令按序分发,并实时流式返回执行进度。
从实现上看,这一设计主要是在解决 CLI 环境下的“信号交织”(Interleaving)问题。由于 OpenClaw 常以命令行形式运行,多个并发任务会竞争 (标准输入)和日志输出流。
OpenClaw 用的是一种“嵌套排队”的控制方式:先在会话级(Session-specific)车道里做绝对串行,保证同一上下文的操作按顺序走;再在全局级车道(如 或 )上限制总并发。结果就是:A 任务的日志或错误不容易串到 B 任务里,复杂流程里每一步输出也更干净。
Gateway 既负责任务的下发,也负责把执行进度流式推回客户端,尽量不乱序、并保持较低延迟:
- 单调递增序列号 (Sequence Numbering):每一条来自 Agent 的流式消息(如文本增量、工具调用状态)都带有严格递增的序列号。Gateway 会在下发前进行校验,一旦发现“跳号”即刻报错,在网关侧直接拦截乱序输出。
- 增量节流 (Delta Throttling):为了既看起来实时、又不把客户端刷爆,Gateway 会对文本输出做增量节流(约 150ms 间隔)。
- 背压管理 (Backpressure):通过监控 WebSocket 发送缓冲区,Gateway 能够智能识别网络慢客户端,并采取保护措施防止整个系统被慢连接拖累。
OpenClaw 并不直接运行模型,而是管理 Agent Runner 的整个生命周期。
- 隔离性:每个 Agent 运行在独立的上下文中,支持主会话(Main Session)和非主会话(沙箱模式)。
- 动态注入:OpenClaw 通过 Markdown 文件管理提示词:
- :定义 Agent 角色和行为。
- :定义 Agent 的性格和核心价值观。
- :定义可用工具的元数据。
- Session 状态:通过区分 (激活模式),Agent 可以智能判断何时需要介入对话,何时保持静默。
在记忆持久化方面,OpenClaw 采用了混合存储策略,平衡了人类可读性与机器检索效率:
- JSONL / Markdown:原始对话日志采用 JSONL 格式,通过追加式(Append-only)写入让日志记录更可靠,而且人类直接打开文件就能阅读;关键知识和配置则保留在 Markdown 文件中,方便用户直接查看和修改。
- SQLite FTS5 + Vector:
- 全文搜索 (FTS5):利用 SQLite 的 FTS5 插件实现高效的文本搜索。
- 向量检索:支持向量化存储,使得 Agent 能够基于语义检索历史上下文(RAG),从而实现所谓的“超长短期记忆”。
OpenClaw 的一个关键能力点是其计算机使用(Computer Use)能力。
- Host 模式:在受信任的“主会话”中,Agent 可以直接运行宿主机 Shell 命令,进行软件安装、系统配置等。
- Docker 模式:对于不可信的输入或群聊场景,OpenClaw 支持将工具执行环境隔离在 Docker 容器中,确保宿主机安全。
通过集成 Playwright,OpenClaw 让 Agent 能更可控地做 Web 交互:
- 语义化理解:它尽量不走“截图喂模型”这条路,而是通过提取页面的可访问性树 (ARIA tree) 生成语义快照。这使得模型能从逻辑层面理解页面的视觉布局和交互元素。
- 数字引用 (Numeric Refs):系统会为交互元素自动生成全局唯一的数字编号。Agent 只需要指定编号即可进行“确定**互”,有效解决了传统自动化工具中 CSS/JS 选择器容易失效的痛点。
- 降本增效:相比于数 MB 的截图,文本形式的语义快照通常不足 50KB,这样 token 压力会小很多,模型在处理复杂 Web 应用时也更稳一些。
AI 拿到系统级权限后,安全问题绕不过去。OpenClaw 的做法是先收紧权限,再按需放开:
- 配对机制 (Pairing):所有新客户端或渠道接入必须通过 手动授权。
- 指令分类与允许列表 (Allowlist):
- 对工具进行风险分类(如只读 vs 读写)。
- 精准授权控制:通过配置 预先放行低风险工具;高风险指令则要求用户当场确认。
- DM 策略:灵活配置 ,支持 、 或 模式,确保只有授权用户能访问 Agent 的核心能力。
OpenClaw 的架构更像是把“对话机器人”做成“系统级 Agent”:网关统一编排会话与渠道(channel),队列把并发副作用压住,存储把记录留清楚,工具能力则能隔离、可授权。
如果你想构建一个高度定制、强调隐私的个人 AI 中枢,OpenClaw 里这些架构细节很适合拿来对照自己的实现。
- https://docs.openclaw.ai/
- https://github.com/openclaw/openclaw
- OpenClaw Security Model
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/213718.html