Skip to content

OpenClaw 技术栈分析报告

分析时间: 2026-03-02 仓库地址: https://github.com/openclaw/openclaw版本: 2026.3.1 分析来源: 源代码分析


📊 项目概览

OpenClaw 是一个多通道 AI 网关和智能体编排框架,设计理念是"极简核心、弹性扩展"。它不是一个单一的软件,而是一套完整的基础设施系统。

核心定位

  • 个人 AI 助手:本地运行,多平台接入
  • 控制平面:Gateway 是单一事实源
  • 执行引擎:Pi 智能体通过 RPC 通信

🏗️ 技术架构

1. 核心运行时

组件技术选型版本要求分析
运行时Node.js≥22.12.0I/O 密集型任务的优势,庞大生态系统
语言TypeScript5.9.3严格类型检查,避免 any
构建工具tsdown-高效的 TypeScript 构建工具
包管理pnpm10.23.0monorepo 支持,高效的依赖管理
替代运行时Bun可选支持 Bun 直接运行 TypeScript

2. 核心架构组件

Gateway(网关)

  • 位置: src/gateway/
  • 职责:
    • 单进程服务,作为系统的"大脑"
    • 消息路由、会话管理、状态维护
    • 单一事实源(Single Source of Truth)
  • 技术特点:
    • WebSocket 控制平面(默认端口 18789)
    • 支持 loopback/lan 绑定
    • Express HTTP 服务(5.2.1)

Pi 智能体

  • 位置: src/agents/
  • 职责:
    • 执行核心逻辑的引擎
    • 通过 RPC 与 Gateway 通信
    • 控制与执行分离
  • 依赖:
    • @mariozechner/pi-agent-core (0.55.1)
    • @mariozechner/pi-ai (0.55.1)
    • @mariozechner/pi-coding-agent (0.55.1)
    • @mariozechner/pi-tui (0.55.1)

3. 通信与集成

内部通信

协议用途
WebSocket控制平面、流式传输ws (8.19.0)
RPC智能体与 Gateway 通信@agentclientprotocol/sdk (0.14.1)

消息通道适配

核心通道(src/channels/):

  • src/telegram - Telegram(grammy 1.40.1)
  • src/discord - Discord(@discordjs/voice 0.19.0)
  • src/slack - Slack(@slack/bolt 4.6.0)
  • src/signal - Signal
  • src/imessage - iMessage
  • src/web - WhatsApp Web

扩展通道(extensions/):

  • extensions/bluebubbles - BlueBubbles
  • extensions/feishu - 飞书(@larksuiteoapi/node-sdk 1.59.0)
  • extensions/matrix - Matrix
  • extensions/googlechat - Google Chat
  • extensions/line - LINE(@line/bot-sdk 10.6.0)
  • extensions/msteams - Microsoft Teams
  • extensions/zalo - Zalo
  • extensions/zalouser - Zalo Personal
  • extensions/voice-call - 语音通话

协议适配器模式

  • WhatsApp: @whiskeysockets/baileys (7.0.0-rc.9)
  • Telegram: grammy + @grammyjs/runner + @grammyjs/transformer-throttler
  • Discord: @discordjs/voice + discord-api-types

4. 数据与记忆系统

持久化内存

技术版本用途
SQLite-本地优先的记忆数据库
sqlite-vec0.1.7-alpha.2向量相似度搜索(快速路径)
FTS5-全文搜索 + BM25 算法

混合检索

  • 快速路径: sqlite-vec 扩展进行向量搜索
  • 安全路径: JavaScript 暴力计算余弦相似度
  • 关键词搜索: FTS5 BM25 算法
  • 混合排序: 关键词 + 语义组合

亮点: 摒弃复杂的专用向量数据库,实现"零运维" RAG 系统

5. 工具执行与扩展

安全沙箱

技术用途
Docker容器化隔离
Linux Namespace命名空间隔离
Capabilities细粒度权限控制

扩展机制

  • SPI 模式: 服务提供者接口
  • 配置方式: YAML 配置文件
  • Plugin SDK: 动态注入、清除、热加载
  • 脚本热重载: chokidar (5.0.0)

浏览器自动化

  • Playwright Core: 1.58.2
  • 可选 Chromium: Docker 层可选安装(节省启动时间)

6. 部署与安全

容器化

  • 基础镜像: node:22-bookworm
  • 包管理器: corepack enable + pnpm
  • 安全强化:
    • 非 root 用户运行(uid 1000)
    • cap_drop: [NET_RAW, NET_ADMIN]
    • security_opt: [no-new-privileges:true]

服务编排

  • Docker Compose: Gateway + CLI 双服务
  • 网络模式:
    • Gateway:标准桥接(需 --bind lan)或 host 网络
    • CLI:service:openclaw-gateway 网络模式

可观测性

  • 日志: tslog (4.10.2)
  • 追踪: extensions/diagnostics-otel
  • 审计: @buape/carbon(防篡改哈希链)

安全强化

  • 外部密钥: 支持对接 AWS Secrets Manager、HashiCorp Vault
  • 环境隔离: Docker 沙箱执行
  • 凭证轮换: 最小权限访问原则

