Skip to content

Python: Why did the connection close after receiving the first Message event when using A2AAgent.run_steam()? #3362

@tiankong-hut

Description

@tiankong-hut

服务端:
[INFO] 2026-01-22 14:32:02.585 PM -- Using InMemoryTaskStore
[INFO] 2026-01-22 14:32:02.592 PM -- [CoreAgent] Agent Server started on http://localhost:40095
[INFO] 2026-01-22 14:32:02.592 PM -- [CoreAgent] Agent Card: http://localhost:40095/.well-known/agent-card.json
[INFO] 2026-01-22 14:32:02.592 PM -- [CoreAgent] Press Ctrl+C to stop the server
[INFO] 2026-01-22 14:32:14.916 PM -- [CoderAgentExecutor] Executing for taskId: fa8ed705-efcb-47be-b8a3-3bc57a56fe19, contextId: e473b74a-a875-4481-861a-4d1a4b372df2
[INFO] 2026-01-22 14:32:14.916 PM -- [CoderAgentExecutor] userMessage: {"kind":"message","messageId":"51edb184ad7349d788c2cdbb5d311ca6","metadata":{},"parts":[{"kind":"text","metadata":{},"text":"你是谁"}],"role":"user","contextId":"e473b74a-a875-4481-861a-4d1a4b372df2"}
[INFO] 2026-01-22 14:32:14.916 PM -- [CoderAgentExecutor] Socket close handler set up for task fa8ed705-efcb-47be-b8a3-3bc57a56fe19.
[INFO] 2026-01-22 14:32:14.917 PM -- [CoderAgentExecutor] Creating new task fa8ed705-efcb-47be-b8a3-3bc57a56fe19.
[INFO] 2026-01-22 14:32:15.076 PM -- [Config] Using Gemini API Key
[INFO] 2026-01-22 14:32:15.128 PM -- New task fa8ed705-efcb-47be-b8a3-3bc57a56fe19 created.
[INFO] 2026-01-22 14:32:15.128 PM -- [EventBus event]:
{
"id": "fa8ed705-efcb-47be-b8a3-3bc57a56fe19",
"contextId": "e473b74a-a875-4481-861a-4d1a4b372df2",
"kind": "task",
"status": {
"state": "submitted",
"timestamp": "2026-01-22T06:32:15.128Z"
},
"metadata": {
"__persistedState": {
"_agentSettings": {},
"_taskState": "submitted"
},
"_contextId": "e473b74a-a875-4481-861a-4d1a4b372df2"
},
"history": [
{
"kind": "message",
"messageId": "51edb184ad7349d788c2cdbb5d311ca6",
"metadata": {},
"parts": [
{
"kind": "text",
"metadata": {},
"text": "你是谁"
}
],
"role": "user",
"contextId": "e473b74a-a875-4481-861a-4d1a4b372df2"
}
],
"artifacts": []
}
[INFO] 2026-01-22 14:32:15.129 PM -- [CoderAgentExecutor] New task fa8ed705-efcb-47be-b8a3-3bc57a56fe19 saved to store.
[INFO] 2026-01-22 14:32:15.129 PM -- [CoderAgentExecutor] Starting main execution for message 51edb184ad7349d788c2cdbb5d311ca6 for task fa8ed705-efcb-47be-b8a3-3bc57a56fe19.
[INFO] 2026-01-22 14:32:15.129 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Processing user turn.
[INFO] 2026-01-22 14:32:15.129 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Processing agent turn (LLM stream).
[INFO] 2026-01-22 14:32:15.129 PM -- [Task] Reset Message events counter.
[INFO] 2026-01-22 14:32:15.129 PM -- [Task] Sending new parts to LLM.
[INFO] 2026-01-22 14:32:15.129 PM -- [EventBus event]:
{
"kind": "status-update",
"taskId": "fa8ed705-efcb-47be-b8a3-3bc57a56fe19",
"contextId": "e473b74a-a875-4481-861a-4d1a4b372df2",
"status": {
"state": "working",
"timestamp": "2026-01-22T06:32:15.129Z"
},
"final": false,
"metadata": {
"coderAgent": {
"kind": "state-change"
},
"model": "gemini-2.0-flash"
}
}
[INFO] 2026-01-22 14:32:20.045 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Received agent event #1, type=content
[INFO] 2026-01-22 14:32:20.045 PM -- [Task] Received GeminiEventType.Content event, value="我是一个由" (5 chars)
[INFO] 2026-01-22 14:32:20.045 PM -- [Task] Sending text content to event bus: "我是一个由" (5 chars)
[INFO] 2026-01-22 14:32:20.045 PM -- [EventBus event]:
{
"kind": "status-update",
"taskId": "fa8ed705-efcb-47be-b8a3-3bc57a56fe19",
"contextId": "e473b74a-a875-4481-861a-4d1a4b372df2",
"status": {
"state": "working",
"message": {
"kind": "message",
"role": "agent",
"parts": [
{
"kind": "text",
"text": "我是一个由"
}
],
"messageId": "44ae2d5f-7d30-497f-88dc-863a6dc11fdf",
"taskId": "fa8ed705-efcb-47be-b8a3-3bc57a56fe19",
"contextId": "e473b74a-a875-4481-861a-4d1a4b372df2"
},
"timestamp": "2026-01-22T06:32:20.045Z"
},
"final": false,
"metadata": {
"coderAgent": {
"kind": "text-content"
},
"model": "gemini-2.0-flash"
}
}
[INFO] 2026-01-22 14:32:20.046 PM -- [Task] Publishing Message event: messageId=44ae2d5f-7d30-497f-88dc-863a6dc11fdf, text="我是一个由"
[INFO] 2026-01-22 14:32:20.046 PM -- [EventBus event]:
{
"kind": "message",
"role": "agent",
"parts": [
{
"kind": "text",
"text": "我是一个由"
}
],
"messageId": "44ae2d5f-7d30-497f-88dc-863a6dc11fdf",
"taskId": "fa8ed705-efcb-47be-b8a3-3bc57a56fe19",
"contextId": "e473b74a-a875-4481-861a-4d1a4b372df2"
}
[INFO] 2026-01-22 14:32:20.046 PM -- [Task] Message event published successfully. Total Message events sent: 1
[INFO] 2026-01-22 14:32:20.049 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Received agent event #2, type=content
[INFO] 2026-01-22 14:32:20.049 PM -- [Task] Received GeminiEventType.Content event, value="实验室构建的代码智能体,专注于软件工程任务。" (33 chars)
[INFO] 2026-01-22 14:32:20.049 PM -- [Task] Sending text content to event bus: "实验室构建的代码智能体,专注于软件工程任务。" (33 chars)
[INFO] 2026-01-22 14:32:20.049 PM -- [Task] Publishing Message event: messageId=394219db-a21a-4619-91de-9b2e683d8df6, text="实验室构建的代码智能体,专注于软件工程任务。"
[INFO] 2026-01-22 14:32:20.049 PM -- [Task] Message event published successfully. Total Message events sent: 2
[INFO] 2026-01-22 14:32:20.051 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Received agent event #3, type=content
[INFO] 2026-01-22 14:32:20.051 PM -- [Task] Received GeminiEventType.Content event, value="我的目标是安全高效地帮助您,严格遵循指示并充分利用我" (26 chars)
[INFO] 2026-01-22 14:32:20.051 PM -- [Task] Sending text content to event bus: "我的目标是安全高效地帮助您,严格遵循指示并充分利用我" (26 chars)
[INFO] 2026-01-22 14:32:20.051 PM -- [Task] Publishing Message event: messageId=88557fc9-4c33-45c7-853b-e6bcb0944bf9, text="我的目标是安全高效地帮助您,严格遵循指示并充分利用我"
[INFO] 2026-01-22 14:32:20.051 PM -- [Task] Message event published successfully. Total Message events sent: 3
[INFO] 2026-01-22 14:32:20.053 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Received agent event #4, type=content
[INFO] 2026-01-22 14:32:20.053 PM -- [Task] Received GeminiEventType.Content event, value="现有的工具。" (6 chars)
[INFO] 2026-01-22 14:32:20.053 PM -- [Task] Sending text content to event bus: "现有的工具。" (6 chars)
[INFO] 2026-01-22 14:32:20.053 PM -- [Task] Publishing Message event: messageId=e52b6fe1-1520-466b-b042-272e967e025f, text="现有的工具。"
[INFO] 2026-01-22 14:32:20.053 PM -- [Task] Message event published successfully. Total Message events sent: 4
[INFO] 2026-01-22 14:32:20.053 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Received agent event #5, type=finished
[INFO] 2026-01-22 14:32:20.053 PM -- [Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19] Agent finished its turn.
[INFO] 2026-01-22 14:32:20.145 PM -- [CoderAgentExecutor] Client socket closed for task fa8ed705-efcb-47be-b8a3-3bc57a56fe19. Cancelling execution.
[INFO] 2026-01-22 14:32:20.159 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Received agent event #6, type=user_cancelled
[WARN] 2026-01-22 14:32:20.159 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19: Abort signal received during agent event processing.
[WARN] 2026-01-22 14:32:20.160 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19 execution aborted.
[INFO] 2026-01-22 14:32:20.160 PM -- [CoderAgentExecutor] Saving final state for task fa8ed705-efcb-47be-b8a3-3bc57a56fe19.
[INFO] 2026-01-22 14:32:20.160 PM -- [CoderAgentExecutor] Task fa8ed705-efcb-47be-b8a3-3bc57a56fe19 state saved.

