[Bug] 并行 subagent 共享相同 turn_id 导致 CLI 执行卡死

:memo: 问题描述
在 CLI 执行过程中遇到了卡死(hang)问题。通过分析日志发现,根因在于并行启动的多个 subagent 被分配了相同的 turn_id,且该 ID 与上一次上下文压缩(compression)的 session_scope_id 冲突,导致主线程状态机死锁。

:detective: 根因分析
卡死发生在 loop.iteration=3。主 turn 在单次模型响应中发起了两个并行的 Explore subagent,但 CLI 为这两个 subagent 分配了完全相同的 turn_id。

时序还原:
10:58:56 & 10:59:18:连续触发两次 compression.progress。session_scope_id = 7a937888-4ace-4255-a38d-a66cedd97fac。
10:59:48:主 turn 发起第 1 个 Agent (Explore)。subagent turn_id = 7a937888…。
10:59:52:主 turn 发起第 2 个 Agent (Explore)。subagent turn_id = 7a937888…(与第一个完全相同)。
之后:CLI 日志停止,执行卡住。

技术细节:
模型单次返回了包含两个 Agent tool_use 的响应(content_block_count=5)。
CLI 为这两个并行的 subagent 复用了同一个会话 ID。
由于 ID 冲突,状态机无法将后续的 tool_result 正确匹配并回填给对应的 subagent。主 turn 一直处于"等待 tool_result 回填"的状态,导致既不报错也不继续推进。

:counterclockwise_arrows_button: 复现步骤
触发一次上下文压缩(高 token 使用量更容易触发)。
在随后的 turn 中,让模型生成包含多个并行 subagent(例如两个 Explore 工具调用)的响应。
观察 CLI 在分发 subagent 后卡死。

:white_check_mark: 预期行为
并行执行的 subagent 应该被分配唯一且独立的 turn_id,以确保它们的执行状态和结果能被独立追踪。
或者,如果无法支持唯一 ID 生成,CLI 应当将并行的工具调用改为串行执行。

:light_bulb: 建议
请修复并行 subagent 的 ID 分配逻辑,确保每个 subagent 拥有独立的标识符,且不与 compression 的 scope ID 产生冲突。