Technical Guide

04. 项目结构:从目录看懂 OpenClaw

从源码目录理解 OpenClaw 的 CLI、Gateway、Agent Runtime、Channels、Config、Cron、Plugins 和 MCP。

这篇解决什么问题

OpenClaw 仓库很大。

如果直接从 src/ 开始扫,会看到大量测试、adapter、provider、channel、runtime 文件,很容易迷路。

先按职责分层。

根目录先看什么

关键文件:

README.md
package.json
openclaw.mjs
docs/
src/
extensions/
packages/
skills/

package.json 里定义了 npm 包名和 bin:

"bin": {
  "openclaw": "openclaw.mjs"
}

所以 openclaw 命令第一站是 openclaw.mjs

CLI 和启动层

相关目录:

openclaw.mjs
src/entry.ts
src/cli/
src/commands/
src/bootstrap/

openclaw.mjs 是 Node launcher,负责 Node 版本检查、源码/打包模式判断、compile cache、子进程启动等。

Agent Runtime

相关目录:

src/agents/
src/agents/embedded-agent-runner/
src/agents/sessions/
src/agents/agent-tools*.ts
src/agents/agent-hooks/
src/agents/runtime/
packages/agent-core/
src/llm/

官方架构文档说:runtime code 在 src/agents/,model/provider helpers 在 src/llm/

这是源码解读主菜。

Gateway 和 Channels

相关目录:

src/gateway/
src/channels/
src/pairing/
src/auto-reply/
extensions/<channel>/

Gateway 是常驻控制平面。Channels 负责不同平台的消息收发、授权、allowlist、pairing、消息格式转换。

配置层

相关目录:

src/config/

这个目录很大,因为它要处理配置 schema、legacy 兼容、channel 类型、provider 类型、sandbox、tools、skills、logging、sensitive path 等。

自动化和长期运行

src/cron/
src/daemon/
src/process/
src/logging/

Cron 是定时任务,Daemon 是常驻服务,Process 和 Logging 支持长期运行时的生命周期和可观测性。

扩展系统

src/plugins/
src/plugin-sdk/
extensions/
src/mcp/

OpenClaw 把很多 provider、channel、工具能力放到 extensions / plugin 体系里。不要把所有能力都理解成内置核心。

一张源码地图

openclaw.mjs        CLI launcher
src/cli             命令解析和 CLI 子命令
src/commands        各类命令实现
src/gateway         常驻 Gateway 服务
src/channels        多平台消息抽象
src/agents          Agent Runtime 和 sessions/tools
src/llm             模型 provider 和流式传输
src/config          配置 schema、加载、迁移、安全校验
src/cron            定时任务
src/plugins         插件运行时
src/plugin-sdk      插件对外契约
src/mcp             MCP 接入
extensions          官方扩展包

下一篇看什么

下一篇看 CLI 入口。