diff --git a/src/renderer/components/settings-modal.ts b/src/renderer/components/settings-modal.ts index a9d81ef..4f09f1c 100644 --- a/src/renderer/components/settings-modal.ts +++ b/src/renderer/components/settings-modal.ts @@ -257,6 +257,7 @@ export function openSettingsModal(): void { updateConnectionInfo(); updateRunningModels(); populateMemoryEmbedModels(); + populateSubAgentModels(); updateMemoryVectorStatus(); } @@ -365,6 +366,47 @@ async function populateMemoryEmbedModels(): Promise { } } +async function populateSubAgentModels(): Promise { + const select = document.querySelector('#selectSubAgentModel') as HTMLSelectElement; + if (!select) return; + const api = state.get(KEYS.API); + if (!api) return; + + try { + const data = await api.listModels(); + if (!data.models?.length) return; + + // 保留第一个 "跟随当前模型" 选项,追加所有模型 + while (select.options.length > 1) select.remove(1); + data.models + .sort((a, b) => (a.name < b.name ? -1 : 1)) + .forEach(m => { + const opt = document.createElement('option'); + opt.value = m.name; + opt.textContent = m.name; + select.appendChild(opt); + }); + + // 恢复已保存的选择 + const db = state.get(KEYS.DB); + if (db) { + const saved = await db.getSetting('subAgentModel', ''); + if (saved) select.value = saved; + } + } catch (err) { + logWarn('加载子代理模型列表失败', (err as Error).message); + } +} + +// 子代理模型设置保存 +document.querySelector('#selectSubAgentModel')?.addEventListener('change', async () => { + const db = state.get(KEYS.DB); + if (!db) return; + const val = (document.querySelector('#selectSubAgentModel') as HTMLSelectElement).value; + await db.saveSetting('subAgentModel', val); + logSetting('子代理默认模型', val || '跟随当前模型'); +}); + function updateMemoryVectorStatus(): void { const statusEl = document.querySelector('#memoryVectorStatus'); if (!statusEl) return; diff --git a/src/renderer/index.html b/src/renderer/index.html index 8b1340e..05475db 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -324,6 +324,13 @@
+
+ +

子代理(spawn_task)使用的默认模型。留空则使用当前选中的模型。可为简单任务选择更快的模型。

+ +
diff --git a/src/renderer/services/tool-registry.ts b/src/renderer/services/tool-registry.ts index 572648b..31e0073 100644 --- a/src/renderer/services/tool-registry.ts +++ b/src/renderer/services/tool-registry.ts @@ -768,7 +768,7 @@ export async function executeTool(toolName: string, args: Record('subAgentModel', '') || undefined; if (!task) return { success: false, error: '缺少 task 参数' }; logInfo(`子代理委派: ${task.slice(0, 80)}${model ? ` (模型: ${model})` : ''}`); const result = await executeSubAgent(task, context, model ? { model } : {});