agentscope-ai / agentscope-ai/agentscope-java

[Bug]:AG-UI TEXT_MESSAGE events interleave when multiple agent_spawn run concurrently with parallel=true

Aperta
#2,512 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
area/build area/core/model area/core/tool area/ext/integration area/ext/spring-boot bug
Lingua principale
Java
Stelle
5.6k
Fork
1.3k
Merge medio
4g 12h
PR unite (30g)
77

Descrizione

环境
- AgentScope Java 2.0.0
- DashScope (qwen-flash)
- Spring Boot 4.1.0, Java 21, macOS
- Toolkit config: ToolkitConfig.builder().parallel(true).build()

- 复现步骤
在父 Agent 的 toolkit 中设置 parallel=true
父 Agent 在同一轮中并发调用多个 agent_spawn(timeout_seconds=600),每个 spawn 启动一个 sub-agent
Sub-agent 内部调用工具(如 load_images),产生 TEXT_MESSAGE_START → TEXT_MESSAGE_CONTENT → TEXT_MESSAGE_END 事件流
多个 sub-agent 并发执行
实际行为

AG-UI SSE 流中报错:

Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID
'cadcfded-833f-9dfe-9521-6b4076c9bff1'. Start a text message with 'TEXT_MESSAGE_START' first.

期望行为

多个 sub-agent 的 TEXT_MESSAGE 事件应各自独立、不交错,AG-UI 适配器能正确处理。

根因推测

AgentSpawnTool.execLocalSync() 的 Path 1(streamEvents 路径)中,所有并发 sub-agent 共享同一个 AgentEventEmitter:

Optional emitterOpt = AgentEventEmitter.fromContext(ctxView);
AgentEventEmitter parentEmitter = emitterOpt.get();

不同 sub-agent 的 TEXT_MESSAGE_START(id=A) / CONTENT(id=A) 与 START(id=B) / CONTENT(id=B) 在 parentEmitter 中交错。下游 AG-UI 适配器按单线程模型处理事件流,看到交错的 message ID 就报错。

事件虽然带 source tag(如 main/agent-A),但 AG-UI 适配器未按 source 分组。

临时绕过

回退 parallel=false,但所有 spawn 串行执行。

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.