项目定位与设计哲学
Local-first
本地优先,数据不离开设备;记忆为本地 Markdown,Ollama/vLLM 本地模型时内容永不外传。
网关而非框架
不是 SDK/库,而是独立运行的控制平面进程,统一编排 AI 与外部世界。
模型无关
一行配置切换 Claude/GPT/Gemini/DeepSeek,按任务路由不同模型。
插件化内核
Skills、Channels、Providers 均可热插拔(v2026.3.22+ 全面插件化)。
工程化 Agent
从聊天机器人升级为任务调度执行系统,危险路径暴露为操作者可控开关。
透明可审计
记忆可读、配置 JSON、WS 用 JSON 帧、审批显式展示命令,无黑箱。
整体架构:Gateway-Centric
单一长驻 Node.js 进程,在 LLM(Brain)、本地执行(Hands)、记忆(Memory)、通道(Channels)之间编排通信。无微服务、无容器依赖、无跨进程复杂通信,靠事件循环天然处理并发,部署只需"一个二进制 + 一个配置文件"。
核心模块逐一详解
系统中心,必须常驻。默认监听 127.0.0.1:18789,暴露 WebSocket(主控制协议)与 HTTP(同端口)两个接口。
- WebSocket 四层:连接层(握手/Challenge-Response/10s 超时)→ 协议层(AJV 帧校验)→ 方法层(authorizeGatewayMethod 鉴权)→ 事件层(流式广播/慢消费者丢弃)
- 三道总闸:连接总闸(握手必须成功)/ 权限总闸(role+scope 不符拒绝)/ 带宽总闸(MAX_PAYLOAD_BYTES 防拖垮)
- 配置热重载 startGatewayConfigReloader:可热更新直接 applyHotReload,否则请求进程重启
LLM 负责理解、推理、决策;从不直接触碰文件系统/网络,仅通过结构化 tool-call 协议请求动作。
- Prompt 装配:SOUL.md + AGENTS/TOOLS.md + Memory(混合检索) + 激活 Skills + 会话历史 + 通道消息(带 EXTERNAL_UNTRUSTED_CONTENT 边界)
- 模型路由:心跳用 Haiku、对话用 Sonnet、复杂推理用 Opus、隐私敏感用本地模型
- Provider 回退 runWithModelFallback();子 Agent Bootstrap 作用域(v2026.5.22+)只加载 AGENTS+TOOLS 降本
- 支持 Anthropic / OpenAI / Gemini / xAI / OpenRouter / DeepSeek / Ollama / Bedrock / Qwen / Moonshot 等
执行 Brain 的决策。四类能力:Shell / Filesystem / Browser(Playwright) / HTTP。
- Tool-Call 协议:tool_call → tool_result 结构化 JSON,可链式多工具调用并逐结果决策
- Exec Approval Manager:执行前生成审批请求(规范化 argv/cwd/rawCommand),策略 always / on-miss / off
- 工具权限 Profile(minimal/coding/messaging/full)+ 工具组 deny list;blocked_commands 拦截危险命令
- Docker 沙箱隔离(scope: agent/session/shared;mode: off/non-main/all;workspace: none/ro/rw)
本地 Markdown 文件(~/.openclaw/memory/),重启/更新后依然存活,随时间积累成知识库。
- 混合检索 70/30:向量检索 70%(sqlite-vec 本地 embedding,无外部 API)+ BM25 30%(SQLite FTS5)
- 上下文预算 max_context_tokens(默认 2000)是最有效降本杠杆
- Dreaming 模式(v2026.5+):Light→REM→Deep 三阶段后台整合,6 信号打分晋升/归档,结果写入 DREAMS.md
- 可插拔后端:内置 / memory-core / PostClaw / Redis / Qdrant / ChromaDB 等 12+
- Channels:消息入口/出口,插件化注册;26+ 平台;账号是一级实体,故障隔离
- Router:8 级匹配优先级(peer→parent→guild+roles→guild→team→account→channel→default);Session Key 设计实现会话串联与并发隔离
- Heartbeat:每个 Agent 周期性自治任务循环(结合 Dreaming),HEARTBEAT.md 定义任务
- Node Registry:追踪已连接执行会话与命令队列
5 子层流水线:dispatch → dispatch-from-config → get-reply → get-reply-run → pi-embedded-runner。
- Lane 并发:每 Session 独占 Session Lane,共享 Global Lane;concurrency + maxPending 控制
- QueueMode:interrupt / steer / steer-backlog / followup / collect(防抖批处理) / queue
- 上下文守护:硬红线 16,000 tokens(拒绝)/ 软警告 32,000 tokens(压缩);预检+卫生+修复+重试+快照兜底
- 模型回退 model-fallback.ts 多候选轮换
- Skills:YAML+Markdown 定义(ClawHub 13K+ 技能、162 Agent 模板),教 Agent 何时/如何用工具
- Plugin 系统:Core 对扩展不可知,扩展仅经 plugin-sdk/manifest/api.ts 跨越边界;v2026.3.22+ 社区可扩展每一层
- 持久化层:Config(TOML/JSON+热重载) / Sessions(按 key 分区) / Media(TTL) / Security(审计) / Cron / Daemon(常驻)
请求生命周期
六大设计原则
Single Process
单一 gateway 管理一切,垂直扩展为主,部署极简。
Local-First
数据全落盘,除 LLM API 外无云依赖。
Model-Agnostic
换 Provider 只改一行,任务级模型路由。
Extensible
Skills 是 Markdown,Channels 是插件,按需从 ClawHub 安装。
Transparent
记忆可读、配置 JSON、审批显式展示命令。
Security-Conscious
localhost 绑定 + 设备配对 + 边界标记 + 执行审批。