openclaw源码解读(2) —— 消息进来后怎么变成 Agent 调用

📅 2026/7/24 20:45:56
openclaw源码解读(2) —— 消息进来后怎么变成 Agent 调用
文件解析gateway/server.ts文件职责懒加载 启动打点 纯代理L10-17 如果process.env也就是环境变量中有OPENCLAW_GATEWAY_STARTUP_TRACE 这个环境变量的设置才会开启启动线程执行的log日志跟踪L19-28 异步执行懒加载server.impl.js类真正加载server.impl.js之后开启日志跟踪值得强调的是「懒加载」这个设计意图——server.impl.ts 330KB如果直接import会在模块解析阶段全量加载。通过async function里await import()只有真正要启动 Gateway 时才加载减少冷启动时的 I/O 压力。另外finally里打 trace 确保了无论 import 成功还是失败都记录耗时调试时可以区分究竟是卡在哪个阶段。L31-36 真正加载server.impl.js并启动gatewayL34 (await loadServerImpl()).startGatewayServer(...args)这里有个小细节loadServerImpl()本身不做server.impl里的事情它只负责 import 打 trace。L35 真正启动 Gateway 的是返回对象里的.startGatewayServer()。L39-42服务启动完了之后暴露接口给测试框架接口名是resetModelCatalogCacheForTest。L40 注意这里也是先await loadServerImpl()——意味着哪怕只是测试里重置模型目录也会触发一次 server.impl 的懒加载。但这在测试场景下不是问题因为测试本来就要启动 Gateway。L41 纯测试工具接口。