From 0d1f48cf53e07daf2f91d166a38b8db153153ca1 Mon Sep 17 00:00:00 2001 From: yushen Date: Fri, 30 Jan 2026 13:20:20 +0800 Subject: [PATCH] refactor(agent): rename env vars to LLM_PROVIDER and provider-specific MODEL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AGENT_PROVIDER → LLM_PROVIDER - AGENT_MODEL → provider-specific env vars (e.g., OPENAI_MODEL, DEEPSEEK_MODEL) - Add resolveModelId function matching resolveApiKey/resolveBaseUrl pattern Co-Authored-By: Claude Opus 4.5 --- src/agent/runner.ts | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/agent/runner.ts b/src/agent/runner.ts index 61be8343..8eaee194 100644 --- a/src/agent/runner.ts +++ b/src/agent/runner.ts @@ -72,6 +72,36 @@ function resolveBaseUrl(provider: string, explicitUrl?: string): string | undefi return process.env[`${normalizedProvider}_BASE_URL`]; } +/** + * Get Model ID based on provider. + * Priority: explicit model > provider-specific env var > generic env var format. + */ +function resolveModelId(provider: string, explicitModel?: string): string | undefined { + if (explicitModel) return explicitModel; + + const providerEnvMap: Record = { + openai: "OPENAI_MODEL", + anthropic: "ANTHROPIC_MODEL", + google: "GOOGLE_MODEL", + "google-genai": "GOOGLE_MODEL", + kimi: "MOONSHOT_MODEL", + "kimi-coding": "MOONSHOT_MODEL", + deepseek: "DEEPSEEK_MODEL", + groq: "GROQ_MODEL", + mistral: "MISTRAL_MODEL", + together: "TOGETHER_MODEL", + }; + + const envVar = providerEnvMap[provider]; + if (envVar) { + return process.env[envVar]; + } + + // Try generic format: PROVIDER_MODEL + const normalizedProvider = provider.toUpperCase().replace(/-/g, "_"); + return process.env[`${normalizedProvider}_MODEL`]; +} + export class Agent { private readonly agent: PiAgentCore; private readonly output; @@ -91,8 +121,8 @@ export class Agent { this.debug = options.debug ?? false; // Resolve provider and model from options > env vars > defaults - const resolvedProvider = options.provider ?? process.env.AGENT_PROVIDER ?? "kimi-coding"; - const resolvedModel = options.model ?? process.env.AGENT_MODEL; + const resolvedProvider = options.provider ?? process.env.LLM_PROVIDER ?? "kimi-coding"; + const resolvedModel = resolveModelId(resolvedProvider, options.model); const apiKey = resolveApiKey(resolvedProvider, options.apiKey); this.agent = new PiAgentCore(