























@@ -182,7 +182,7 @@ describe("resolveAgentConfig", () => {
182182expect(resolveAgentEffectiveModelPrimary(cfg, "linus")).toBe("anthropic/claude-sonnet-4-6");
183183expect(resolveAgentModelFallbacksOverride(cfg, "linus")).toEqual(["openai/gpt-5.4"]);
184184185-// If fallbacks isn't present, we don't override the global fallbacks.
185+// If an agent owns a primary, missing fallbacks means no model fallback.
186186const cfgNoOverride: OpenClawConfig = {
187187agents: {
188188list: [
@@ -195,7 +195,55 @@ describe("resolveAgentConfig", () => {
195195],
196196},
197197};
198-expect(resolveAgentModelFallbacksOverride(cfgNoOverride, "linus")).toBe(undefined);
198+expect(resolveAgentModelFallbacksOverride(cfgNoOverride, "linus")).toEqual([]);
199+expect(
200+resolveEffectiveModelFallbacks({
201+cfg: cfgNoOverride,
202+agentId: "linus",
203+hasSessionModelOverride: false,
204+}),
205+).toEqual([]);
206+207+const cfgStringModel: OpenClawConfig = {
208+agents: {
209+list: [
210+{
211+id: "linus",
212+model: "anthropic/claude-sonnet-4-6",
213+},
214+],
215+},
216+};
217+expect(resolveAgentModelFallbacksOverride(cfgStringModel, "linus")).toEqual([]);
218+219+const cfgStrictAgentWithDefaultFallbacks: OpenClawConfig = {
220+agents: {
221+defaults: {
222+model: {
223+fallbacks: ["custom-opencode-go-extras/deepseek-v4-flash"],
224+},
225+},
226+list: [
227+{
228+id: "linus",
229+model: {
230+primary: "opencode-go/minimax-m2.7",
231+},
232+},
233+],
234+},
235+};
236+expect(resolveAgentModelFallbacksOverride(cfgStrictAgentWithDefaultFallbacks, "linus")).toEqual(
237+[],
238+);
239+expect(
240+resolveEffectiveModelFallbacks({
241+cfg: cfgStrictAgentWithDefaultFallbacks,
242+agentId: "linus",
243+hasSessionModelOverride: true,
244+modelOverrideSource: "auto",
245+}),
246+).toEqual([]);
199247200248// Explicit empty list disables global fallbacks for that agent.
201249const cfgDisable: OpenClawConfig = {
@@ -251,26 +299,19 @@ describe("resolveAgentConfig", () => {
251299}),
252300).toEqual([]);
253301254-const cfgInheritDefaults: OpenClawConfig = {
302+const cfgInheritDefaultsWithoutAgentModel: OpenClawConfig = {
255303agents: {
256304defaults: {
257305model: {
258306fallbacks: ["openai/gpt-5.4"],
259307},
260308},
261-list: [
262-{
263-id: "linus",
264-model: {
265-primary: "anthropic/claude-sonnet-4-6",
266-},
267-},
268-],
309+list: [{ id: "linus" }],
269310},
270311};
271312expect(
272313resolveEffectiveModelFallbacks({
273-cfg: cfgInheritDefaults,
314+cfg: cfgInheritDefaultsWithoutAgentModel,
274315agentId: "linus",
275316hasSessionModelOverride: true,
276317modelOverrideSource: "auto",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。