



























@@ -162,6 +162,7 @@ function toGatewayImageAttachments(
162162163163export type SpawnAcpContext = {
164164agentSessionKey?: string;
165+requesterAgentIdOverride?: string;
165166agentChannel?: string;
166167agentAccountId?: string;
167168agentTo?: string;
@@ -766,6 +767,7 @@ function prepareAcpThreadBinding(params: {
766767function resolveAcpSpawnRequesterState(params: {
767768cfg: OpenClawConfig;
768769parentSessionKey?: string;
770+requesterAgentId: string;
769771targetAgentId: string;
770772ctx: SpawnAcpContext;
771773subagentStore?: SessionCapabilityStore;
@@ -784,8 +786,6 @@ function resolveAcpSpawnRequesterState(params: {
784786typeof params.ctx.agentThreadId === "string"
785787 ? Boolean(normalizeOptionalString(params.ctx.agentThreadId))
786788 : params.ctx.agentThreadId != null;
787-const requesterAgentId = requesterParsedSession?.agentId;
788-789789return {
790790parentSessionKey: params.parentSessionKey,
791791 isSubagentSession,
@@ -796,17 +796,17 @@ function resolveAcpSpawnRequesterState(params: {
796796sessionKey: params.parentSessionKey,
797797}),
798798heartbeatRelayRouteUsable:
799-params.parentSessionKey && requesterAgentId
799+params.parentSessionKey && params.requesterAgentId
800800 ? hasSessionLocalHeartbeatRelayRoute({
801801cfg: params.cfg,
802802parentSessionKey: params.parentSessionKey,
803- requesterAgentId,
803+requesterAgentId: params.requesterAgentId,
804804})
805805 : false,
806806origin: resolveRequesterOriginForChild({
807807cfg: params.cfg,
808808targetAgentId: params.targetAgentId,
809-requesterAgentId: normalizeAgentId(requesterAgentId),
809+requesterAgentId: params.requesterAgentId,
810810requesterChannel: params.ctx.agentChannel,
811811requesterAccountId: params.ctx.agentAccountId,
812812requesterTo: params.ctx.agentTo,
@@ -820,6 +820,7 @@ function resolveAcpSpawnRequesterState(params: {
820820function resolveAcpSubagentEnvelopeState(params: {
821821cfg: OpenClawConfig;
822822requesterSessionKey?: string;
823+requesterAgentId: string;
823824targetAgentId: string;
824825requestedAgentId?: string;
825826subagentStore?: SessionCapabilityStore;
@@ -860,9 +861,8 @@ function resolveAcpSubagentEnvelopeState(params: {
860861};
861862}
862863863-const requesterAgentId = normalizeAgentId(parseAgentSessionKey(requesterSessionKey)?.agentId);
864864const requireAgentId =
865-resolveAgentConfig(params.cfg, requesterAgentId)?.subagents?.requireAgentId ??
865+resolveAgentConfig(params.cfg, params.requesterAgentId)?.subagents?.requireAgentId ??
866866params.cfg.agents?.defaults?.subagents?.requireAgentId ??
867867false;
868868if (requireAgentId && !params.requestedAgentId?.trim()) {
@@ -873,11 +873,11 @@ function resolveAcpSubagentEnvelopeState(params: {
873873}
874874875875const targetPolicy = resolveSubagentTargetPolicy({
876- requesterAgentId,
876+requesterAgentId: params.requesterAgentId,
877877targetAgentId: params.targetAgentId,
878878requestedAgentId: params.requestedAgentId,
879879allowAgents:
880-resolveAgentConfig(params.cfg, requesterAgentId)?.subagents?.allowAgents ??
880+resolveAgentConfig(params.cfg, params.requesterAgentId)?.subagents?.allowAgents ??
881881params.cfg.agents?.defaults?.subagents?.allowAgents,
882882configuredAgentIds: resolveConfiguredAcpSubagentTargetIds(params.cfg),
883883});
@@ -1275,6 +1275,9 @@ export async function spawnAcpDirect(
12751275 cfg,
12761276requesterSessionKey: ctx.agentSessionKey,
12771277});
1278+const requesterAgentId = normalizeAgentId(
1279+ctx.requesterAgentIdOverride ?? parseAgentSessionKey(requesterInternalKey)?.agentId,
1280+);
12781281if (!isAcpEnabledByPolicy(cfg)) {
12791282return createAcpSpawnFailure({
12801283status: "forbidden",
@@ -1370,13 +1373,15 @@ export async function spawnAcpDirect(
13701373const requesterState = resolveAcpSpawnRequesterState({
13711374 cfg,
13721375 parentSessionKey,
1376+ requesterAgentId,
13731377 targetAgentId,
13741378 ctx,
13751379 subagentStore,
13761380});
13771381const subagentEnvelopeState = resolveAcpSubagentEnvelopeState({
13781382 cfg,
13791383requesterSessionKey: requesterInternalKey,
1384+ requesterAgentId,
13801385 targetAgentId,
13811386requestedAgentId: params.agentId,
13821387 subagentStore,
@@ -1636,6 +1641,8 @@ export async function spawnAcpDirect(
16361641scopeKind: "session",
16371642requesterOrigin: requesterState.origin,
16381643childSessionKey: sessionKey,
1644+agentId: targetAgentId,
1645+ requesterAgentId,
16391646runId: childRunId,
16401647label: params.label,
16411648task: params.task,
@@ -1675,6 +1682,8 @@ export async function spawnAcpDirect(
16751682scopeKind: "session",
16761683requesterOrigin: requesterState.origin,
16771684childSessionKey: sessionKey,
1685+agentId: targetAgentId,
1686+ requesterAgentId,
16781687runId: childRunId,
16791688label: params.label,
16801689task: params.task,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。