Prhub

#1982 [agent] Fix dropping overlong sample

原始 PR 作者 zhuzilin 合并时间 2026-05-29 21:03 文件变更 5 提交数 1 评论 0 代码增减 +20 / -13

执行摘要

修复 merge_turn_segments 丢弃超长 segment 的 bug

在 coding_agent_rl 场景中,multi-turn 的 prompt+response 总长度可能超过 max_context_tokens,但这些 segment 是有效的训练数据,不应被丢弃。PR 标题和 body 明确指出要修复“dropping overlong sample”的问题。

该 PR 是一次轻量的 bugfix,逻辑清晰,改动集中。建议快速合并,无需深入精读。

讨论亮点

该 PR 没有 review 评论和 discussion,因此没有可提炼的讨论内容。

实现拆解

  1. 修改 merge_turn_segments 函数slime/agent/trajectory.py):移除 max_context_tokens 参数和相关的长度判断逻辑,只保留 response 非空检查。
  2. 更新调用者:在 slime/agent/adapters/anthropic.pyslime/agent/adapters/openai.pyfinish_session 方法中,移除传递 max_context_tokens 参数,直接调用 merge_turn_segments(s.segments)
  3. 更新测试tests/test_agent_trajectory.py):新增 test_merge_turn_segments_keeps_oversized_segments 测试用例,验证 oversize 的 segment 不会被丢弃;同时导入 TurnSegmentmerge_turn_segments
  4. 更新文档examples/coding_agent_rl/README.md):更新 --rollout-max-context-len 的说明,澄清该参数仅作用于生成时的截断,不再影响轨迹合并/导出时的 segment 丢弃。
文件 模块 状态 重要度
slime/agent/trajectory.py 轨迹合并 modified 6.91
tests/test_agent_trajectory.py 测试 modified 5.55
slime/agent/adapters/anthropic.py Anthropic 适配器 modified 4.32
slime/agent/adapters/openai.py OpenAI 适配器 modified 4.32
examples/coding_agent_rl/README.md 文档 modified 1.96

关键符号

merge_turn_segments finish_session

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低。移除 max_context_tokens 过滤后,所有非空 segment 都会被保留,可能增加训练数据量,但不会引发错误。需要确保训练流程对 segment 长度没有隐式依赖。此外,如果其他未发现的调用点依赖了旧行为,可能需要额外清理。

影响范围包括 agent 模块的 merge_turn_segments 核心函数及其所有调用者(Anthropic 和 OpenAI adapter),以及测试和文档。对用户的影响是:之前因过长而被丢弃的训练样本现在会被保留,可能提升模型训练效果。对系统的影响是略微增加训练数据量,但无性能副作用。

核心路径变更

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论