


























@@ -8,7 +8,10 @@ import {
88resolveAwsSdkEnvVarName,
99resolveEnvApiKey,
1010} from "../../agents/model-auth.js";
11-import { shouldSuppressBuiltInModel } from "../../agents/model-suppression.js";
11+import {
12+shouldSuppressBuiltInModel,
13+shouldSuppressBuiltInModelFromManifest,
14+} from "../../agents/model-suppression.js";
1215import { discoverAuthStorage, discoverModels } from "../../agents/pi-model-discovery.js";
1316import type { OpenClawConfig } from "../../config/types.openclaw.js";
1417import { resolveRuntimeSyntheticAuthProviderRefs } from "../../plugins/synthetic-auth.runtime.js";
@@ -85,22 +88,31 @@ function validateAvailableModels(availableModels: unknown): Model<Api>[] {
8588return availableModels as Model<Api>[];
8689}
879088-function loadAvailableModels(registry: ModelRegistry, cfg: OpenClawConfig): Model<Api>[] {
91+function loadAvailableModels(
92+registry: ModelRegistry,
93+cfg: OpenClawConfig,
94+opts?: { runtimeSuppression?: boolean },
95+): Model<Api>[] {
8996let availableModels: unknown;
9097try {
9198availableModels = registry.getAvailable();
9299} catch (err) {
93100throw normalizeAvailabilityError(err);
94101}
95102try {
96-return validateAvailableModels(availableModels).filter(
97-(model) =>
98-!shouldSuppressBuiltInModel({
99-provider: model.provider,
100-id: model.id,
101-baseUrl: model.baseUrl,
102-config: cfg,
103-}),
103+return validateAvailableModels(availableModels).filter((model) =>
104+opts?.runtimeSuppression === false
105+ ? !shouldSuppressBuiltInModelFromManifest({
106+provider: model.provider,
107+id: model.id,
108+config: cfg,
109+})
110+ : !shouldSuppressBuiltInModel({
111+provider: model.provider,
112+id: model.id,
113+baseUrl: model.baseUrl,
114+config: cfg,
115+}),
104116);
105117} catch (err) {
106118throw normalizeAvailabilityError(err);
@@ -111,26 +123,32 @@ export async function loadModelRegistry(
111123cfg: OpenClawConfig,
112124opts?: { providerFilter?: string; normalizeModels?: boolean },
113125) {
126+const runtimeSuppression = opts?.normalizeModels !== false;
114127const agentDir = resolveOpenClawAgentDir();
115128const authStorage = discoverAuthStorage(agentDir, { readOnly: true });
116129const registry = discoverModels(authStorage, agentDir, {
117130providerFilter: opts?.providerFilter,
118131normalizeModels: opts?.normalizeModels,
119132});
120-const models = registry.getAll().filter(
121-(model) =>
122-!shouldSuppressBuiltInModel({
123-provider: model.provider,
124-id: model.id,
125-baseUrl: model.baseUrl,
126-config: cfg,
127-}),
133+const models = registry.getAll().filter((model) =>
134+runtimeSuppression
135+ ? !shouldSuppressBuiltInModel({
136+provider: model.provider,
137+id: model.id,
138+baseUrl: model.baseUrl,
139+config: cfg,
140+})
141+ : !shouldSuppressBuiltInModelFromManifest({
142+provider: model.provider,
143+id: model.id,
144+config: cfg,
145+}),
128146);
129147let availableKeys: Set<string> | undefined;
130148let availabilityErrorMessage: string | undefined;
131149132150try {
133-const availableModels = loadAvailableModels(registry, cfg);
151+const availableModels = loadAvailableModels(registry, cfg, { runtimeSuppression });
134152availableKeys = new Set(availableModels.map((model) => modelKey(model.provider, model.id)));
135153} catch (err) {
136154if (!shouldFallbackToAuthHeuristics(err)) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。