From e3b57c56a46cd3e0aa2a1d9c3d22a7f17cf9e11d Mon Sep 17 00:00:00 2001 From: Gucc1 <1006490933@qq.com> Date: Fri, 10 Jul 2026 16:50:34 +0800 Subject: [PATCH] fix(router): remove deprecated autoOrchestrate.mainAgentModel and subagentModel fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These were residual config fields that the router designer confirmed are not intended for user configuration. When autoOrchestrate activates, the tier-resolved model is used for the main agent, and subagent requests are re-classified by the tokenSaver judge — no separate model overrides are needed. The parser now emits a deprecation warning (instead of a fatal) when it encounters these fields in existing user configs, so legacy configs still load without errors. Closes #248 Co-authored-by: Cursor --- src/router/RouterRuntime.ts | 10 ---------- src/router/config/parseRouterConfig.ts | 24 ++++++++++-------------- src/router/config/schema.ts | 3 --- src/router/protocol/decision.ts | 1 - ui/src/hooks/useRouterSettings.ts | 1 - 5 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/router/RouterRuntime.ts b/src/router/RouterRuntime.ts index d6003a772..f8053a93d 100644 --- a/src/router/RouterRuntime.ts +++ b/src/router/RouterRuntime.ts @@ -504,19 +504,9 @@ export function createRouterRuntime( if (orchestrated.applied) { mutations = { ...mutations, ...orchestrated.mutations }; decision.orchestrating = true; - if (config.autoOrchestrate.mainAgentModel) { - decision.provider = config.autoOrchestrate.mainAgentModel.provider; - decision.model = config.autoOrchestrate.mainAgentModel.model; - } } } - if (!input.isMainAgent && config.autoOrchestrate?.subagentModel) { - decision.provider = config.autoOrchestrate.subagentModel.provider; - decision.model = config.autoOrchestrate.subagentModel.model; - mutations = { ...mutations, subagentModelOverride: true }; - } - if (scenarioOutcome.subagentModelHint || decision.isSubagent) { mutations = { ...mutations, subagentTagStripped: true }; } diff --git a/src/router/config/parseRouterConfig.ts b/src/router/config/parseRouterConfig.ts index d4277a77c..c3b77d2c6 100644 --- a/src/router/config/parseRouterConfig.ts +++ b/src/router/config/parseRouterConfig.ts @@ -447,18 +447,16 @@ function parseAutoOrchestrate( return undefined; } const enabled = typeof raw.enabled === "boolean" ? raw.enabled : true; - const mainAgentModel = optionalRef( - raw.mainAgentModel, - "router.autoOrchestrate.mainAgentModel", - modelConfig, - diagnostics, - ); - const subagentModel = optionalRef( - raw.subagentModel, - "router.autoOrchestrate.subagentModel", - modelConfig, - diagnostics, - ); + for (const deprecated of ["mainAgentModel", "subagentModel"] as const) { + if (raw[deprecated] !== undefined) { + diagnostics.push({ + code: "ROUTER_AUTO_ORCHESTRATE_DEPRECATED_FIELD", + severity: "warning", + path: `router.autoOrchestrate.${deprecated}`, + message: `router.autoOrchestrate.${deprecated} is deprecated and ignored.`, + }); + } + } let triggerTiers: string[] = [...DEFAULT_TRIGGER_TIERS]; if (raw.triggerTiers !== undefined) { if (Array.isArray(raw.triggerTiers) && raw.triggerTiers.every((entry) => typeof entry === "string")) { @@ -550,8 +548,6 @@ function parseAutoOrchestrate( return { enabled, - mainAgentModel, - subagentModel, triggerTiers, allowedTools, blockedTools, diff --git a/src/router/config/schema.ts b/src/router/config/schema.ts index 019c5a6bd..f46b55041 100644 --- a/src/router/config/schema.ts +++ b/src/router/config/schema.ts @@ -41,9 +41,6 @@ export type RouterTokenSaverConfig = { export type RouterAutoOrchestrateConfig = { enabled: boolean; - mainAgentModel?: RouterModelRef; - /** Force subagents spawned during orchestration to use this model instead of the tier-resolved one. */ - subagentModel?: RouterModelRef; skillExtensionId?: string; /** Inline orchestration prompt injected when skillExtensionId is absent. */ orchestrationPrompt?: string; diff --git a/src/router/protocol/decision.ts b/src/router/protocol/decision.ts index 0a20976a5..d4e7feecb 100644 --- a/src/router/protocol/decision.ts +++ b/src/router/protocol/decision.ts @@ -17,7 +17,6 @@ export type RouterMutationsLog = { orchestrationActivated?: { tier: string; continued: boolean }; asyncAgentLaunchedRewritten?: boolean; subagentTagStripped?: boolean; - subagentModelOverride?: boolean; mediaCapabilityRerouted?: { required: import("../../model/protocol/multimodal.js").InputModality[]; from: string; diff --git a/ui/src/hooks/useRouterSettings.ts b/ui/src/hooks/useRouterSettings.ts index 03c9ade05..7266f0b5d 100644 --- a/ui/src/hooks/useRouterSettings.ts +++ b/ui/src/hooks/useRouterSettings.ts @@ -45,7 +45,6 @@ export type CCRConfig = { autoOrchestrate?: { enabled: boolean; triggerTiers: string[]; - mainAgentModel: string; skillPath?: string; slimSystemPrompt?: boolean; };