已开启
[Executor] _max_tool_result_length 双源配置(self.config 与 runtime.env),reconfig 后不同步 #36
henry创建于  7月7日
henry成员
7月7日 创建

现象

dataagent/core/flex/nodes/executor.py:119-121self._max_tool_result_lengthruntime.env.max_tool_result_length双源配置

# executor.py:119-121
self._max_tool_result_length = self.config.get(
    "max_tool_result_length", DEFAULT_MAX_TOOL_RESULT_LENGTH
)

# runtime.env.max_tool_result_length 来自 flex_runtime_from_config._get_node_config_int

两处独立解析同一 YAML 键 ACTOR_LOOP.executor.max_tool_result_length

  • self.config 是 executor 节点配置(在 __init__ 时一次性读取)
  • runtime.env.max_tool_result_lengthAgentEnv 字段(由 flex_runtime_from_config.py:259, 316 注入)

影响

  • reconfig() 修改 YAML 后 runtime.env 会更新,但 self._max_tool_result_length 不会
  • 调用 build_messages(max_tool_result_length=self._max_tool_result_length) 时用的是旧值
  • 调用 build_messages(max_tool_result_length=runtime.env.max_tool_result_length)(pruner / planner_prompt_builder)时用的是新值
  • 同一会话内 executor 与 pruner/planner 用不同的截断长度,行为不一致

修复方案

统一从 runtime.env 读取:

# executor.py
@property
def _max_tool_result_length(self) -> int:
    return getattr(self.runtime.env, "max_tool_result_length", DEFAULT_MAX_TOOL_RESULT_LENGTH)

或在 reconfig() 里同步更新 self._max_tool_result_length

涉及文件

  • dataagent/core/flex/nodes/executor.py:119-121
  • dataagent/core/flex/flex_runtime_from_config.py:259, 316
  • dataagent/core/flex/hooks/pruner.py:65
  • dataagent/core/flex/utils/planner_prompt_builder.py:130

验证

  • 单测:构造 runtime,运行中 reconfig 修改 max_tool_result_length,断言 executor 与 pruner 读到相同的最新值。

严重性

major(reconfig 后行为不一致)

环境

  • 分支:0623
  • HEAD:c5c899a4196717d1eb5944a9736f766310655ef7
likedislike
xsmqxsmq成员
7月20日 关联了看板:@hwxsmq的看板 20260720