opencode v2.3.0的子代理默认在后台运行,调用后立即返回会话id,子代理空闲时再向父会话回报,因此父会话可以继续工作。需要留意的是,返回id只说明后台任务已建立;如果子代理自身还有后台工作未结束,它的回报会明确表示仍在运行,父会话应等待最终回报,不能把阶段答复当成交付完成。

立即返回的对象是会话身份
同步等待模型通常让父会话停在调用处,直到子任务给出结果。v2.3.0改为后台执行,先把子代理会话ID返回,父会话可以继续处理别的工作,多个子代理也可以同时运行。这里的并发是会话执行方式的变化,不代表子任务之间自动消除依赖,也不保证多个写入同一文件的任务不会发生冲突。
会话ID用于识别具体子会话,不能当成任务成功凭据。复杂任务往往包含读取、工具调用和等待,父会话知道子任务身份以后,仍需要根据回报里的状态判断是否已有最终结果;对于后续任务需要引用的代码或结论,更不能以启动响应替代结果核对。

空闲回报可能仍是中间状态
发行说明专门处理了一类嵌套情况:子代理变为空闲时,它自己的后台工作仍在运行。v2.3.0会让它向父会话说明“仍在运行”,使父会话继续等待最终报告,而不是把局部答案当作完成。这让空闲与完成之间的差别更清楚,也说明不能只凭某次回报出现就结束整个任务。
对于依赖子代理结果的后续判断,重要的是回报是否已经覆盖最终结果。执行中的部分输出可以帮助理解进度,但不等于完整结果。该版本没有宣称所有异步任务都能自动重试成功,或所有部分结果都能自动合并成可发布成果。
界面更安静不等于后台没有活动
TUI的转录详细度默认变为low,把一段工具调用和思考汇总成一个可折叠活动行,让回答更易阅读。已有详细度设置会保留,因此升级后界面未变并不自动代表更新失败。medium、high以及TUI配置中的session.verbosity仍是查看更详细记录的选项。
低详细度描述的是显示方式,子代理后台执行描述的是任务生命周期。看见较短的转录记录,不能据此判断工具没有调用;看见父会话能够继续输入,也不能据此判断所有子代理都已结束。二者需要分别理解,才能在长任务里保留正确的完成标准。
实验性后台Shell不是同一项默认能力
Shell命令在服务器交接时保持运行、在中断时保留输出,是另外一组改进。命令超时后转入后台的能力仍是实验性的,需要shell_timeout_background标志;启用时,后台命令上的显式超时会停止它。MCP事件支持也仍由mcp_events实验开关控制。
这些开关不能从“子代理默认后台”推导成已经默认打开。v2.3.0同时调整了桌面端的历史提示定位、工具输出截断和本地模型发现等行为,但具体平台与功能边界仍应分开看待,不应把它们合并成所有任务都永不阻塞的承诺。

















