

























@@ -1,18 +1,16 @@
11import type { ModelCatalogEntry } from "../../agents/model-catalog.types.js";
2-import { modelKey, normalizeProviderId } from "../../agents/model-selection-normalize.js";
3-import {
4-buildAllowedModelSetWithFallbacks,
5-resolveModelRefFromString,
6-type ModelAliasIndex,
7-} from "../../agents/model-selection-shared.js";
2+import { normalizeProviderId } from "../../agents/provider-id.js";
83import { resolveAgentModelFallbackValues } from "../../config/model-input.js";
94import type { SessionEntry } from "../../config/sessions.js";
105import type { OpenClawConfig } from "../../config/types.openclaw.js";
116import { applyModelOverrideToSessionEntry } from "../../sessions/model-overrides.js";
127import { normalizeOptionalString } from "../../shared/string-coerce.js";
138import type { MsgContext, TemplateContext } from "../templating.js";
149import {
10+modelKey,
1511resolveModelDirectiveSelection,
12+resolveModelRefFromDirectiveString,
13+type ModelAliasIndex,
1614type ModelDirectiveSelection,
1715} from "./model-selection-directive.js";
1816@@ -50,14 +48,39 @@ async function resolveResetFallbackModels(params: {
5048return resolveAgentModelFallbackValues(params.cfg.agents?.defaults?.model);
5149}
525051+async function buildResetAllowedModelKeys(params: {
52+cfg: OpenClawConfig;
53+catalog: ModelCatalogEntry[];
54+defaultProvider: string;
55+defaultModel?: string;
56+fallbackModels: readonly string[];
57+}): Promise<Set<string>> {
58+const rawAllowlist = Object.keys(params.cfg.agents?.defaults?.models ?? {});
59+if (rawAllowlist.length > 0 || params.cfg.models?.providers) {
60+const { buildAllowedModelSetWithFallbacks } =
61+await import("../../agents/model-selection-shared.js");
62+return buildAllowedModelSetWithFallbacks(params).allowedKeys;
63+}
64+65+const allowedKeys = new Set<string>();
66+for (const entry of params.catalog) {
67+allowedKeys.add(modelKey(entry.provider, entry.id));
68+}
69+const defaultModel = params.defaultModel?.trim();
70+if (defaultModel) {
71+allowedKeys.add(modelKey(normalizeProviderId(params.defaultProvider), defaultModel));
72+}
73+return allowedKeys;
74+}
75+5376function buildSelectionFromExplicit(params: {
5477raw: string;
5578defaultProvider: string;
5679defaultModel: string;
5780aliasIndex: ModelAliasIndex;
5881allowedModelKeys: Set<string>;
5982}): ModelDirectiveSelection | undefined {
60-const resolved = resolveModelRefFromString({
83+const resolved = resolveModelRefFromDirectiveString({
6184raw: params.raw,
6285defaultProvider: params.defaultProvider,
6386aliasIndex: params.aliasIndex,
@@ -141,7 +164,7 @@ export async function applyResetModelOverride(params: {
141164}
142165143166const catalog = params.modelCatalog ?? (await loadResetModelCatalog(params.cfg));
144-const allowed = buildAllowedModelSetWithFallbacks({
167+const allowedModelKeys = await buildResetAllowedModelKeys({
145168cfg: params.cfg,
146169 catalog,
147170defaultProvider: params.defaultProvider,
@@ -151,7 +174,6 @@ export async function applyResetModelOverride(params: {
151174agentId: params.agentId,
152175}),
153176});
154-const allowedModelKeys = allowed.allowedKeys;
155177if (allowedModelKeys.size === 0) {
156178return {};
157179}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。