From ec361a4f83ab36233dba584f8ddd8a3df6c910b1 Mon Sep 17 00:00:00 2001 From: thzxx Date: Thu, 18 Jun 2026 14:28:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=88=A0=E9=99=A4=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=AD=90=E4=BB=BB=E5=8A=A1=E6=8B=86=E8=A7=A3=EF=BC=8C?= =?UTF-8?q?=E5=AD=90Agent=E5=8F=AA=E8=83=BD=E9=80=9A=E8=BF=87=20spawn=5Fta?= =?UTF-8?q?sk=20=E5=B7=A5=E5=85=B7=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 所有工具调用必须经过 tool-registry,确保工具卡片完整记录 --- src/renderer/services/agent-engine.ts | 43 --------------------------- 1 file changed, 43 deletions(-) diff --git a/src/renderer/services/agent-engine.ts b/src/renderer/services/agent-engine.ts index fc2220b..85ad7d2 100644 --- a/src/renderer/services/agent-engine.ts +++ b/src/renderer/services/agent-engine.ts @@ -566,49 +566,6 @@ Shell: ${osInfo.shell} }; messages.push(userMsg); - // P2-1: 自动子任务拆解 — 仅在纯文本短消息且无附件时触发 - const PARALLEL_PATTERNS = /同时|分别|以及|另外|此外|并且|也|also|and\s+also|separately|in\s+addition|meanwhile/i; - const SUBTASK_SEPARATORS = /(?:^|\n)\s*(?:[1-9][.、)]|[-*•]\s+)/; - const userText = userContent || ''; - const hasAttachments = (images?.length || 0) > 0; - const hasParallel = !hasAttachments && userText.length > 50 && userText.length < 2000 - && PARALLEL_PATTERNS.test(userText); - - if (hasParallel && useTools) { - // 尝试按数字列表拆分子任务 - const parts = userText.split(SUBTASK_SEPARATORS).filter(p => p.trim().length > 20); - if (parts.length >= 3) { - logInfo(`自动子任务拆解: 检测到 ${parts.length} 个并行子任务`); - const subtaskResults: string[] = []; - const { executeSubAgent } = await import('./sub-agent.js'); - const subTasks = parts.slice(0, Math.min(parts.length, 3)); // 最多3个 - // 并行 spawn - const subResults = await Promise.allSettled( - subTasks.map((subTask, idx) => - executeSubAgent(subTask.trim(), `这是父任务的第 ${idx + 1}/${subTasks.length} 个子任务`, { - maxLoops: 8, - timeout: 120_000, - }) - ) - ); - for (let i = 0; i < subResults.length; i++) { - const r = subResults[i]; - if (r.status === 'fulfilled' && r.value.success) { - const content = (r.value as any).content || JSON.stringify(r.value); - subtaskResults.push(`[子任务 ${i + 1}] ${subTasks[i].trim().slice(0, 80)}...\n结果: ${content.slice(0, 1000)}`); - } - } - if (subtaskResults.length > 0) { - messages.push({ - role: 'system', - content: `以下是通过并行子代理预先完成的子任务结果,你可以直接引用这些结果来加速回答:\n\n${subtaskResults.join('\n\n')}`, - ephemeral: true, - }); - logInfo(`子任务拆解完成: ${subtaskResults.length}/${subTasks.length} 个成功`); - } - } - } - // 上下文窗口管理:滑动窗口 + 摘要压缩 + token 裁剪 const numCtx = state.get(KEYS.NUM_CTX, 24576); const contextResult = buildContext(messages, { maxTokens: numCtx, windowSize: 20 });