




















@@ -17,6 +17,7 @@ import {
1717parseImageMode,
1818resolveCliModelSwitchProbeTarget,
1919resolveCliBackendLiveArgs,
20+resolveCliBackendLiveModelSelection,
2021parseJsonStringArray,
2122restoreCliBackendLiveEnv,
2223shouldRunCliImageProbe,
@@ -204,25 +205,34 @@ describeLive("gateway live (cli backend)", () => {
204205logCliBackendLiveStep("env-ready", { port });
205206206207const rawModel = process.env.OPENCLAW_LIVE_CLI_BACKEND_MODEL ?? DEFAULT_MODEL;
207-const parsed = parseModelRef(rawModel, "claude-cli");
208-if (!parsed) {
209-throw new Error(
210-`OPENCLAW_LIVE_CLI_BACKEND_MODEL must resolve to a CLI backend model. Got: ${rawModel}`,
211-);
212-}
213-214-const providerId = parsed.provider;
215-const modelKey = `${providerId}/${parsed.model}`;
208+const initialParsed = parseModelRef(rawModel, "claude-cli");
209+const initialProviderId = initialParsed?.provider ?? "";
210+const initialModelKey = initialParsed
211+ ? `${initialProviderId}/${initialParsed.model}`
212+ : rawModel;
213+const initialModelSwitchTarget = resolveCliModelSwitchProbeTarget(
214+initialProviderId,
215+initialModelKey,
216+);
217+const modelSelection = resolveCliBackendLiveModelSelection({
218+ rawModel,
219+defaultProvider: "claude-cli",
220+modelSwitchTarget: initialModelSwitchTarget,
221+});
222+const providerId = modelSelection.providerId;
223+const modelKey = modelSelection.cliModelKey;
224+const configModelKey = modelSelection.configModelKey;
216225const backendResolved = resolveCliBackendConfig(providerId);
217226const enableCliImageProbe = shouldRunCliImageProbe(providerId);
218227const enableCliMcpProbe = shouldRunCliMcpProbe(providerId);
219228const enableCliModelSwitchProbe = shouldRunCliModelSwitchProbe(providerId, modelKey);
220229const modelSwitchTarget = enableCliModelSwitchProbe
221- ? resolveCliModelSwitchProbeTarget(providerId, modelKey)
230+ ? modelSelection.configModelSwitchTarget
222231 : undefined;
223232logCliBackendLiveStep("model-selected", {
224233 providerId,
225234 modelKey,
235+ configModelKey,
226236 enableCliImageProbe,
227237 enableCliMcpProbe,
228238 enableCliModelSwitchProbe,
@@ -328,7 +338,7 @@ describeLive("gateway live (cli backend)", () => {
328338providers: {
329339 ...cfg.models?.providers,
330340openai: {
331- ...openAiProviderConfigForCodexCli(modelKey),
341+ ...openAiProviderConfigForCodexCli(configModelKey),
332342 ...cfg.models?.providers?.openai,
333343},
334344},
@@ -347,12 +357,12 @@ describeLive("gateway live (cli backend)", () => {
347357defaults: {
348358 ...cfg.agents?.defaults,
349359 ...(bootstrapWorkspace ? { workspace: bootstrapWorkspace.workspaceRootDir } : {}),
350-model: { primary: modelKey },
360+model: { primary: configModelKey },
351361models: {
352-[modelKey]: {},
362+[configModelKey]: {},
353363 ...(modelSwitchTarget ? { [modelSwitchTarget]: {} } : {}),
354364},
355-agentRuntime: { id: "pi", fallback: "pi" },
365+agentRuntime: modelSelection.agentRuntime,
356366cliBackends: {
357367 ...existingBackends,
358368[providerId]: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。