《深入 OpenClaw》—— 目录与纲要
生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) 工具: OpenClaw + OpenCode 生成日期:2026-02-17 GitHub:https://github.com/0xtresser/OpenClaw-Book
本书的写作动机与目标读者
OpenClaw 项目概况:一个运行在自己设备上的个人 AI 助手
本书的组织结构与阅读建议
源码版本说明(基于
v2026.2.x分支)预备知识:TypeScript 基础、Node.js 运行时概念、WebSocket 协议、基本的操作系统知识
第一部分:全局概览
第 1 章 认识 OpenClaw
1.1 什么是 OpenClaw:个人 AI 助手的设计哲学
1.1.1 "本地优先"(Local-first)理念与传统 SaaS 的对比
1.1.2 单用户设计(Single-user):为什么不做多租户
1.1.3 多通道统一收件箱:WhatsApp / Telegram / Slack / Discord / Signal / iMessage / WebChat 等
1.2.1 架构图解:消息通道 → Gateway 控制平面 → Pi Agent 运行时 → 工具执行
1.2.2 关键子系统一览:Gateway、Agent、Channel、Tools、Skills、Memory、Canvas
1.2.3 数据流全景:一条消息从用户发出到 AI 回复的完整路径
1.3.1 TypeScript + Node.js 22+:语言与运行时选型
1.3.2 pnpm Monorepo 工程结构(
pnpm-workspace.yaml)1.3.3 构建工具链:tsdown / oxlint / oxfmt / vitest
1.3.4 原生应用:Swift(macOS/iOS)、Kotlin(Android)
1.4.1
src/— 核心源码(69 个子目录)1.4.2
apps/— 原生客户端应用(macOS / iOS / Android)1.4.3
ui/— Web 控制台 UI(Lit + Vite)1.4.4
extensions/— 可选通道扩展(31 个扩展)1.4.5
packages/— 内部共享包1.4.6
skills/— 内置技能(52 个技能)1.4.7
docs/— 官方文档源码
第 2 章 快速上手与开发环境
2.1.1 Node.js 22+、pnpm 安装
2.1.2 从源码克隆与构建(
pnpm install && pnpm build)2.1.3 UI 构建(
pnpm ui:build)
2.2.1
openclaw onboard命令的源码入口(src/wizard/onboarding.ts)2.2.2 向导流程:Gateway 配置 → 模型选择 → 通道连接 → 技能安装
2.2.3 交互式提示的实现:Clack Prompts 库
2.3.1 前台启动 vs 守护进程模式(
src/daemon/)2.3.2 launchd / systemd 服务安装的源码分析
2.4.1
pnpm gateway:watch— 文件监听与热重载2.4.2 测试体系:vitest 单元测试 / e2e 测试 / live 测试 / Docker 测试
2.4.3 代码质量:oxlint 类型感知 Lint + oxfmt 格式化
第二部分:Gateway 控制平面
第 3 章 Gateway 服务器架构
3.1.1 "控制平面"(Control Plane)的含义
衍生解释:控制平面是网络工程中的概念,指负责决策和协调的组件,区别于承载实际数据传输的"数据平面"。在 OpenClaw 中,Gateway 就是控制平面——它不直接承载 AI 对话,而是协调所有通道、客户端和 Agent 之间的通信。
3.1.2 单 Gateway 实例约束:为什么每台主机只运行一个 Gateway
3.1.3 Gateway 的职责边界:通道管理、会话管理、工具路由、事件分发
3.2.1 入口文件
src/entry.ts:进程标题设置、实验性警告抑制、CLI 分发3.2.2 Gateway CLI 启动(
src/cli/gateway-cli.ts)3.2.3 服务器启动序列(
src/gateway/server-startup.ts)3.2.4 服务器实现类(
src/gateway/server.ts与src/gateway/server.impl.ts)
3.3.1 WebSocket 传输层:
ws库的使用与配置3.3.2 WebSocket 运行时管理(
src/gateway/server-ws-runtime.ts)3.3.3 连接生命周期:connect 握手 → 认证 → 事件订阅 → 断开
3.3.4 帧协议格式:
{type:"req", id, method, params}/{type:"res"}/{type:"event"}
3.4.1 HTTP 服务器搭建(
src/gateway/server-http.ts)3.4.2 OpenAI 兼容 HTTP 接口(
src/gateway/openai-http.ts)3.4.3 Open Responses API(
src/gateway/openresponses-http.ts)3.4.4 工具调用 HTTP 接口(
src/gateway/tools-invoke-http.ts)
第 4 章 Gateway 协议与类型系统
4.1.1 为什么选择 WebSocket 而非 REST
4.1.2 请求-响应 + 服务器推送事件的混合模式
4.1.3 幂等键(Idempotency Key)机制防止重复操作
衍生解释:TypeBox 是一个用 TypeScript 定义 JSON Schema 的库。它通过 TypeScript 的类型系统在编译期生成 JSON Schema,实现了"一次定义,类型安全 + 运行时验证"的双重保障。
4.2.1 协议 Schema 定义(
src/gateway/protocol/schema/)4.2.2 从 TypeBox 生成 JSON Schema(
scripts/protocol-gen.ts)4.2.3 从 JSON Schema 生成 Swift 模型(
scripts/protocol-gen-swift.ts)4.2.4 协议一致性校验(
pnpm protocol:check)
4.3.1 请求方法一览(
src/gateway/server-methods-list.ts)4.3.2
connect— 握手与认证4.3.3
agent/agent.wait— 发起 AI 对话4.3.4
send— 发送消息到通道4.3.5
sessions.*— 会话管理方法族4.3.6 事件类型:
agent、chat、presence、health、heartbeat、cron
4.4.1 Gateway Token 认证(
src/gateway/auth.ts)4.4.2 设备配对(Device Pairing)机制(
src/gateway/device-auth.ts)4.4.3 本地连接自动批准 vs 远程连接挑战签名
4.4.4 Origin 检查防止跨站 WebSocket 劫持(
src/gateway/origin-check.ts)
第 5 章 会话管理
5.1.1 会话键(Session Key)的结构:
agent:<agentId>:<mainKey>5.1.2 会话范围(DM Scope):
main/per-peer/per-channel-peer/per-account-channel-peer5.1.3 会话持久化:JSON Store + JSONL 转录文件
5.2.1 路由绑定(
src/routing/bindings.ts)5.2.2 路由解析(
src/routing/resolve-route.ts)5.2.3 会话键生成(
src/routing/session-key.ts)5.2.4 直接消息 vs 群组消息 vs Cron 会话 vs Webhook 会话的键映射规则
5.3.1 创建与初始化:首条消息触发会话创建
5.3.2 重置策略:每日重置(Daily Reset)、空闲重置(Idle Reset)
5.3.3 按类型/通道覆盖重置策略(
resetByType/resetByChannel)5.3.4 会话修补(Session Patch):运行时修改会话属性(
src/gateway/sessions-patch.ts)
5.4.1 工具结果裁剪:在 LLM 调用前修剪旧工具结果
5.4.2 上下文窗口守卫(
src/agents/context-window-guard.ts)
5.5.1
sessions_list/sessions_history/sessions_send工具5.5.2 跨会话消息传递与回复乒乓(Reply Ping-Pong)
第 6 章 通道路由与消息分发
6.1.1 通道注册机制(
src/channels/registry.ts)6.1.2 通道能力声明(
src/config/channel-capabilities.ts)6.1.3 通道 Dock 层(
src/channels/dock.ts)
6.2.1 消息接收与规范化(
src/channels/chat-type.ts)6.2.2 发送者身份识别(
src/channels/sender-identity.ts)6.2.3 白名单匹配(
src/channels/allowlists/)6.2.4 @提及门控(Mention Gating)(
src/channels/mention-gating.ts)6.2.5 命令门控(Command Gating)(
src/channels/command-gating.ts)
6.3.1 消息分块(Chunking)算法与通道限制
6.3.2 确认反应(ACK Reactions)(
src/channels/ack-reactions.ts)6.3.3 打字指示器(Typing Indicators)(
src/channels/typing.ts)
6.4.1 多代理配置:
agents.list[]与绑定6.4.2 基于通道/账号/对等方的路由规则
6.4.3 子代理注册表(
src/agents/subagent-registry.ts)
第三部分:AI Agent 运行时
第 7 章 Pi Agent 运行时核心
衍生解释:Pi Agent 是 OpenClaw 的 AI 推理运行时,源自 Mario Zechner 开发的
pi-agent-core库。它实现了 LLM 的 RPC 调用模式,负责管理对话上下文、工具调用和响应流式传输。可以类比为一个"AI 对话引擎"。7.1.1
@mariozechner/pi-agent-core/pi-ai/pi-coding-agent依赖分析7.1.2 RPC 模式 vs 嵌入模式
7.1.3 Agent 入口文件层次:
src/agents/pi-embedded.ts→pi-embedded-runner.ts
7.2.1 循环入口:Gateway 的
agentRPC 方法7.2.2 步骤 1:参数校验与会话解析
7.2.3 步骤 2:
agentCommand— 模型解析、技能快照加载7.2.4 步骤 3:
runEmbeddedPiAgent— 队列序列化、auth profile 解析、Pi 会话构建7.2.5 步骤 4:
subscribeEmbeddedPiSession— 事件桥接(tool → assistant → lifecycle)7.2.6 步骤 5:结果汇总、用量统计、会话持久化
7.3.1 每会话车道(Session Lane)序列化
7.3.2 全局车道(Global Lane)限流
7.3.3 队列模式:collect / steer / followup
7.3.4 车道实现(
src/gateway/server-lanes.ts)
7.4.1 Agent 运行超时(默认 600 秒)
7.4.2
agent.wait等待超时(默认 30 秒)7.4.3 AbortSignal 取消链
7.4.4 聊天中止(
src/gateway/chat-abort.ts)
第 8 章 模型提供者与故障转移
8.1.1 主模型 → 回退模型 → 提供者内部 auth failover 的三级策略
8.1.2 模型选择源码(
src/agents/model-selection.ts)8.1.3 模型回退(
src/agents/model-fallback.ts)8.1.4 模型兼容性层(
src/agents/model-compat.ts)
8.2.1 Auth Profile 机制(
src/agents/auth-profiles.ts)8.2.2 OAuth 认证流程:Anthropic Claude Pro/Max、OpenAI ChatGPT/Codex
8.2.3 API Key 认证
8.2.4 Profile 轮换与冷却(Cooldown)
8.2.5 GitHub Copilot Token 认证(
src/providers/github-copilot-token.ts)
8.3.1 模型目录(
src/agents/model-catalog.ts)8.3.2 模型扫描:OpenRouter 免费模型探测(
src/agents/model-scan.ts)8.3.3 模型配置文件(
models.json)与提供者配置(src/agents/models-config.ts)8.3.4 合成模型与特殊提供者(Venice、Chutes、Z.AI 等)
8.4.1 错误分类(
src/agents/failover-error.ts)8.4.2 认证错误、计费错误、上下文溢出错误的检测与处理
8.4.3 故障转移日志与用户可见的错误消息
第 9 章 系统提示词与上下文组装
9.1.1 基础提示词模板(
src/agents/system-prompt.ts)9.1.2 提示词参数(
src/agents/system-prompt-params.ts)9.1.3 提示词报告(
src/agents/system-prompt-report.ts)
9.2.1 工作区根目录解析(
src/agents/workspace.ts)9.2.2 引导文件(Bootstrap Files):
AGENTS.md/SOUL.md/TOOLS.md(src/agents/bootstrap-files.ts)9.2.3 引导钩子(Bootstrap Hooks)(
src/agents/bootstrap-hooks.ts)9.2.4 工作区模板(
src/agents/workspace-templates.ts)
9.3.1 AI 助手身份(
src/agents/identity.ts)9.3.2 身份文件(
src/agents/identity-file.ts)9.3.3 身份头像(
src/agents/identity-avatar.ts)9.3.4 通道前缀身份
9.4.1 自动压缩触发机制
9.4.2 压缩流程(
src/agents/compaction.ts)9.4.3 压缩前的记忆刷新(Memory Flush)
9.4.4 压缩重试与缓冲重置
第 10 章 流式传输与分块回复
10.1.1 Pi Agent Core 事件流 → OpenClaw 事件桥接
10.1.2 流事件类型:
lifecycle/assistant/tool10.1.3 原始流处理(
src/agents/pi-embedded-subscribe.raw-stream.ts)
10.2.1 EmbeddedBlockChunker 算法(
src/agents/pi-embedded-block-chunker.ts)10.2.2 低水位线 / 高水位线分块策略
10.2.3 断点偏好:段落 → 换行 → 句子 → 空白 → 硬断
10.2.4 代码围栏(Fenced Block)安全拆分:关闭 + 重开
10.3.1 连续块合并策略:空闲间隙、最小/最大字符数
10.3.2 人性化延迟(Human Delay):
natural/custom模式
10.4.1
sendMessageDraft的实现10.4.2 partial 模式 vs block 模式
10.5.1
NO_REPLY静默令牌过滤10.5.2 消息工具去重
10.5.3 工具摘要内联
第四部分:多通道消息系统
第 11 章 通道适配器抽象层
衍生解释:适配器模式(Adapter Pattern)是 GoF 设计模式之一,用于将不兼容的接口转换为统一的接口。OpenClaw 的通道适配器将每个消息平台的独特 API 转换为统一的内部消息格式,使 Gateway 可以不关心底层平台的具体实现。
11.1.1 通道核心接口分析
11.1.2 通道配置类型系统(
src/config/types.channels.ts)11.1.3 通道与 Gateway 的连接桥
11.2.1 消息格式统一:文本、图片、音频、视频、文件
11.2.2 媒体附件处理(
src/gateway/chat-attachments.ts)11.2.3 消息清洗(
src/gateway/chat-sanitize.ts)
11.3.1 Markdown 格式化与通道特异性(
src/markdown/)11.3.2 回复前缀(
src/channels/reply-prefix.ts)11.3.3 会话标签(
src/channels/conversation-label.ts)
第 12 章 核心通道实现深入
12.1.1 Baileys 库简介:基于 Web WhatsApp 协议的非官方实现
12.1.2 WhatsApp Web 登录与 QR 码配对(
src/web/login-qr.ts)12.1.3 入站消息监听(
src/web/inbound.ts)12.1.4 出站消息发送(
src/web/outbound.ts)12.1.5 自动回复系统(
src/web/auto-reply.ts与auto-reply.impl.ts)12.1.6 会话重连(
src/web/reconnect.ts)12.1.7 媒体处理(
src/web/media.ts)
12.2.1 grammY 框架与 Bot API 对接
12.2.2 Telegram Bot 配置与 Webhook 模式
12.2.3 草稿流特有实现
12.2.4 自定义命令(
src/config/telegram-custom-commands.ts)
12.3.1 discord.js / Carbon 库的使用
12.3.2 Guild 管理、DM 策略
12.3.3 原生 Slash 命令与文本命令
12.3.4 每消息行数限制(
maxLinesPerMessage)
12.4.1 Slack Bolt SDK 对接
12.4.2 App Token + Bot Token 双 Token 架构
12.4.3 线程(Thread)会话管理
12.5.1 Signal(signal-cli)
12.5.2 BlueBubbles(iMessage 推荐集成)
12.5.3 iMessage Legacy(macOS 原生 imsg)
12.5.4 WebChat(Gateway 内置 Web 聊天)
第 13 章 通道扩展(Extension)机制
13.1.1 扩展与核心通道的区别
13.1.2 扩展加载机制(
src/gateway/server-plugins.ts)13.1.3 扩展目录结构分析(以
extensions/msteams/为例)
13.2.1
src/extensionAPI.ts— 扩展可访问的 API 集13.2.2 插件 SDK(
src/plugin-sdk/)13.2.3 插件钩子(Plugin Hooks)接口
13.3.1 Microsoft Teams 扩展(Bot Framework 对接)
13.3.2 Matrix 扩展(matrix-sdk-crypto-nodejs)
13.3.3 Twitch 扩展
13.3.4 Nostr 扩展
13.3.5 Google Chat 扩展
13.3.6 Zalo / Zalo Personal 扩展
13.3.7 飞书(Feishu/Lark)扩展
13.3.8 LINE 扩展
13.4.1 扩展脚手架搭建
13.4.2 实现通道适配器接口
13.4.3 注册到插件系统
13.4.4 测试与调试
第五部分:工具系统与自动化
第 14 章 工具系统架构
14.1.1 工具类型:bash、browser、canvas、cron、sessions、nodes、channel
14.1.2 工具 Schema 定义(
src/agents/pi-tools.schema.ts)14.1.3 工具定义适配器(
src/agents/pi-tool-definition-adapter.ts)
14.2.1 工具注册流程(
src/agents/pi-tools.ts)14.2.2 工具策略(Tool Policy):允许列表 / 拒绝列表(
src/agents/tool-policy.ts)14.2.3 工具前置拦截(Before Tool Call)(
src/agents/pi-tools.before-tool-call.ts)14.2.4 工具显示名映射(
src/agents/tool-display.json)
14.3.1 工具调用 ID 生成(
src/agents/tool-call-id.ts)14.3.2 工具结果守卫(
src/agents/session-tool-result-guard.ts)14.3.3 工具图像处理(
src/agents/tool-images.ts)14.3.4 工具摘要生成(
src/agents/tool-summaries.ts)
14.4.1 执行审批管理器(
src/gateway/exec-approval-manager.ts)14.4.2 用户审批工作流
第 15 章 Bash 工具与进程管理
15.1.1
src/agents/bash-tools.exec.ts— 命令执行核心15.1.2 PTY 模拟终端(
src/agents/bash-tools.exec.pty.ts)15.1.3 PTY 回退机制(
src/agents/bash-tools.exec.pty-fallback.ts)15.1.4 PATH 环境与安全 bin 列表(
src/agents/pi-tools.safe-bins.ts)
15.2.1 进程工具(
src/agents/bash-tools.process.ts)15.2.2 后台进程注册表(
src/agents/bash-process-registry.ts)15.2.3 进程 send-keys 操作
15.3.1 Shell 工具集(
src/agents/shell-utils.ts)15.3.2 工作区运行(
src/agents/workspace-run.ts)
第 16 章 浏览器控制
16.1.1 Playwright + CDP(Chrome DevTools Protocol)的混合方案
衍生解释:CDP 是 Chrome 浏览器提供的调试协议,允许外部程序通过 WebSocket 控制浏览器的行为——包括导航页面、执行 JavaScript、截取屏幕截图等。Playwright 是微软开发的浏览器自动化库,在 CDP 之上提供了更高层的 API。
16.1.2 OpenClaw 管理的 Chrome/Chromium 实例(
src/browser/chrome.ts)16.1.3 浏览器配置文件(Profiles)管理(
src/browser/profiles.ts)
16.2.1 CDP 连接管理(
src/browser/cdp.ts)16.2.2 CDP 辅助函数(
src/browser/cdp.helpers.ts)16.2.3 Target ID 管理与标签页操作(
src/browser/target-id.ts)
16.3.1 Playwright 会话管理(
src/browser/pw-session.ts)16.3.2 AI 辅助模块(
src/browser/pw-ai.ts)16.3.3 角色快照(Role Snapshot)(
src/browser/pw-role-snapshot.ts)16.3.4 Playwright 工具核心(
src/browser/pw-tools-core.ts):交互操作(
interactions.ts)截图(
screenshots-element-selector)活动追踪(
activity.ts)状态管理(
state.ts)下载处理(
downloads.ts)存储管理(
storage.ts)
16.4.1 浏览器 HTTP 服务器(
src/browser/server.ts)16.4.2 服务器上下文与标签页管理(
src/browser/server-context.ts)16.4.3 客户端动作层(
src/browser/client-actions.ts)16.4.4 浏览器扩展中继(
src/browser/extension-relay.ts)16.4.5 Bridge Server(
src/browser/bridge-server.ts)
第 17 章 Canvas 与 A2UI
17.1.1 什么是 Canvas:Agent 驱动的可视化工作区
17.1.2 A2UI(Agent-to-UI):AI Agent 直接操纵用户界面
衍生解释:A2UI 是 OpenClaw 提出的概念,指 AI Agent 可以直接向用户推送 HTML 内容并操纵一个 Web 视图。它类似于"AI 主导的前端渲染"——Agent 不仅能回复文字,还能展示交互式界面。
17.2.1 Canvas 服务器(
src/canvas-host/server.ts)17.2.2 A2UI 核心(
src/canvas-host/a2ui.ts与a2ui/)17.2.3 A2UI 打包(
scripts/bundle-a2ui.sh)
17.3.1 push / reset / eval / snapshot 操作
17.3.2 Canvas 在 macOS / iOS / Android 上的表面
第 18 章 Cron 调度与自动化
18.1.1 Cron 服务(
src/cron/service.ts)18.1.2 调度引擎(
src/cron/schedule.ts)与 Croner 库18.1.3 Cron 表达式解析(
src/cron/parse.ts)18.1.4 Cron 规范化(
src/cron/normalize.ts)
18.2.1 隔离 Agent 执行(
src/cron/isolated-agent.ts)18.2.2 投递计划(Delivery Plan)(
src/cron/delivery.ts)18.2.3 运行日志(
src/cron/run-log.ts)18.2.4 Cron 存储与迁移(
src/cron/store.ts)
18.3.1 Webhook 触发器
18.3.2 Gmail Pub/Sub 邮件钩子(
src/hooks/gmail.ts)18.3.3 钩子系统总览(
src/hooks/hooks.ts)
第 19 章 节点系统(Nodes)
19.1.1 什么是节点:设备能力的远程暴露
19.1.2 节点角色:macOS / iOS / Android / 无头
19.1.3 节点命令:
canvas.*/camera.*/screen.record/location.get/system.run/system.notify
19.2.1 节点注册表(
src/gateway/node-registry.ts)19.2.2 节点事件系统(
src/gateway/server-node-events.ts)19.2.3 节点订阅(
src/gateway/server-node-subscriptions.ts)19.2.4 节点命令策略(
src/gateway/node-command-policy.ts)
19.3.1
src/node-host/runner.ts— 节点命令执行器19.3.2
src/node-host/config.ts— 节点配置
第六部分:记忆、技能与生态系统
第 20 章 记忆系统
20.1.1 "纯 Markdown 即记忆"的设计哲学
20.1.2 记忆文件布局:
MEMORY.md(长期)+memory/YYYY-MM-DD.md(日志)20.1.3 记忆管理器(
src/memory/manager.ts)
20.2.1 嵌入向量(Embeddings)引擎
衍生解释:嵌入向量是将文本转换为高维向量的技术。语义相似的文本在向量空间中距离相近,使得可以通过计算向量相似度来实现"模糊搜索"——即使搜索词和文档用词不同,只要语义相关就能匹配。
20.2.2 多嵌入提供者支持:OpenAI / Gemini / Voyage / Local(node-llama-cpp)(
src/memory/embeddings.ts)20.2.3 SQLite 存储(
src/memory/sqlite.ts)20.2.4 sqlite-vec 向量加速(
src/memory/sqlite-vec.ts)
20.3.1 BM25 全文搜索原理
20.3.2 混合检索实现(
src/memory/hybrid.ts)20.3.3 分数融合策略:加权线性组合
20.4.1 批量嵌入(Batch Indexing)(
src/memory/batch-openai.ts/batch-gemini.ts)20.4.2 嵌入缓存机制
20.4.3 会话记忆搜索(实验性)
20.4.4 QMD 后端(BM25 + 向量 + 重排序)
20.4.5 搜索管理器(
src/memory/search-manager.ts)
第 21 章 技能系统
21.1.1 什么是技能:可热插拔的 Agent 能力模块
21.1.2 技能类型:Bundled(内置)/ Managed(托管)/ Workspace(工作区)
21.1.3 技能加载与快照(
src/agents/skills.ts)
21.2.1
SKILL.md文件规范21.2.2 内置技能目录分析(52 个技能)
21.2.3 代表性技能解读:
coding-agent、github、discord、canvas、weather等
21.3.1 技能安装流程(
src/agents/skills-install.ts)21.3.2 技能状态管理(
src/agents/skills-status.ts)21.3.3 技能 CLI 命令(
src/cli/skills-cli.ts)
21.4.1 ClawHub 的设计与功能
21.4.2 技能自动搜索与安装
第 22 章 钩子系统
22.1.1 钩子加载器(
src/hooks/loader.ts)22.1.2 钩子安装(
src/hooks/install.ts)22.1.3 内置钩子(
src/hooks/bundled/)22.1.4
agent:bootstrap钩子22.1.5 命令钩子:
/new、/reset、/stop
22.2.1 钩子映射(
src/gateway/hooks-mapping.ts)22.2.2 Agent 生命周期钩子:
before_agent_start/agent_end22.2.3 工具生命周期钩子:
before_tool_call/after_tool_call/tool_result_persist22.2.4 消息钩子:
message_received/message_sending/message_sent22.2.5 网关钩子:
gateway_start/gateway_stop
第七部分:安全、配置与基础设施
第 23 章 配置系统
23.1.1 配置文件位置:
~/.openclaw/openclaw.json(JSON5 格式)23.1.2 配置 Schema(
src/config/schema.ts)23.1.3 Zod Schema 校验(
src/config/zod-schema.ts)23.1.4 配置 IO(
src/config/io.ts)23.1.5 配置路径解析(
src/config/config-paths.ts)
23.2.1 核心类型概览(
src/config/types.ts)23.2.2 Agent 配置(
types.agents.ts/types.agent-defaults.ts)23.2.3 通道配置(
types.channels.ts/types.discord.ts/types.telegram.ts等)23.2.4 安全配置(
types.sandbox.ts/types.auth.ts)23.2.5 模型配置(
types.models.ts)23.2.6 工具/技能/钩子配置(
types.tools.ts/types.skills.ts/types.hooks.ts)
23.3.1 配置重载机制(
src/gateway/config-reload.ts)23.3.2 运行时覆盖(
src/config/runtime-overrides.ts)23.3.3 服务器重载处理器(
src/gateway/server-reload-handlers.ts)
23.4.1 迁移框架(
src/config/legacy.ts)23.4.2 迁移规则(
src/config/legacy.rules.ts)23.4.3 分阶段迁移(
legacy.migrations.part-1/2/3.ts)
23.5.1 环境变量替换(
src/config/env-substitution.ts)23.5.2 环境变量列表(
src/config/env-vars.ts)
第 24 章 安全模型
24.1.1 入站 DM 作为不受信任输入
24.1.2 默认安全 vs 显式放开
24.1.3 提示词注入防御
24.2.1 配对流程:配对码生成 → 用户审批 → 白名单持久化
24.2.2 配对 CLI(
src/cli/pairing-cli.ts)24.2.3 DM 策略:
pairing/open
24.3.1 沙箱设计:非主会话的 Docker 隔离(
src/agents/sandbox.ts)24.3.2 沙箱配置解析(
src/agents/sandbox/)24.3.3 沙箱路径管理(
src/agents/sandbox-paths.ts)24.3.4 Docker 沙箱镜像(
Dockerfile.sandbox/Dockerfile.sandbox-browser)24.3.5 工具白名单 / 黑名单
24.4.1 审计系统(
src/security/audit.ts)24.4.2 文件系统审计(
src/security/audit-fs.ts)24.4.3 技能安全扫描(
src/security/skill-scanner.ts)24.4.4 外部内容安全(
src/security/external-content.ts)24.4.5
openclaw security audit命令
24.5.1 恶意 SOUL 检测(
src/hooks/soul-evil.ts)
第 25 章 CLI 命令行工具
25.1.1 Commander.js 命令框架(
src/cli/program.ts)25.1.2 命令分发(
src/cli/run-main.ts)25.1.3 命令格式化(
src/cli/command-format.ts)
25.2.1
gateway— 启动/管理 Gateway 服务器25.2.2
agent— 发送消息给 AI Agent25.2.3
send— 通过通道发送消息25.2.4
channels— 通道管理(登录/配置)25.2.5
models— 模型管理(列表/设置/扫描)25.2.6
sessions— 会话管理25.2.7
skills— 技能管理25.2.8
browser— 浏览器控制25.2.9
cron— 定时任务管理25.2.10
nodes— 节点管理25.2.11
doctor— 健康检查与诊断25.2.12
security— 安全审计25.2.13
onboard— 引导向导25.2.14
update— 版本更新
25.3.1 命令处理(
src/commands/)25.3.2
/status//new//reset//compact//think//verbose//model
第 26 章 基础设施
26.1.1 日志框架:tslog(
src/logger.ts)26.1.2 日志分级与输出(
src/logging.ts/src/logging/)26.1.3 WebSocket 日志(
src/gateway/ws-log.ts)
26.2.1 媒体获取(
src/media/fetch.ts)26.2.2 媒体解析(
src/media/parse.ts)26.2.3 媒体存储(
src/media/store.ts)26.2.4 图像处理:Sharp 库(
src/media/image-ops.ts)26.2.5 音频处理(
src/media/audio.ts)26.2.6 MIME 类型检测(
src/media/mime.ts)
26.3.1 链接理解(
src/link-understanding/)26.3.2 媒体理解(
src/media-understanding/)
26.4.1 TTS 引擎(
src/tts/)26.4.2 ElevenLabs / Edge TTS 集成
26.5.1 投票(Polls)实现(
src/polls.ts)
第八部分:客户端应用与 Web UI
第 27 章 Web 控制台 UI
27.1.1 Lit Web Components 框架
衍生解释:Lit 是 Google 开发的轻量级 Web Components 库。Web Components 是浏览器原生支持的组件化标准,包括 Custom Elements、Shadow DOM 和 HTML Templates。Lit 在此基础上提供了声明式模板和响应式属性。
27.1.2 Vite 构建工具
27.1.3 Legacy Decorators 约束
27.2.1 Gateway 内嵌 UI 服务(
src/gateway/control-ui.ts)27.2.2 UI 源码结构(
ui/src/)27.2.3 Gateway WebSocket 客户端
27.3.1 WebChat 作为 Gateway WS 客户端
27.3.2 聊天历史加载与消息发送
第 28 章 原生客户端应用
28.1.1 Swift + SwiftUI 架构
28.1.2 菜单栏控制(Menu Bar)
28.1.3 Voice Wake + Push-to-Talk
28.1.4 Talk Mode 覆盖层
28.1.5 远程 Gateway 控制
28.1.6 macOS 权限与 TCC
28.2.1 Bonjour 配对
28.2.2 Canvas 表面
28.2.3 Voice Wake / Talk Mode
28.2.4 摄像头与屏幕录制
28.3.1 Kotlin 架构
28.3.2 Canvas / 摄像头 / 屏幕录制
28.3.3 可选 SMS 支持
28.4.1
apps/shared/OpenClawKit/— 跨平台共享代码
第九部分:部署与运维
第 29 章 部署方案
29.1.1 npm 全局安装
29.1.2 守护进程管理(launchd / systemd)
29.1.3
openclaw doctor健康检查
29.2.1 Dockerfile 分析:多阶段构建、非 root 用户
29.2.2
docker-compose.yml解析29.2.3 Docker 沙箱(
Dockerfile.sandbox)29.2.4 环境变量配置
29.3.1 Tailscale Serve / Funnel 配置(
src/gateway/server-tailscale.ts)29.3.2 SSH 隧道
29.3.3 服务发现(
src/gateway/server-discovery.ts)29.3.4 Bonjour/mDNS(
@homebridge/ciao)
第 30 章 监控与故障排查
30.1.1 Gateway 健康端点
30.1.2 Gateway 探针(
src/gateway/probe.ts)30.1.3 心跳机制
30.2.1 在线状态管理
30.2.2 打字指示器
30.3.1 Token 用量统计(
src/agents/usage.ts)30.3.2 用量展示选项:off / tokens / full
30.4.1
openclaw doctor诊断流程30.4.2 常见问题:通道断连、模型错误、沙箱故障
30.4.3 日志分析指南
第十部分:高级主题与实践
第 31 章 多代理架构
31.1.1 Agent 范围(
src/agents/agent-scope.ts)31.1.2 Agent 路径(
src/agents/agent-paths.ts)31.1.3 Agent 默认配置(
src/agents/defaults.ts)
31.2.1 子代理注册表(
src/agents/subagent-registry.ts)31.2.2 子代理生成(
sessions_spawn工具)31.2.3 子代理公告(
src/agents/subagent-announce.ts)31.2.4 子代理公告队列(
src/agents/subagent-announce-queue.ts)
31.3.1 跨代理工具隔离
31.3.2 沙箱代理配置
第 32 章 ACP(Agent Communication Protocol)
衍生解释:ACP 是一种 Agent 间通信协议标准,允许不同 AI Agent 之间进行结构化通信。它定义了 Agent 的发现、认证和消息交换格式。
32.1.1
@agentclientprotocol/sdk依赖32.1.2
src/acp/— OpenClaw 的 ACP 实现
第 33 章 TUI(终端用户界面)
33.1.1
@mariozechner/pi-tui集成33.1.2
src/tui/— TUI 适配层33.1.3 终端渲染(
src/terminal/)
第 34 章 实战项目:构建你自己的 AI 助手
34.1.1 需求分析:多通道 AI 助手的最小可行产品
34.1.2 架构设计参考
34.1.3 技术选型建议
34.2.1 搭建 WebSocket Gateway 骨架
34.2.2 实现消息路由与会话管理
34.2.3 对接 LLM API(OpenAI / Anthropic)
34.2.4 实现基础工具系统(bash 执行)
34.3.1 实现 Telegram Bot 通道适配器
34.3.2 实现 Discord Bot 通道适配器
34.3.3 实现 WebChat 通道
34.4.1 添加记忆系统(向量搜索)
34.4.2 添加技能系统
34.4.3 添加 Cron 调度
34.5.1 Docker 容器化
34.5.2 守护进程配置
34.5.3 安全加固
附录
完整配置 JSON5 示例
所有配置键速查表
所有请求方法与参数
所有事件类型与负载
所有内置工具的 Schema 与用途
关键模块依赖关系图
数据流序列图(message → gateway → agent → tool → response → channel)
本书出现的全部专业术语中英文对照与解释
关于估算
第一部分:全局概览
2 章
~8,000 字
第二部分:Gateway 控制平面
4 章
~16,000 字
第三部分:AI Agent 运行时
4 章
~16,000 字
第四部分:多通道消息系统
3 章
~12,000 字
第五部分:工具系统与自动化
6 章
~18,000 字
第六部分:记忆、技能与生态
3 章
~10,000 字
第七部分:安全、配置与基础设施
4 章
~12,000 字
第八部分:客户端应用与 Web UI
2 章
~6,000 字
第九部分:部署与运维
2 章
~6,000 字
第十部分:高级主题与实践
4 章
~12,000 字
附录
5 项
~4,000 字
合计
34 章 + 5 附录
~120,000 字
Last updated