
























@@ -5,6 +5,7 @@ import type {
55import type { ModelDefinitionConfig } from "openclaw/plugin-sdk/provider-model-shared";
66import { normalizeModelCompat } from "openclaw/plugin-sdk/provider-model-shared";
77import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";
8+import { resolveCopilotTransportApi, resolveStaticCopilotModelOverride } from "./model-metadata.js";
89910export const PROVIDER_ID = "github-copilot";
1011const CODEX_FORWARD_COMPAT_TARGET_IDS = new Set(["gpt-5.4", "gpt-5.3-codex"]);
@@ -19,14 +20,6 @@ function isCopilotCodexModelId(modelId: string): boolean {
1920return /(?:^|[-_.])codex(?:$|[-_.])/.test(modelId);
2021}
212222-export function resolveCopilotTransportApi(
23-modelId: string,
24-): "anthropic-messages" | "openai-responses" {
25-return (normalizeOptionalLowercaseString(modelId) ?? "").includes("claude")
26- ? "anthropic-messages"
27- : "openai-responses";
28-}
29-3023export function resolveCopilotForwardCompatModel(
3124ctx: ProviderResolveDynamicModelContext,
3225): ProviderRuntimeModel | undefined {
@@ -62,6 +55,22 @@ export function resolveCopilotForwardCompatModel(
6255// Template not found — fall through to synthetic catch-all below.
6356}
645758+const staticOverride = resolveStaticCopilotModelOverride(lowerModelId);
59+if (staticOverride) {
60+return normalizeModelCompat({
61+id: trimmedModelId,
62+name: staticOverride.name ?? trimmedModelId,
63+provider: PROVIDER_ID,
64+api: staticOverride.api ?? resolveCopilotTransportApi(trimmedModelId),
65+reasoning: staticOverride.reasoning ?? false,
66+input: staticOverride.input ?? ["text", "image"],
67+cost: staticOverride.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
68+contextWindow: staticOverride.contextWindow ?? DEFAULT_CONTEXT_WINDOW,
69+maxTokens: staticOverride.maxTokens ?? DEFAULT_MAX_TOKENS,
70+ ...(staticOverride.compat ? { compat: staticOverride.compat } : {}),
71+} as ProviderRuntimeModel);
72+}
73+6574// Catch-all: create a synthetic model definition for any unknown model ID.
6675// The Copilot API is OpenAI-compatible and will return its own error if the
6776// model isn't available on the user's plan. This lets new models be used
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。