Skip to content

项目结构

OpenClaw 是一个 pnpm monorepo 项目,包含 71 个 src 子目录、34 个 extension、52 个 skill 和 3 个原生应用。

顶层目录

openclaw/
├── src/                          # 核心源码 (71 个子目录)
├── apps/                         # 原生应用
│   ├── android/                 # Android (Kotlin/Gradle)
│   ├── ios/                     # iOS (Swift)
│   ├── macos/                   # macOS 菜单栏 (SwiftUI)
│   └── shared/                  # iOS/macOS 共享代码 (OpenClawKit)
├── ui/                          # Web UI (Vite + Lit)
├── packages/                    # Workspace 子包
│   ├── clawdbot/               # Clawdbot 实例
│   └── moltbot/                # Moltbot 实例
├── extensions/                  # 34 个通道/功能扩展
├── skills/                      # 52 个内置技能
├── docs/                        # Mintlify 文档 (多语言)
├── test/                        # 测试工具和 fixtures
├── scripts/                     # 构建和部署脚本
├── vendor/                      # 第三方依赖
├── vitest.config.ts            # 测试配置
├── pnpm-workspace.yaml         # Monorepo 配置
└── package.json                # 根包 (CLI 入口)

Workspace 配置

Source: pnpm-workspace.yaml

yaml
packages:
  - .                    # Root package (CLI)
  - ui                   # Web UI
  - packages/*           # Workspace packages (clawdbot, moltbot)
  - extensions/*         # 34 channel plugins

根包的 package.json 导出配置:

json
{
  "main": "dist/index.js",
  "exports": {
    ".": "./dist/index.js",
    "./plugin-sdk": "./dist/plugin-sdk/index.js",
    "./cli-entry": "./openclaw.mjs"
  }
}

三个导出分别对应:主程序入口、插件 SDK、CLI 入口(respawner)。

src/ 核心模块一览

控制平面

目录文件数说明
gateway/~131WebSocket 服务、会话、认证、Hooks、配置热加载
config/~127配置加载、session 存储、profile 管理、校验
sessions/会话管理与隔离
routing/消息路由逻辑

通道实现

目录文件数说明
channels/~33通道抽象层:registry、dock、mention-gating
telegram/~87grammy SDK 集成
discord/~44discord.js 集成
slack/~36@slack/bolt 集成
signal/~24signal-cli 集成
imessage/~16macOS iMessage 集成
line/~36LINE SDK 集成
whatsapp/Baileys (WhatsApp Web)
web/~48WebChat 浏览器接口

Agent 与工具

目录文件数说明
agents/~312Agent 运行时、Pi agent RPC、工具调用、流式处理
plugins/~37插件注册、加载、生命周期
hooks/~30Hook 系统扩展
browser/~70Playwright 浏览器自动化
memory/~45会话记忆、向量数据库

CLI 与命令

目录文件数说明
cli/~107CLI 核心:deps 注入、program 构建、onboarding
commands/~183所有 CLI 子命令实现
tui/~30Terminal UI 模式
wizard/新手引导向导
terminal/终端工具函数

基础设施

目录文件数说明
infra/~157端口管理、二进制文件、环境变量、运行时守卫
media/~22图片/音频/视频处理
media-understanding/~23图片/视频 AI 理解
security/~15安全策略、访问控制、沙箱
logging/~17结构化日志框架
auto-reply/~73自动回复配置与模板
cron/~35定时任务调度
daemon/~32系统守护进程管理

extensions/ 扩展目录

扩展分为两类:通道扩展和功能扩展。

通道扩展:

  • msteams/ — Microsoft Teams
  • matrix/ — Matrix 协议
  • zalo/ / zalouser/ — Zalo 消息
  • voice-call/ — 语音通话
  • googlechat/ — Google Chat
  • mattermost/ — Mattermost

功能扩展:

  • memory-lancedb/ — LanceDB 向量数据库
  • memory-core/ — 记忆系统核心
  • device-pair/ — 设备配对
  • diagnostics-otel/ — OpenTelemetry 诊断
  • llm-task/ — LLM 任务执行
  • copilot-proxy/ — GitHub Copilot 代理

skills/ 技能目录

52 个内置技能,通过 ClawHub registry 管理。示例:

  • 1password/ — 密码管理器
  • github/ — GitHub 集成
  • gmail/ — 邮件
  • google-calendar/ — 日历
  • apple-notes/ / bear-notes/ — 笔记应用
  • apple-reminders/ — 提醒事项
  • slack/ / discord/ — 平台控制技能
  • blogwatcher/ / news/ — 内容监控

原生应用 (apps/)

构建与测试

bash
pnpm build              # 全量构建 (canvas, bundle, protocols)
pnpm check             # 类型检查 + lint + 格式化
pnpm test              # Vitest 单元测试
pnpm test:e2e          # 端到端测试
pnpm test:live         # 实时 API 测试 (需要真实凭据)
pnpm test:coverage     # 覆盖率报告 (70% 阈值)

测试配置文件:

配置用途
vitest.config.ts主配置
vitest.e2e.config.ts端到端测试
vitest.live.config.ts实时 API 测试
vitest.unit.config.ts纯单元测试
vitest.extensions.config.ts扩展测试
vitest.gateway.config.tsGateway 测试

测试文件与源文件共置(*.test.ts),遵循 Vitest 约定。

小结

  • pnpm monorepo 架构,4 个 workspace 区域(root、ui、packages、extensions)
  • src/ 包含 71 个功能模块,覆盖从底层基础设施到上层 CLI 的完整栈
  • extensions/skills/ 提供可插拔的通道和功能扩展
  • apps/ 包含 macOS、iOS、Android 三个原生应用
  • 构建系统基于 tsdown/Rolldown,测试基于 Vitest

下一章:Gateway 概述

OpenClaw 源码学习教程