
























@@ -6,32 +6,22 @@ import {
66requireApiKey,
77resolveApiKeyForProvider,
88} from "../agents/model-auth.js";
9-import { findNormalizedProviderValue, normalizeModelRef } from "../agents/model-selection.js";
9+import { normalizeModelRef } from "../agents/model-selection.js";
1010import { ensureOpenClawModelsJson } from "../agents/models-config.js";
11-import { resolveModelWithRegistry } from "../agents/pi-embedded-runner/model.js";
11+import { resolveModelAsync } from "../agents/pi-embedded-runner/model.js";
1212import { resolveProviderRequestCapabilities } from "../agents/provider-attribution.js";
1313import { registerProviderStreamForModel } from "../agents/provider-stream.js";
1414import {
1515coerceImageAssistantText,
1616hasImageReasoningOnlyResponse,
1717} from "../agents/tools/image-tool.helpers.js";
18-import { prepareProviderDynamicModel } from "../plugins/provider-runtime.js";
1918import type {
2019ImageDescriptionRequest,
2120ImageDescriptionResult,
2221ImagesDescriptionRequest,
2322ImagesDescriptionResult,
2423} from "./types.js";
252426-let piModelDiscoveryRuntimePromise: Promise<
27-typeof import("../agents/pi-model-discovery-runtime.js")
28-> | null = null;
29-30-function loadPiModelDiscoveryRuntime() {
31-piModelDiscoveryRuntimePromise ??= import("../agents/pi-model-discovery-runtime.js");
32-return piModelDiscoveryRuntimePromise;
33-}
34-3525function resolveImageToolMaxTokens(modelMaxTokens: number | undefined, requestedMaxTokens = 4096) {
3626if (
3727typeof modelMaxTokens !== "number" ||
@@ -143,48 +133,17 @@ async function resolveImageRuntime(params: {
143133authStore?: ImageDescriptionRequest["authStore"];
144134}): Promise<{ apiKey: string; model: Model<Api> }> {
145135await ensureOpenClawModelsJson(params.cfg, params.agentDir);
146-const { discoverAuthStorage, discoverModels } = await loadPiModelDiscoveryRuntime();
147-const authStorage = discoverAuthStorage(params.agentDir);
148-const modelRegistry = discoverModels(authStorage, params.agentDir);
149136const resolvedRef = normalizeModelRef(params.provider, params.model);
150-const configuredProviders = params.cfg.models?.providers;
151-const providerConfig =
152-configuredProviders?.[resolvedRef.provider] ??
153-findNormalizedProviderValue(configuredProviders, resolvedRef.provider);
154-// Fast path: resolve without dynamic model preparation first.
155-// This avoids unnecessary prepare hooks (e.g. OpenRouter catalog fetch)
156-// for models that are already explicitly resolvable.
157-let model = resolveModelWithRegistry({
158-provider: resolvedRef.provider,
159-modelId: resolvedRef.model,
160- modelRegistry,
161-cfg: params.cfg,
162-agentDir: params.agentDir,
163-}) as Model<Api> | null;
164-165-// If the model is not in the registry yet, prepare dynamic provider models
166-// and retry (needed for provider-runtime-backed dynamic models).
167-if (!model) {
168-await prepareProviderDynamicModel({
169-provider: resolvedRef.provider,
170-config: params.cfg,
171-context: {
172-config: params.cfg,
173-agentDir: params.agentDir,
174-provider: resolvedRef.provider,
175-modelId: resolvedRef.model,
176- modelRegistry,
177- providerConfig,
178-},
179-});
180-model = resolveModelWithRegistry({
181-provider: resolvedRef.provider,
182-modelId: resolvedRef.model,
183- modelRegistry,
184-cfg: params.cfg,
185-agentDir: params.agentDir,
186-}) as Model<Api> | null;
187-}
137+const resolved = await resolveModelAsync(
138+resolvedRef.provider,
139+resolvedRef.model,
140+params.agentDir,
141+params.cfg,
142+{
143+allowBundledStaticCatalogFallback: true,
144+},
145+);
146+const { authStorage, model } = resolved;
188147if (!model) {
189148throw new Error(`Unknown model: ${resolvedRef.provider}/${resolvedRef.model}`);
190149}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。