🔧 开发工具链

构建与测试

工具用途
TypeScript5.9.3 + @typescript/native-preview
Vitest4.0.18(单元测试、E2E 测试、覆盖率)
Oxlint1.50.0(代码检查)
Oxfmt0.35.0(代码格式化)
Pre-commit HooksGit hooks 自动化

质量保证

bash
# 完整检查
pnpm check  # format + tsgo + lint + 专项 lint + Swift 检查

# 测试套件
pnpm test:all  # lint + build + test + e2e + live + docker
pnpm test:coverage  # 覆盖率报告

死代码检测

  • knip - 检测未使用的导出
  • ts-prune - TypeScript 死代码
  • ts-unused-exports - 未使用导出

📁 项目结构

openclaw/
├── src/                      # 核心源码
│   ├── agents/               # Pi 智能体
│   ├── channels/             # 通道适配器
│   ├── cli/                 # CLI 命令
│   ├── commands/            # 交互命令
│   ├── gateway/             # Gateway 服务
│   ├── infra/              # 基础设施
│   ├── media/              # 媒体处理
│   └── browser/            # 浏览器自动化
├── extensions/              # 扩展(通道、技能)
│   ├── feishu/            # 飞书
│   ├── matrix/            # Matrix
│   └── ...               # 40+ 扩展
├── apps/                   # 移动应用
│   ├── android/           # Android(Kotlin)
│   ├── ios/              # iOS(Swift)
│   └── macos/            # macOS
├── docs/                   # 文档
├── skills/                 # 技能
└── ui/                     # Web UI(Lit)

🚀 核心设计哲学

1. "心跳"优先的降级逻辑

  • 先执行低成本检查(规则判断、本地缓存)
  • 仅在必要时调用昂贵的 LLM
  • 极大优化性能和成本

2. 本地优先与渐进式扩展

  • 从本地 SQLite 文件存储
  • 可演进到分布式 TiDB
  • 避免过度设计

3. 安全内建于设计

  • 容器隔离工具执行
  • 外部密钥管理敏感信息
  • ACIP(高级认知免疫提示)防御注入

4. 严格类型安全

  • 禁用 @ts-nocheck
  • 禁用 no-explicit-any
  • 避免原型突变(prototype mutation)
  • 显式继承/组合

📊 性能优化

延迟优化

  • SDK 深度嵌入: 1000QPS 下从 15ms 降至 2ms
  • WebSocket 优先: 降低传输开销,支持流式传输

缓存策略

  • 会话状态:Gateway 单一事实源
  • 本地缓存:内存检索优先级
  • CDN 静态资源:docs.openclaw.ai

🔐 安全架构

多层防护

  1. 网络层: loopback 绑定默认
  2. 进程层: 非 root 用户 + Namespace 隔离
  3. 容器层: Docker 沙箱 + Capabilities
  4. 应用层: 提示注入防御(ACIP)
  5. 数据层: 外部密钥管理 + 凭据轮换

权限最小化

  • cap_drop: [NET_RAW, NET_ADMIN]
  • no-new-privileges:true
  • 细粒度文件权限(插件目录)

🎯 技术亮点

1. 零运维 RAG 系统

  • SQLite + sqlite-vec 混合检索
  • 无需专用向量数据库
  • 本地优先,开箱即用

2. 跨平台能力

  • Web(Node.js)、Mobile(iOS/Android)、Desktop(macOS)
  • 统一 Gateway 控制平面
  • 通道扩展机制

3. 开发体验

  • TypeScript 严格类型
  • 自动化代码质量检查
  • Monorepo 扩展管理

4. 生产就绪

  • Docker/Kubernetes 支持
  • 可观测性(日志、追踪、审计)
  • 安全加固(沙箱、密钥、权限)

📈 版本管理

发布通道

  • stable:标签发布(vYYYY.M.D
  • beta:预发布(vYYYY.M.D-beta.N
  • dev:main 分支头部

升级策略

  • openclaw update --channel stable|beta|dev
  • 自动检查 GitHub releases
  • 支持从源构建

🔗 外部依赖生态

AI 模型集成

  • OpenAI: ChatGPT/Codex
  • Anthropic: Claude(推荐 100/200 + Opus 4.6)
  • 本地模型: node-llama-cpp(peer dependency)

云服务

  • AWS Bedrock: @aws-sdk/client-bedrock
  • Google Auth: google-auth-library
  • OpenTelemetry: 分布式追踪

💡 技术栈总结

层级核心技术设计理念
运行时Node.js 22 + TypeScript严格类型 + I/O 优势
架构Gateway + Pi RPC控制与执行分离
通信WebSocket + 适配器模式多平台统一接入
内存SQLite + sqlite-vec + FTS5零运维 RAG 系统
安全Docker + Namespace + 外部密钥多层防护
部署Docker Compose + Kubernetes云原生 + 容器化

分析结论: OpenClaw 展示了如何通过务实的技术选择(SQLite、WebSocket)和清晰的架构分层(Gateway/Pi/工具层),构建一个既强大又相对易于个人开发者掌控的 AI 代理系统。

MIT