“近期将连续发布《从OpenClaw源码分析小龙虾是如何工作的?》,本系列一共十篇文章。 主题为:概览与调试环境搭建->Gateway中央控制器->Session管理分析->提示词上下文分析->ReAct 原理与 pi-mono 源码分析->定时任务与心跳机制->记忆系统分析->Skill 体系分析->Channel 系统分析->自我进化机制。
第2篇:Gateway中央控制器
一、Gateway 的核心功能
Gateway 是 OpenClaw 的中央控制器,类似于一个智能路由器,负责协调所有组件之间的交互。它的核心职责包括:
HTTP/WebSocket 服务:提供统一的 API 入口 RPC 方法路由:将 WebSocket 消息分发到对应的处理器 认证授权:验证客户端身份 生命周期管理:管理 Channel、Session、Cron 等组件的生命周期 事件总线:协调各组件之间的通信

二、Gateway 启动流程完整追踪
我们从一个启动命令开始,一步步追踪 Gateway 的启动过程:
node --enable-source-maps scripts/run-node.mjs --dev gateway --allow_unconfigured --token 123456启动流程图
run-node.mjs (编译 + 启动) ↓ openclaw.mjs (主入口) ↓ 加载 entry.js (src/entry.ts → dist/entry.js) ↓ 加载 cli/run-main.js (执行 runCli()) ↓ CLI 解析命令: "gateway" + "--dev" ↓ runGatewayCommand() (run.ts) ↓ runGatewayLoop() → startGatewayServer() ↓ 🎉 Gateway 服务启动完成各阶段详解
阶段1:run-node.mjs
这个脚本负责:
将 src目录编译到dist目录启动实际的入口文件
阶段2:openclaw.mjs
主入口文件,核心代码逻辑:
// 简化后的逻辑import { entry } from"./dist/entry.js";entry().catch(console.error);阶段3:entry.ts
// src/entry.ts 简化import { runCli } from"./cli/run-main.js";asyncfunctionmain() {await runCli();}main();阶段4:CLI 命令解析
使用 commander 库解析命令行参数:
// 简化示意program .command('gateway') .option('--port <port>') .option('--allow_unconfigured') .option('--token <token>') .action(async (options) => {await runGatewayCommand(options); });三、启动主要函数











四、配置文件&命令
openclaw gateway --port 18789openclaw gateway statusopenclaw gateway healthopenclaw gateway --forceopenclaw gateway ...
五、整体代码情况

server.impl.ts:启动入口,编排整个 Gateway 的初始化顺序。server-runtime-state.ts :运行时状态工厂,创建HTTP服务器、WebSocket 服务器、广播器等基础设施。server-http.ts:HTTP 请求路由,统一处理HTTP调用。ver-ws-runtime.ts:将WebSocket连接的消息路由到对应的 RPC 方法处理器,管理连接生命周期。server-methods.ts:RPC 方法注册中心。将方法名映射到处理函数,WebSocket 消息通过它派发。server-methods/:各方法的具体实现目录。server-chat.ts:管理聊天运行状态。server-channels.ts:Channel 生命周期管理。server-cron.ts:定时任务引擎,管理定时任务的命周期。session-utils.ts:会话存储与查询。protocol/:协议定义与验证。auth.ts:认证授权。解析 token/password 认证。hooks.ts:提供钩子机制,允许在特定事件触发回调。openai-http.ts:OpenAI API 兼容层。openresponses-http.ts :OpenAI Responses API 兼容层。tools-invoke-http.ts:工具调用 HTTP API。六、核心模块
server-http.ts
“核心代码:src/gateway/server-http.ts
主要职责:创建HTTP 服务处理两类请求:
REST API 请求通过 handleRequest()处理 WebSocket 升级通过attachGatewayUpgradeHandler()处理





server-methods.ts
“核心代码:src/gateway/server-methods.ts
主要职责:配置分发WebSocket 服务处理handler,根据接收到的方法转到对应的hanadler进行处理。


src/gateway/client.ts
“核心代码:src/gateway/client.ts
主要职责:Gateway 客户端 SDK,用于连接 Gateway 服务器并发送 RPC 请求。核心类是GatewayClient,通过它可以很方便RPC。


src/cli/gateway-cli/目录
“核心代码:src/cli/gateway-cli/目录
主要职责:Gateway CLI命令窗口,提供openclaw gateway命令,用于本地启动并管理Gateway服务。
实现:通过nodejs内置commander库实现命令窗口,然后通过GatewayClient实现RPC调用,底层也是websocket通信。


下一篇文章,我们将深入分析 Session 管理。
夜雨聆风