6 minute read

安装 Kimi Code

curl -L code.kimi.com/install.sh | bash

Kimi Code CLI

登录配置

kimi
  1. 登录 - /login
  2. 选择平台 - Kimi Code
  3. 浏览器打开链接,微信扫码完成授权
  4. 返回终端,登录成功
╭───────────────────────────────────────────────────────────────────────────────────╮
│                                                                                   │
│   ▐█▛█▛█▌  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 项目架构

  一、项目概览

   属性         说明
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   项目名称     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 模型统一整合到一个可控制的本地网关中。

生成 OpenClaw 架构图

Kimi Code Web UI

kimi web
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)

Kimi Code 控制台

Kimi Code 实战:2小时完成考试系统

Updated: