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 <noreply@anthropic.com>
This commit is contained in:
yushen 2026-01-30 13:15:11 +08:00
parent 9858576abe
commit 236863acd4
2 changed files with 7 additions and 8 deletions

View file

@ -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",

View file

@ -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);