Graham Neubig、Karthik Ganesan、Tunji Ruwase · 阅读原文
同一个模型,换一套系统提示、工具和回合上限,完成任务的方式可能明显不同。这些围绕模型运行的程序通常统称为 harness。做强化学习时,团队常要另写一套训练环境;如果它与生产工具循环不同,模型学到的行为未必能直接迁移。OpenHands 与 Snowflake 的方案让现有 OpenHands SDK 经由 Harbor 任务环境参与训练,尽量复用实际的提示、工具调用和文件操作流程。
一个任务目录同时描述要求、环境和测试。Agent 在沙箱中运行,结束后测试读取实际文件状态并给奖励。训练代理记录跨回合的原始 token 序列,只对模型生成部分计算训练损失,提示和工具返回不计入这部分损失,避免事后拼装对话改变训练对象。
演示使用 Qwen3.5-4B 定位 Python 代码库中的相关文件、模块与函数,每轮最多10次交互,25个训练步骤各采样64条轨迹。图中纵轴是三个定位 F1 分数之和,F1综合衡量查准与查全;总和最高3分,不是修复成功率。配套 README 另列32个评估任务的自测:均值从0.31升到2.10。默认训练与采样各占4张H200,不能把“现成harness可复用”读成低成本桌面教程。
可信度 65 · 重要性 78 · 新颖度 78
技术与主题
编辑评读
这里可迁移的做法,是把训练对象固定为真实工具循环,而不只是最终答案字符串。工具错误、文件状态和后续决策共同构成轨迹;如果训练时换成简化工具,优化的可能是另一个任务。代理保存实际采样的 token,也能减少重新编码或重建对话造成的偏差。但复用SDK不自动等于完整复制生产环境,例如此处终端调用会保留当前目录,但环境变量和后台进程不跨调用保留;依赖持续进程的生产任务需另查兼容性。
最需要在动手前检查的是评估入口。README 中评估默认不开启,评估任务路径又默认继承训练路径;使用者必须主动指定独立任务并启用评估,才能把“训练奖励上升”与“未见任务变好”分开。图中的25步训练曲线只能说明优化过程,32题评估结果是另一项有限自测,本期未独立检查其与训练任务的重叠,也没有跨代码库、跨任务普遍改善的证据。
这使它很适合作为流程学习材料:先选一个有确定测试的窄任务,确认空操作得不到奖励、参考解确实能过,再检查失败到底来自模型还是环境。仓库把基础设施错误轨迹排除出训练损失,避免将环境坏掉误当成模型能力差;实际比较时还应单独报告这种排除有多少。我们核对了文档,未启动训练。