From 230eb489b54a5bc5e9f6b45f8a2878d489981544 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Fri, 5 Jun 2026 00:02:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ACP=20=E6=A8=A1=E5=BC=8F=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=20agent=20=E5=AE=9A=E4=B9=89=E5=B9=B6=E9=80=8F?= =?UTF-8?q?=E4=BC=A0=20subagent=20=E5=B1=82=E7=BA=A7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - agent.ts: session 创建时调用 getAgentDefinitionsWithOverrides 加载内置 subagent(Explore/Plan/General-Purpose 等),注入 appState 和 engineConfig - bridge.ts: assistantMessageToAcpNotifications 调用时补上 parentToolUseId, 使 subagent 内部工具调用的 _meta 中携带父级标记 --- src/services/acp/agent.ts | 13 ++++++++++--- src/services/acp/bridge.ts | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/services/acp/agent.ts b/src/services/acp/agent.ts index ddfe4bcc1..617879103 100644 --- a/src/services/acp/agent.ts +++ b/src/services/acp/agent.ts @@ -54,6 +54,7 @@ import { getEmptyToolPermissionContext } from '../../Tool.js' import type { PermissionMode } from '../../types/permissions.js' import type { Command } from '../../types/command.js' import { getCommands } from '../../commands.js' +import { getAgentDefinitionsWithOverrides } from '@claude-code-best/builtin-tools/tools/AgentTool/loadAgentsDir.js' import { setOriginalCwd, switchSession, @@ -549,8 +550,14 @@ export class AcpAgent implements Agent { }, } - // Load commands for slash command and skill support - const commands = await getCommands(cwd) + // Load commands and agent definitions for subagent support + const [commands, agentDefinitionsResult] = await Promise.all([ + getCommands(cwd), + getAgentDefinitionsWithOverrides(cwd), + ]) + + // Inject agent definitions into appState + appState.agentDefinitions = agentDefinitionsResult // Build QueryEngine config const engineConfig: QueryEngineConfig = { @@ -558,7 +565,7 @@ export class AcpAgent implements Agent { tools, commands, mcpClients: [], - agents: [], + agents: agentDefinitionsResult.activeAgents, canUseTool, getAppState: () => appState, setAppState: (updater: (prev: AppState) => AppState) => { diff --git a/src/services/acp/bridge.ts b/src/services/acp/bridge.ts index 4de1f6c0f..17c0831de 100644 --- a/src/services/acp/bridge.ts +++ b/src/services/acp/bridge.ts @@ -827,6 +827,7 @@ export async function forwardSessionUpdates( { clientCapabilities, cwd, + parentToolUseId, }, ) for (const notification of notifications) {