feat: add --model parameter support to command handlers

Pass model selection through command pipeline to enable model switching during runtime

close #83, close #64
This commit is contained in:
weishu
2026-01-23 11:55:40 +08:00
parent e130dfd24b
commit a41d6aa662
4 changed files with 26 additions and 1 deletions
+4 -1
View File
@@ -19,6 +19,7 @@ export async function runCodex(opts: {
codexArgs?: string[];
permissionMode?: PermissionMode;
resumeSessionId?: string;
model?: string;
}): Promise<void> {
const workingDirectory = process.cwd();
const startedBy = opts.startedBy ?? 'terminal';
@@ -48,6 +49,7 @@ export async function runCodex(opts: {
const sessionWrapperRef: { current: CodexSession | null } = { current: null };
let currentPermissionMode: PermissionMode = opts.permissionMode ?? 'default';
const currentModel = opts.model;
const lifecycle = createRunnerLifecycle({
session,
@@ -72,7 +74,8 @@ export async function runCodex(opts: {
logger.debug(`[Codex] User message received with permission mode: ${currentPermissionMode}`);
const enhancedMode: EnhancedMode = {
permissionMode: messagePermissionMode ?? 'default'
permissionMode: messagePermissionMode ?? 'default',
model: currentModel
};
const formattedText = formatMessageWithAttachments(message.content.text, message.content.attachments);
messageQueue.push(formattedText, enhancedMode);
+7
View File
@@ -41,6 +41,13 @@ export const claudeCommand: CommandDefinition = {
} else if (arg === '--dangerously-skip-permissions') {
options.permissionMode = 'bypassPermissions'
unknownArgs.push(arg)
} else if (arg === '--model') {
const model = args[++i]
if (!model) {
throw new Error('Missing --model value')
}
options.model = model
unknownArgs.push('--model', model)
} else if (arg === '--started-by') {
options.startedBy = args[++i] as 'runner' | 'terminal'
} else {
+8
View File
@@ -17,6 +17,7 @@ export const codexCommand: CommandDefinition = {
codexArgs?: string[]
permissionMode?: CodexPermissionMode
resumeSessionId?: string
model?: string
} = {}
const unknownArgs: string[] = []
@@ -36,6 +37,13 @@ export const codexCommand: CommandDefinition = {
} else if (arg === '--yolo' || arg === '--dangerously-bypass-approvals-and-sandbox') {
options.permissionMode = 'yolo'
unknownArgs.push(arg)
} else if (arg === '--model') {
const model = commandArgs[++i]
if (!model) {
throw new Error('Missing --model value')
}
options.model = model
unknownArgs.push('--model', model)
} else {
unknownArgs.push(arg)
}
+7
View File
@@ -14,6 +14,7 @@ export const geminiCommand: CommandDefinition = {
startedBy?: 'runner' | 'terminal'
startingMode?: 'local' | 'remote'
permissionMode?: GeminiPermissionMode
model?: string
} = {}
for (let i = 0; i < commandArgs.length; i++) {
@@ -29,6 +30,12 @@ export const geminiCommand: CommandDefinition = {
}
} else if (arg === '--yolo') {
options.permissionMode = 'yolo'
} else if (arg === '--model') {
const model = commandArgs[++i]
if (!model) {
throw new Error('Missing --model value')
}
options.model = model
}
}