Prhub

#6048 [rollout] chore: single turn agent loop also enable rollout trace as tool loop

原始 PR 作者 pengwu22 合并时间 2026-04-20 11:45 文件变更 1 提交数 1 评论 1 代码增减 +2 / -0

执行摘要

为单轮对话 Agent Loop 启用 rollout 追踪装饰器,支持 Vexact 演示精确 rollout。

根据PR描述“Single turn agent loop also enable rollout trace as tool agent loop, so that vexact can demo traced exact rollout”,目的是让单轮对话Agent Loop也能像工具Agent Loop一样支持rollout追踪,从而支持Vexact演示精确rollout。

该PR变更简单,适合快速了解如何为Agent Loop添加追踪功能。值得关注的设计决策是使用装饰器模式非侵入式增强功能,但需注意review中提到的设计一致性疑虑。

讨论亮点

reviewer gemini-code-assist[bot] 指出:

rollout_trace_op装饰器已导入但仅应用于SingleTurnAgentLoop.run。为保持一致性并完全支持PR目标(为单轮对话Agent启用rollout追踪),也应将其应用于DiffusionSingleTurnAgentLoop.run(第143行)。”

讨论焦点是设计一致性:是否应将装饰器也应用于同文件中的DiffusionSingleTurnAgentLoop类。但PR作者未回应此评论,且PR已合并,表明当前决策是仅装饰SingleTurnAgentLoop,可能因为DiffusionSingleTurnAgentLoop有特殊需求或后续单独处理。

实现拆解

  1. 导入rollout_trace_op装饰器:在verl/experimental/agent_loop/single_turn_agent_loop.py中,从verl.utils.rollout_trace导入rollout_trace_op装饰器,为后续装饰器应用做准备。
  2. 应用装饰器到run方法:在SingleTurnAgentLoop类的run方法上添加@rollout_trace_op装饰器,使其在执行时启用rollout追踪功能。
  3. 无测试或配置配套改动:本次变更仅涉及源码级别的装饰器应用,没有新增或修改测试文件、配置文件或部署脚本。
文件 模块 状态 重要度
verl/experimental/agent_loop/single_turn_agent_loop.py Agent 循环 modified 4.89

关键符号

SingleTurnAgentLoop.run

关键源码片段

verl/experimental/agent_loop/single_turn_agent_loop.py core-logic

这是唯一变更的文件,为单轮对话 Agent Loop 启用 rollout 追踪功能。

from verl.utils.rollout_trace import rollout_trace_op # 新增导入:用于启用 rollout 追踪的装饰器@register("single_turn_agent")
class SingleTurnAgentLoop(AgentLoopBase):
    """Naive agent loop that only do single turn chat completion."""
​
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.prompt_length = self.rollout_config.prompt_length
        self.response_length = self.rollout_config.response_length
​
    @rollout_trace_op # 新增装饰器:为此方法启用 rollout 追踪,支持 Vexact 演示精确 rollout
    async def run(self, sampling_params: dict[str, Any], **kwargs) -> AgentLoopOutput:
        messages = list(kwargs["raw_prompt"])
        # ... 后续生成逻辑保持不变

评论区精华

装饰器应用一致性 设计

reviewer 建议将 rollout_trace_op 装饰器也应用于 DiffusionSingleTurnAgentLoop.run 以保持一致性。

结论:PR 未采纳此建议,仅装饰了 SingleTurnAgentLoop.run,可能因 DiffusionSingleTurnAgentLoop 有特殊需求或后续单独处理。 · 已解决

风险与影响

技术风险较低:

  • 回归风险:装饰器仅添加追踪逻辑,不改变核心生成流程,但若rollout_trace_op实现有bug,可能影响单轮对话Agent的稳定性。
  • 性能风险:装饰器可能引入额外开销,但通常追踪逻辑较轻量,影响可忽略。
  • 兼容性风险:无,装饰器是向后兼容的增强功能。
  • 安全风险:无。

影响范围有限:

  • 对用户:单轮对话Agent现在支持rollout追踪,便于Vexact演示精确rollout,提升调试和演示能力。
  • 对系统:仅影响SingleTurnAgentLoop的执行流,不改变其他模块。
  • 对团队:为后续扩展追踪功能到其他Agent Loop提供参考模式。
装饰器副作用 设计一致性疑虑

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论