From 236863acd4d10983986cd3830c2ea92c85e420de Mon Sep 17 00:00:00 2001 From: yushen Date: Fri, 30 Jan 2026 13:15:11 +0800 Subject: [PATCH] feat(agent): support AGENT_PROVIDER and AGENT_MODEL env vars Add environment variable support for provider/model defaults: - AGENT_PROVIDER: default LLM provider (fallback: kimi-coding) - AGENT_MODEL: default model name - Auto-load .env via tsx --env-file in agent:cli script Priority: CLI args > env vars > session meta > defaults. Co-Authored-By: Claude Opus 4.5 --- package.json | 2 +- src/agent/runner.ts | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index dd93b110..39a420b0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "main": "dist/index.js", "scripts": { "dev": "tsx src/index.ts", - "agent:cli": "tsx src/agent/cli.ts", + "agent:cli": "tsx --env-file=.env src/agent/cli.ts", "agent:interactive": "tsx src/agent/interactive-cli.ts", "agent:profile": "tsx src/agent/profile-cli.ts", "dev:gateway": "tsx --watch src/gateway/main.ts", diff --git a/src/agent/runner.ts b/src/agent/runner.ts index 8c0d7413..61be8343 100644 --- a/src/agent/runner.ts +++ b/src/agent/runner.ts @@ -90,8 +90,9 @@ export class Agent { this.output = createAgentOutput({ stdout, stderr }); this.debug = options.debug ?? false; - // Resolve provider for API key and base URL - const resolvedProvider = options.provider ?? "kimi-coding"; + // 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 apiKey = resolveApiKey(resolvedProvider, options.apiKey); this.agent = new PiAgentCore( @@ -142,11 +143,9 @@ export class Agent { return tempSession.getMeta(); })(); - let model = options.provider && options.model ? resolveModel(options) : resolveModel({ - ...options, - provider: storedMeta?.provider, - model: storedMeta?.model, - }); + const effectiveProvider = resolvedModel ? resolvedProvider : (options.provider ?? storedMeta?.provider); + const effectiveModel = resolvedModel ?? options.model ?? storedMeta?.model; + let model = resolveModel({ ...options, provider: effectiveProvider, model: effectiveModel }); // Override base URL if provided via options or environment variable const baseUrl = resolveBaseUrl(model.provider, options.baseUrl);