╭───────────────────────────────────────────────────────────────────────────────────╮
│ │
│ ▐█▛█▛█▌ Welcome to Kimi Code CLI! │
│ ▐█████▌ Send /help for help information. │
│ │
│ Directory: ~/GitHub/openclaw │
│ Session: 667c969f-2766-4131-97d8-f82a96685b0e │
│ Model: not set, send /login to login │
│ │
│ Tip: Kimi Code Web UI, a GUI version of Kimi Code, is now in technical preview. │
│ Type /web to switch, or next time run `kimi web` directly. │
│ │
╰───────────────────────────────────────────────────────────────────────────────────╯
junjian@openclaw✨ /login
Select a platform (↑↓ navigate, Enter select, Ctrl+C cancel):
> 1. Kimi Code
2. Moonshot AI Open Platform (moonshot.cn)
3. Moonshot AI Open Platform (moonshot.ai)
Please visit the following URL to finish authorization.
Verification URL: https://www.kimi.com/code/authorize_device?user_code=SJDF-UFO
Logged in successfully.
一、项目概览
属性 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
项目名称 OpenClaw - Personal AI Assistant
核心定位 本地优先的个人 AI 助手网关系统
技术栈 TypeScript/Node.js (ESM) + Swift (Apple) + Kotlin (Android)
代码规模 ~30万行 TypeScript 源码
包管理 pnpm (workspace)
运行时要求 Node.js ≥ 22
──────────────────────────────────────────────────────────────────────────
二、整体架构图
┌─────────────────────────────────────────────────────────────────────────┐
│ CLIENT LAYER │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ macOS App │ │ iOS App │ │ Android App │ │ Web UI │ │
│ │ (Swift) │ │ (Swift) │ │ (Kotlin) │ │ (Lit/HTML) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └────────┬────────┘ │
│ └─────────────────┴─────────────────┴─────────────────┘ │
│ │ │
│ WebSocket / HTTP │
│ │ │
└──────────────────────────────┼──────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ GATEWAY LAYER (Node.js) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ CLI Interface (Commander) │ │
│ │ onboard │ gateway │ agent │ message │ cron │ browser │ doctor │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────┼─────────────────────────────────────┐ │
│ │ CORE MODULES │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │ │
│ │ │ Agents │ │ Channels │ │ Browser │ │ Auto-Reply │ │ │
│ │ │ (Pi RPC) │ │ (Plugins) │ │ (CDP/PW) │ │ Engine │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────────┘ │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │ │
│ │ │ Config │ │ Memory │ │ TTS │ │ Canvas │ │ │
│ │ │ (Zod) │ │ (sqlite-vec│ │(ElevenLabs)│ │ (A2UI) │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────────┘ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────┼──────────────────────────────────────────┐
│ EXTENSION LAYER │
│ ┌──────────┬──────────┬──────────┬──────────┬──────────┬─────────────┐ │
│ │ WhatsApp │ Telegram │ Discord │ Slack │ Signal │ iMessage │ │
│ │ (Baileys)│ (grammY) │(discord.)│ (Bolt) │(signal-cli)│ (imsg) │ │
│ └──────────┴──────────┴──────────┴──────────┴──────────┴─────────────┘ │
│ ┌──────────┬──────────┬──────────┬──────────┬──────────┬─────────────┐ │
│ │GoogleChat│ Matrix │ Zalo │ Teams │BlueBubble│ Nostr │ │
│ └──────────┴──────────┴──────────┴──────────┴──────────┴─────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────┼──────────────────────────────────────────┐
│ EXTERNAL SERVICES │
│ ┌──────────┬──────────┬──────────┬──────────┬──────────┬─────────────┐ │
│ │Anthropic │ OpenAI │ Google │ Groq │ Venice │ Ollama │ │
│ │ (Claude)│ (GPT-4) │ (Gemini) │ │ │ (Local) │ │
│ └──────────┴──────────┴──────────┴──────────┴──────────┴─────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────
三、核心模块详解
1. CLI 层 (src/cli/)
src/cli/
├── program/ # CLI 程序构建
│ ├── build-program.ts # Commander 程序入口
│ ├── command-registry.ts # 命令注册
│ └── register.*.ts # 各子命令注册
├── gateway-cli/ # Gateway 管理
├── browser-cli/ # 浏览器控制
├── nodes-cli/ # 节点/设备管理
├── cron-cli/ # 定时任务
└── deps.ts # 依赖注入
设计特点:
• 使用 Commander.js 构建命令行界面
• 依赖注入模式 (createDefaultDeps)
• 统一的配置管理和错误处理
2. Agent 层 (src/agents/)
src/agents/
├── pi-embedded-runner/ # Pi Agent 运行时
│ ├── run/ # 执行逻辑
│ ├── model.ts # 模型管理
│ └── payloads.ts # 消息负载
├── tools/ # Agent 工具集
│ ├── browser-tool.ts # 浏览器控制
│ ├── web-search.ts # 网络搜索
│ ├── sessions-send-tool.ts # 消息发送
│ └── image-tool.ts # 图像处理
├── auth-profiles/ # 认证配置管理
├── skills/ # 技能系统
└── sandbox/ # 沙箱环境
关键技术:
• 基于 @mariozechner/pi-agent-core 的 RPC 模式
• 流式响应处理 (pi-embedded-subscribe.ts)
• 工具调用系统 (Tool Calling)
• 内存压缩和上下文管理
3. 渠道层 (src/channels/, src/web/)
src/channels/
├── plugins/ # 渠道插件系统
│ ├── types.*.ts # 插件类型定义
│ ├── onboarding/ # 各渠道 onboarding
│ ├── normalize/ # 消息标准化
│ └── outbound/ # 消息发送
├── registry.ts # 渠道注册表
├── allowlists/ # 白名单管理
└── command-gating.ts # 命令权限控制
src/web/ # WhatsApp Web (Baileys)
src/discord/ # Discord 集成
src/telegram/ # Telegram (grammY)
src/slack/ # Slack (Bolt)
src/signal/ # Signal (signal-cli)
src/imessage/ # iMessage
src/line/ # LINE
设计模式:
• Adapter 模式:每个渠道实现标准适配器接口
• Plugin 架构:通过 extensions/ 目录扩展渠道
• 消息标准化:统一的消息格式转换
4. 配置系统 (src/config/)
src/config/
├── types.*.ts # 类型定义(按功能拆分)
├── zod-schema.*.ts # Zod 验证模式
├── sessions.ts # 会话管理
└── config.ts # 配置加载/保存
特点:
• 使用 Zod 进行运行时类型验证
• 配置文件存储在 ~/.openclaw/
• 支持多账号、多渠道配置
5. 自动回复引擎 (src/auto-reply/)
src/auto-reply/
├── reply/ # 回复处理
│ ├── agent-runner.ts # Agent 执行器
│ ├── queue/ # 消息队列
│ ├── commands-*.ts # 内置命令处理
│ └── session.ts # 会话管理
├── commands-registry.ts # 命令注册
└── dispatch.ts # 消息分发
核心功能:
• 消息队列和路由
• 分块流式响应
• 内置命令系统 (!status, !models, !compact 等)
• 提及/回复触发器
6. 浏览器自动化 (src/browser/)
src/browser/
├── pw-session.ts # Playwright 会话
├── pw-tools-core.ts # 浏览器工具核心
├── routes/ # HTTP API 路由
├── cdp.ts # Chrome DevTools Protocol
└── server.ts # 浏览器控制服务
──────────────────────────────────────────────────────────────────────────
四、插件/扩展系统
插件目录结构 (extensions/)
插件 功能
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
whatsapp WhatsApp 渠道 (Baileys)
discord Discord 渠道
telegram Telegram 渠道
slack Slack 渠道
signal Signal 渠道
imessage iMessage 渠道
matrix Matrix 渠道
msteams Microsoft Teams
voice-call 语音通话
memory-lancedb 向量存储 (LanceDB)
lobster 自定义功能
插件 SDK (src/plugin-sdk/)
提供标准化的扩展接口:
• ChannelAdapter - 渠道适配器
• ChannelConfigAdapter - 配置适配器
• ChannelMessagingAdapter - 消息适配器
• ChannelOutboundAdapter - 外发消息适配器
──────────────────────────────────────────────────────────────────────────
五、多平台应用架构
apps/
├── macos/ # macOS Menu Bar App
│ └── Sources/
│ ├── OpenClaw/ # 主应用 (SwiftUI)
│ ├── OpenClawIPC/ # XPC 通信
│ └── OpenClawProtocol/ # 协议定义
├── ios/ # iOS App (SwiftUI)
├── android/ # Android App (Kotlin)
└── shared/ # 共享代码
└── OpenClawKit/ # 跨平台工具包
通信机制:
• macOS: XPC + WebSocket
• iOS/Android: WebSocket + REST API
──────────────────────────────────────────────────────────────────────────
六、数据流架构
1. 入站消息流:
Channel API → Normalize → Allowlist Check → Queue → Agent Runner → Stream Reply
2. 出站消息流:
CLI/API → Target Resolution → Channel Adapter → Send API
3. Agent 执行流:
User Input → Pi Agent RPC → Tool Call → Execute → Stream Response
──────────────────────────────────────────────────────────────────────────
七、关键技术决策
领域 技术选择 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
运行时 Node.js 22+ ESM 原生支持
类型验证 Zod 运行时类型安全
CLI 框架 Commander.js 成熟的 Node.js CLI
HTTP 框架 Hono 轻量级,Edge 友好
浏览器控制 Playwright + CDP 完整的浏览器自动化
向量存储 sqlite-vec 嵌入式向量搜索
配置格式 YAML + JSON 人类可读配置
测试框架 Vitest 快速,V8 覆盖率
──────────────────────────────────────────────────────────────────────────
八、安全架构
1. DM 配对机制: 默认 dmPolicy="pairing",未知发送者需配对码
2. 白名单系统: 基于 allowFrom 的细粒度访问控制
3. 命令门控: 区分普通/特权命令
4. 沙箱执行: Agent 工具在受限环境中运行
──────────────────────────────────────────────────────────────────────────
九、部署模式
模式 说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Gateway 后台守护进程 (launchd/systemd)
CLI 命令行交互
Docker 容器化部署
macOS App 菜单栏应用 (内置 Gateway)
──────────────────────────────────────────────────────────────────────────
十、总结
OpenClaw 是一个设计精良的个人 AI 助手网关系统,其核心架构特点包括:
1. 模块化设计:清晰的模块边界,每个渠道/功能独立实现
2. 插件化扩展:通过 extensions 机制支持无限扩展
3. 多平台统一:一套核心代码支持 CLI/Web/Mobile/Desktop
4. 本地优先:数据存储在本地,保护隐私
5. 流式响应:完整的流式处理架构,支持实时交互
该架构非常适合作为个人 AI 基础设施,将多个消息渠道和 AI 模型统一整合到一个可控制的本地网关中。
Port 5494 is in use, using port 5495 instead
+==============================================================+
| █▄▀ █ █▀▄▀█ █ █▀▀ █▀█ █▀▄ █▀▀ |
| █ █ █ █ ▀ █ █ █▄▄ █▄█ █▄▀ ██▄ |
| |
| WEB UI (Technical Preview) |
| |
|--------------------------------------------------------------|
| |
| ➜ Local http://127.0.0.1:5495 |
| |
|--------------------------------------------------------------|
| |
| Tips: |
| • Use -n / --network to share on LAN |
| • Use --network --public for public access |
| |
+==============================================================+
INFO: Started server process [98290]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:5495 (Press CTRL+C to quit)