feat: per-group model/effort overrides via containerConfig

This commit is contained in:
Eyejoker
2026-03-11 04:31:41 +09:00
parent 31d8eee5fe
commit 7c49bdf6ce
2 changed files with 21 additions and 4 deletions

View File

@@ -202,10 +202,16 @@ function prepareGroupEnvironment(
process.env.OPENAI_API_KEY; process.env.OPENAI_API_KEY;
if (openaiKey) env.OPENAI_API_KEY = openaiKey; if (openaiKey) env.OPENAI_API_KEY = openaiKey;
// Codex model/effort configuration // Codex model/effort configuration (per-group overrides global)
const codexModel = envVars.CODEX_MODEL || process.env.CODEX_MODEL; const codexModel =
group.containerConfig?.codexModel ||
envVars.CODEX_MODEL ||
process.env.CODEX_MODEL;
if (codexModel) env.CODEX_MODEL = codexModel; if (codexModel) env.CODEX_MODEL = codexModel;
const codexEffort = envVars.CODEX_EFFORT || process.env.CODEX_EFFORT; const codexEffort =
group.containerConfig?.codexEffort ||
envVars.CODEX_EFFORT ||
process.env.CODEX_EFFORT;
if (codexEffort) env.CODEX_EFFORT = codexEffort; if (codexEffort) env.CODEX_EFFORT = codexEffort;
// Codex session directory // Codex session directory
@@ -243,7 +249,7 @@ function prepareGroupEnvironment(
process.env.CLAUDE_CODE_OAUTH_TOKEN || process.env.CLAUDE_CODE_OAUTH_TOKEN ||
''; '';
} }
// Model/thinking config // Model/thinking config (per-group overrides global)
for (const key of [ for (const key of [
'CLAUDE_MODEL', 'CLAUDE_MODEL',
'CLAUDE_THINKING', 'CLAUDE_THINKING',
@@ -253,6 +259,12 @@ function prepareGroupEnvironment(
const val = envVars[key as keyof typeof envVars] || process.env[key]; const val = envVars[key as keyof typeof envVars] || process.env[key];
if (val) env[key] = val; if (val) env[key] = val;
} }
if (group.containerConfig?.claudeModel) {
env.CLAUDE_MODEL = group.containerConfig.claudeModel;
}
if (group.containerConfig?.claudeEffort) {
env.CLAUDE_EFFORT = group.containerConfig.claudeEffort;
}
} }
return { env, groupDir, runnerDir }; return { env, groupDir, runnerDir };

View File

@@ -7,6 +7,11 @@ export interface AdditionalMount {
export interface ContainerConfig { export interface ContainerConfig {
additionalMounts?: AdditionalMount[]; additionalMounts?: AdditionalMount[];
timeout?: number; // Default: 300000 (5 minutes) timeout?: number; // Default: 300000 (5 minutes)
// Per-group model/effort overrides (take precedence over global env vars)
codexModel?: string;
codexEffort?: string;
claudeModel?: string;
claudeEffort?: string;
} }
export type AgentType = 'claude-code' | 'codex'; export type AgentType = 'claude-code' | 'codex';