From e5e44fd7e26fce13da195b2cf6b709c772d0647e Mon Sep 17 00:00:00 2001 From: ekko <152005280+EKKOLearnAI@users.noreply.github.com> Date: Thu, 14 May 2026 23:11:22 +0800 Subject: [PATCH] feat: auto-switch to default profile before gateway startup (#734) When starting gateways, automatically switch to 'default' profile if current profile is not 'default'. This ensures consistent gateway startup behavior and prevents port conflicts from different profile configurations. Changes: - Check current profile before starting gateways - Execute 'hermes profile use default' if needed - Wait 2 seconds for profile switch to take effect - Update internal GatewayManager state - Add detailed logging for the switching process --- .../src/services/hermes/gateway-manager.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/server/src/services/hermes/gateway-manager.ts b/packages/server/src/services/hermes/gateway-manager.ts index 18005fd..49f6bfa 100644 --- a/packages/server/src/services/hermes/gateway-manager.ts +++ b/packages/server/src/services/hermes/gateway-manager.ts @@ -839,6 +839,25 @@ export class GatewayManager { * Phase 2 — 并行启动网关进程 */ async startAll(): Promise { + // 确保使用 default profile 启动网关 + const currentProfile = this.getActiveProfile() + if (currentProfile !== 'default') { + logger.info('Current profile is "%s", switching to "default" for gateway startup', currentProfile) + try { + await execFileAsync(HERMES_BIN, ['profile', 'use', 'default'], { + timeout: 10000, + windowsHide: true, + }) + this.setActiveProfile('default') + logger.info('Waiting for profile switch to take effect...') + // 等待一下让 profile 切换完全生效,确保配置文件更新完成 + await new Promise(resolve => setTimeout(resolve, 2000)) + logger.info('Successfully switched to default profile') + } catch (err) { + logger.error(err, 'Failed to switch to default profile, continuing with current profile') + } + } + // 清空已分配端口集合,确保每次启动都从干净状态开始 this.allocatedPorts.clear()