OpenClaw - 个人 AI 助手系统
版本: 2026年1月30日
最后更新: 2026年02月01日
本文档集包含 OpenClaw 系统的完整架构设计方案和各模块的二次开发指导。
| 序号 | 文档 | 内容概述 |
|---|---|---|
| 1 | 系统整体架构设计方案 | 系统分层、核心组件、数据流、接口设计、部署架构 |
| 2 | Gateway 模块二次开发指导手册 | WebSocket 控制平面、RPC 方法、事件系统、协议扩展 |
| 3 | Channel 插件开发指导手册 | 消息通道开发、Adapter 实现、配置 Schema、测试 |
| 4 | Agent 工具开发指导手册 | Agent Tool 开发、Pi RPC 集成、工具上下文、测试 |
| 5 | [Plugin SDK 开发指导手册](./05-Plugin SDK开发指导手册.md) | 插件架构、扩展点、配置系统、发布流程 |
| 6 | CLI 扩展开发指导手册 | CLI 命令开发、交互设计、依赖注入、测试 |
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 (Client Layer) │
│ CLI │ WebChat │ macOS App │ iOS/Android Nodes │
└─────────────────────────────────────────────────────────────┘
│
│ WebSocket / HTTP
▼
┌─────────────────────────────────────────────────────────────┐
│ Gateway 控制平面层 (Control Plane) │
│ WS Server │ HTTP API │ Channel Mgr │ Plugin Mgr │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 消息通道层 │ │ Agent 运行时层 │ │ 扩展插件层 │
│ Channels │ │ Agent │ │ Plugins │
└──────────────┘ └──────────────┘ └──────────────┘
| 组件 | 路径 | 职责 |
|---|---|---|
| Gateway | src/gateway/ |
WebSocket/HTTP 控制平面 |
| Channels | src/channels/, src/{whatsapp,telegram,...}/ |
消息通道适配器 |
| Agent Runtime | src/agents/ |
Pi RPC Agent 封装 |
| Plugin SDK | src/plugin-sdk/, src/plugins/ |
插件系统 |
| CLI | src/cli/ |
命令行界面 |
# 1. Node.js ≥22 node --version # v22.12.0+ # 2. pnpm pnpm --version # 10.23.0+ # 3. 安装依赖 pnpm install # 4. 构建 pnpm build
# 启动 Gateway 开发模式 pnpm gateway:dev # 带热重载 pnpm gateway:watch # 运行测试 pnpm test
目标: 让 OpenClaw 支持一个新的消息平台
参考文档: 03-Channel插件开发指导手册
关键步骤:
- 创建插件目录
extensions/my-channel/ - 实现
ChannelPlugin接口 - 配置
openclaw.plugin.json - 注册出站/入站适配器
- 测试并发布
目标: 让 AI Agent 能够调用新的功能
参考文档: 04-Agent工具开发指导手册
关键步骤:
- 定义工具 Schema (TypeBox)
- 实现
execute函数 - 在插件中注册或添加到内置工具
- 测试工具调用
目标: 添加新的 WebSocket/HTTP 接口
参考文档: 02-Gateway模块二次开发指导手册
关键步骤:
- 定义协议 Schema
- 实现方法处理器
- 注册到
methodHandlers - 更新类型定义
目标: 创建一个包含多种扩展的插件
参考文档: [05-Plugin SDK开发指导手册](./05-Plugin SDK开发指导手册.md)
关键步骤:
- 创建插件目录和清单
- 实现注册函数
- 注册工具/通道/CLI/服务
- 配置 Schema 和 UI 提示
- 测试并发布到 npm
目标: 扩展命令行界面
参考文档: 06-CLI扩展开发指导手册
关键步骤:
- 创建命令文件
- 使用
@clack/prompts实现交互 - 注册到程序
- 编写测试
WebSocket 协议帧格式:
// 请求 { type: "req", id: "unique-id", method: "methodName", params: { ... }, idempotencyKey?: "for-retry" } // 响应 { type: "res", id: "same-id", ok: true | false, payload?: { ... }, error?: { message, code } } // 事件推送 { type: "event", event: "eventName", payload: { ... } }
interface ChannelPlugin { id: string; meta: ChannelMeta; capabilities: ChannelCapabilities; config: ChannelConfigAdapter; outbound: ChannelOutboundAdapter; gateway?: ChannelGatewayAdapter; security?: ChannelSecurityAdapter; messaging?: ChannelMessagingAdapter; // ... 更多适配器 }
interface AgentTool { name: string; description: string; parameters: TSchema; execute: (params: { args: Record<string, unknown>; context: ToolContext; }) => AsyncIterable<ToolResult> | Promise<ToolResult>; }
interface OpenClawPluginApi { registerChannel(options: { plugin: ChannelPlugin }): void; registerTool(tool: AgentTool): void; registerGatewayMethod(method: string, handler: Function): void; registerHttpRoute(path: string, handler: Function): void; registerCli(registerFn: Function, metadata: CliMetadata): void; registerService(service: BackgroundService): void; // ... 更多 }
# 开发 pnpm install # 安装依赖 pnpm build # 构建 pnpm gateway:dev # 开发模式启动 Gateway pnpm gateway:watch # 热重载模式 # 测试 pnpm test # 运行测试 pnpm test:coverage # 覆盖率测试 pnpm test:e2e # E2E 测试 # 代码规范 pnpm lint # 检查 pnpm lint:fix # 自动修复 pnpm format # 格式化 # CLI 使用 openclaw onboard # 引导安装 openclaw gateway # 启动 Gateway openclaw agent --message "Hi" # 发送消息给 Agent openclaw plugins list # 列出插件 openclaw plugins install <pkg> # 安装插件 # 调试 DEBUG=openclaw:* pnpm gateway:dev # 详细日志 DEBUG=openclaw:gateway pnpm gateway:dev # Gateway 日志 DEBUG=openclaw:channels pnpm gateway:dev # 通道日志
openclaw/
├── src/ # 核心源码
│ ├── gateway/ # Gateway 服务器
│ ├── channels/ # 通道框架
│ ├── agents/ # Agent 运行时
│ ├── plugins/ # 插件系统
│ ├── cli/ # CLI 实现
│ ├── config/ # 配置系统
│ ├── sessions/ # 会话管理
│ └── ... # 其他模块
│
├── extensions/ # 扩展插件
│ ├── matrix/ # Matrix 通道
│ ├── msteams/ # Microsoft Teams
│ ├── voice-call/ # 语音通话
│ └── ... # 更多插件
│
├── docs-internal/ # 本文档集
│ ├── README.md # 本文件
│ ├── 01-系统整体架构设计方案.md
│ ├── 02-Gateway模块二次开发指导手册.md
│ ├── 03-Channel插件开发指导手册.md
│ ├── 04-Agent工具开发指导手册.md
│ ├── 05-Plugin SDK开发指导手册.md
│ └── 06-CLI扩展开发指导手册.md
│
├── docs/ # 用户文档 (Mintlify)
├── apps/ # 客户端应用
│ ├── macos/ # macOS 应用
│ ├── ios/ # iOS 应用
│ └── android/ # Android 应用
│
├── test/ # 测试辅助
└── scripts/ # 构建脚本
- OpenClaw Docs - 用户文档
- GitHub Repo - 源码仓库
- Pi Agent Core - Agent 运行时
- TypeBox - JSON Schema 类型
- Commander.js - CLI 框架
- @clack/prompts - 交互提示
- Vitest - 测试框架
- 使用清晰的标题描述问题
- 提供复现步骤
- 包含环境信息(Node 版本、操作系统)
- 附上相关日志
- Fork 仓库
- 创建功能分支 (
git checkout -b feature/my-feature) - 提交更改 (
git commit -am 'Add feature') - 推送到分支 (
git push origin feature/my-feature) - 创建 Pull Request
- 使用 TypeScript (ESM)
- 遵循 Oxlint/Oxfmt 规范
- 添加测试覆盖
- 更新相关文档
MIT License - 详见 LICENSE 文件
感谢所有贡献者让 OpenClaw 变得更好!
特别感谢:
- Mario Zechner - Pi Agent Core 作者
- 所有贡献者
提示: 本文档是内部开发文档,与面向用户的 docs.openclaw.ai 互补。如需了解系统使用方法,请参考官方用户文档。