客户端:
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤1: 调用 a2a_agent.run_stream()
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 输入: user_query='你是谁'
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] a2a_agent URL: unknown
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 说明: run_stream() 内部会发送 HTTP POST 请求到 A2A 服务端
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 说明: 服务端返回 text/event-stream 格式的 SSE 流
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 说明: run_stream() 解析 SSE 流,转换为 AgentResponseUpdate 对象
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤2: ✅ 获取 stream 对象 (AsyncIterable[AgentResponseUpdate])
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] stream类型: <class 'async_generator'>
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] stream对象: <async_generator object A2AAgent.run_stream at 0x7f06dbb1d3c0>
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 说明: stream 是异步迭代器,每次迭代返回一个 AgentResponseUpdate
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - ============================================================
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤3: 开始迭代 stream (HTTP SSE 流 → AgentResponseUpdate)
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 准备从 HTTP SSE 流接收数据...
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤4: 获取异步迭代器成功
2026-01-22 14:32:14 - A2A-Gemini-Agent - INFO - [客户端流程] 等待接收第一个 SSE 数据块...
2026-01-22 14:32:20 - httpx - INFO - HTTP Request: POST http://localhost:40095/ "HTTP/1.1 200 OK"
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - ============================================================
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤5: ✅ 收到第一个 AgentResponseUpdate (chunk #1)
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] chunk类型: <class 'agent_framework._types.AgentResponseUpdate'>
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] chunk属性: ['contents', 'role', 'author_name', 'response_id', 'message_id', 'created_at', 'additional_properties', 'raw_representation']
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] chunk.dict: {'contents': [<agent_framework._types.TextContent object at 0x7f06dbb5b700>], 'role': Role(value='assistant'), 'author_name': None, 'response_id': '44ae2d5f-7d30-497f-88dc-863a6dc11fdf', 'message_id': None, 'created_at': None, 'additional_properties': None, 'raw_representation': Message(context_id='e473b74a-a875-4481-861a-4d1a4b372df2', extensions=None, kind='message', message_id='44ae2d5f-7d30-497f-88dc-863a6dc11fdf', metadata=None, parts=[Part(root=TextPart(kind='text', metadata=None, text='我是一个由'))], reference_task_ids=None, role=<Role.agent: 'agent'>, task_id='fa8ed705-efcb-47be-b8a3-3bc57a56fe19')}
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - ============================================================
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤6: 解析 AgentResponseUpdate,提取文本内容
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] ✅ chunk有contents属性,数量: 1
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 处理 content[0]: type=<class 'agent_framework._types.TextContent'>
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] ✅ 从content[0]提取文本 (5字符): 我是一个由...
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 合并后的文本长度: 5 字符
aaaa1 我是一个由2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - ✅ 输出chunk #1 (5字符): 我是一个由...
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤7: 继续接收后续的 AgentResponseUpdate...
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - ============================================================
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 步骤9: stream迭代正常结束
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 总结: 共收到 1 个 AgentResponseUpdate
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - ============================================================

2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] ✅ 流式响应完成,共收到 1 个chunk,提取 5 个字符
2026-01-22 14:32:20 - A2A-Gemini-Agent - INFO - [客户端流程] 最终文本长度: 5 字符

Metadata

Metadata

Assignees

Labels

a2aIssue relates to A2Apython

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions