_retry_tool_execution(dataagent/core/flex/nodes/executor.py:739)在工具执行失败后重试时,直接调 _invoke_manager_tool_async 而不经过 _setup_tool_call_execution,导致:
_retry_tool_execution
dataagent/core/flex/nodes/executor.py:739
_invoke_manager_tool_async
_setup_tool_call_execution
_reset_context
set_current_sandbox
bash()
get_current_sandbox()
RuntimeError: No sandbox bound to current tool call context
_retry_tool_execution 由初始代码(13cf292,2026-05-30)引入,从未调用 _setup_tool_call_execution / set_current_sandbox。
13cf292
该 bug 自初始代码起一直潜伏,因 upstream/main 的 local.py 变更使 bash 失败变为可重试(新增 retriable / max_retries policy)后暴露。
local.py
retriable
max_retries
在 _retry_tool_execution 重试前手动 set_current_sandbox(runtime.sandbox)。
set_current_sandbox(runtime.sandbox)
该修复逻辑上会回到上一个工具调用的 sandbox 状态,而非退回到原始(无 sandbox)状态。如果两次工具调用之间存在其他需要 sandbox 的场景,可能导致 ContextVar 状态不一致。
_retry_tool_execution 应完整复用 _setup_tool_call_execution 的流程(设置 sandbox + subagent context + file inspect workspace 等),而非仅手动设置 sandbox。
skill-plan-hook
upstream/main
7fe84bb
09ea763
dataagent/core/flex/nodes/executor.py
a3498313670af57fd0796af04ef736a7ec91b058 format tests/e2e/bio_lab/test_performance.py dataagent/core/flex/nodes/executor.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) M dataagent/core/flex/nodes/executor.py
完整日志见附件。
问题
_retry_tool_execution(dataagent/core/flex/nodes/executor.py:739)在工具执行失败后重试时,直接调_invoke_manager_tool_async而不经过_setup_tool_call_execution,导致:_reset_context清除了set_current_sandbox设置的 ContextVar,重试时bash()调get_current_sandbox()抛RuntimeError: No sandbox bound to current tool call context根因
_retry_tool_execution由初始代码(13cf292,2026-05-30)引入,从未调用_setup_tool_call_execution/set_current_sandbox。该 bug 自初始代码起一直潜伏,因 upstream/main 的
local.py变更使 bash 失败变为可重试(新增retriable/max_retriespolicy)后暴露。三层独立问题叠加
get_current_sandbox()抛异常13cf292)_retry_tool_execution不设 sandbox13cf292)local.py新增retriable/max_retries曾尝试的修复(已回退)
在
_retry_tool_execution重试前手动set_current_sandbox(runtime.sandbox)。回退原因
该修复逻辑上会回到上一个工具调用的 sandbox 状态,而非退回到原始(无 sandbox)状态。如果两次工具调用之间存在其他需要 sandbox 的场景,可能导致 ContextVar 状态不一致。
正确修复方向
_retry_tool_execution应完整复用_setup_tool_call_execution的流程(设置 sandbox + subagent context + file inspect workspace 等),而非仅手动设置 sandbox。环境
skill-plan-hook(基于upstream/main7fe84bb)09ea763dataagent/core/flex/nodes/executor.py_retry_tool_execution(line 739+)