文件解析: 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,并启动gateway;

L34 (await loadServerImpl()).startGatewayServer(...args)这里有个小细节:loadServerImpl()本身不做server.impl里的事情,它只负责 import + 打 trace。

L35 真正启动 Gateway 的是返回对象里的.startGatewayServer()。

L39-42,服务启动完了之后,暴露接口给测试框架,接口名是:resetModelCatalogCacheForTest。

L40 注意这里也是先await loadServerImpl()——意味着哪怕只是测试里重置模型目录,也会触发一次 server.impl 的懒加载。但这在测试场景下不是问题,因为测试本来就要启动 Gateway。

L41 纯测试工具接口。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