症状
配置了多个 MultiRouter(如公司 + 个人各一个),且它们共享同一个 target provider 时,切换/保存其中一个 router 的路由规则或子 Agent 配置,会静默改写另一个 router 的模型投影——另一个 router 的模型列表/顺序在 Codex 端被错误覆盖。
根因
persist_provider_mutation 在保存任一 router 时无条件发布该 router 的投影产物到共享 target 的 catalog。target 同一时刻只能承载一份投影,多个 router 轮番发布 → 互相覆盖,最后保存的 router 生效,其余 router 的配置"消失"(不是被删,是被投影覆盖)。
修复
mutation.rs::persist_provider_mutation:仅当该 router 是**当前 active(is_current)**时才发布投影到共享 target;非 active router 的保存只更新自身 settings_config,不发布投影,避免互相覆盖。
测试
cargo check:零警告
- 场景验证:双 MultiRouter 共享 target,保存非 active router 后 active router 的 Codex 模型菜单不变
症状
配置了多个 MultiRouter(如公司 + 个人各一个),且它们共享同一个 target provider 时,切换/保存其中一个 router 的路由规则或子 Agent 配置,会静默改写另一个 router 的模型投影——另一个 router 的模型列表/顺序在 Codex 端被错误覆盖。
根因
persist_provider_mutation在保存任一 router 时无条件发布该 router 的投影产物到共享 target 的 catalog。target 同一时刻只能承载一份投影,多个 router 轮番发布 → 互相覆盖,最后保存的 router 生效,其余 router 的配置"消失"(不是被删,是被投影覆盖)。修复
mutation.rs::persist_provider_mutation:仅当该 router 是**当前 active(is_current)**时才发布投影到共享 target;非 active router 的保存只更新自身 settings_config,不发布投影,避免互相覆盖。测试
cargo check:零警告