agentscope-ai / agentscope-ai/agentscope-java

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

Abierto
#2,512 2 comentarios 0 reacciones 0 asignados Ver en GitHub
area/build area/core/model area/core/tool area/ext/integration area/ext/spring-boot bug
Lenguaje dominante
Java
Estrellas
5.6k
Forks
1.3k
Merge medio
4 d 12 h
PR fusionados (30 d)
77

Descripción

环境
- 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 串行执行。

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.