跳转至

作为 Agentic RL rollout 与评测的执行层

把一次 rollout 看成独立任务:准备工作区,执行 Agent,收集轨迹和文件结果,计算奖励,然后保留或丢弃改动。pVisor 负责执行与证据,训练器负责采样、奖励和调度。

先用离线任务验证结果收集:

pvisor run --safe --overlaynet-deny-all --stdio capture \
  --stage ../rollout-001 -- /bin/sh -c 'printf "candidate\n" > answer.txt'
pvisor status --review --json ../rollout-001 > rollout-001.bundle.json
pvisor inspect ../rollout-001 -- cat answer.txt

结果应当是任务完成、退出码为零,并留下 answer.txt。让 evaluator 读取 Stage 中的候选文件,评分完成后执行 pvisor drop ../rollout-001;不需要把每个训练候选写回基线。

单次 rollout 的现有拼装方式

当前可以将一次命令执行、模型流量记录和原生 Agent 轨迹作为一个评测样本。先为样本准备干净 workspace,再运行命令并保留 Job ID、Run Bundle、Event Journal 与 Agent 原生轨迹。reward 的计算、任务队列、模型训练和跨节点调度由现有框架负责。

产物 用途 不能替代
Run Bundle 结果、控制与文件变化 训练框架的 reward 与数据集元数据
Gateway Journal 经过网关的模型调用 未捕获流量与 Agent 原生 session
Agent 原生轨迹 对应适配器的工具前缀回放 进程内存快照
逻辑检查点 分叉暂存文件状态 完整环境和外部服务状态

固定样本身份

为每次 rollout 保存任务 ID、pVisor 提交、Agent/模型版本、初始仓库提交、镜像摘要、采样参数、策略和执行器。分别记录任务失败、隔离拒绝、记录失败与续跑质量;不要把基础设施失败记为“模型没有能力”。

回放在新环境中重新执行工具,会再次发生相应副作用。使用测试 API/数据库和独立输出目录;用 --prepare-only 先验证格式,用 --replay-only 验证工具前缀,再开始真实续跑。固定适配版本与边界语义见回放。集群吞吐与 hostile 多租户仍未建立保证。

评分并保留训练样本

前面的离线任务可用下面的最小 evaluator 评分。它先检查执行结果,再检查候选文件内容;示例依赖 jq。

jq -e '.schema_version == 4 and .run.state == "completed" and .run.exit_code == 0' \
  rollout-001.bundle.json
pvisor inspect ../rollout-001 -- cat answer.txt > rollout-001.answer.txt
reward=0
if [ "$(cat rollout-001.answer.txt)" = candidate ]; then
  reward=1
fi
jq -n --arg task_id sample-001 --argjson reward "$reward" \
  '{task_id: $task_id, reward: $reward, bundle: "rollout-001.bundle.json"}' \
  > rollout-001.score.json
pvisor drop ../rollout-001

这只是内容匹配奖励,真实任务替换为单元测试、环境得分或人工标注。若执行检查或文件读取失败,记录为失败样本并保留诊断,停止后面的正常评分步骤。CI 中使用 set -e 或显式检查每一步返回值。

收集原生 Agent 轨迹时按接入指南配置 Agent 自身的输出位置;启用 Gateway 捕获的步骤见模型通信记录。把轨迹位置、Bundle 与评分用同一个 task/attempt ID 关联。批量任务复用并行工作区流程,每个样本使用新的 Stage。