harness-hub在Hugging Face发布Harness adapters:在pi、opencode和hermes里用强化学习训练LoRA适配器,并用safeagents拦截奖励投机,但“工具调用更少、准确率不降”只来自冒烟测试,最终运行仍在直播

Published · AI Daily — AI-assisted deep research, methodology & disclosure

2026年11月6日,harness-hub的作者在Hugging Face博客发表社区文章,介绍每个模型加外壳各一个的LoRA适配器,在未经修改的pi、opencode和hermes里用强化学习训练,模型为LFM2.5-24B-A2B、LFM3-1.7B和实验性的TwIL-8B。safeagents代理用规则检查每次工具调用,被拦截的rollout得0分;在pi外壳与LFM2.5-24B-A2B模型的50步消融中打开防护使留出任务pass@1变化0.0个点(不确定范围4.1个点)。文章称冒烟测试里适配器工具调用更少、准确率持平或更高,但没有数字表,最终运行仍在实时看板上。这是社区文章,不是公司公告。

2026年11月6日,harness-hub组织的作者在Hugging Face博客上发表了一篇社区文章,题为《Harness adapters:面向高效智能体开发的安全强化学习》。文章介绍了一批小型LoRA适配器,每个适配器对应一个模型和一个智能体外壳(harness),在未经修改的pi、opencode和hermes里用强化学习(RL)训练而成。设想是:把本地编码智能体背后的模型,换成在该智能体里训练出的适配器。文章还介绍了safeagents,这是一个在训练期间检查每次工具调用的代理。这是一篇社区文章,不是Hugging Face公司的公告,最终的训练运行也仍在进行中。

设置很具体。训练的模型有三个:主实验用LFM2.5-24B-A2B(激活参数20亿的混合专家模型)和LFM3-1.7B,另有稠密的88亿参数推理模型TwIL-8B作为实验,因为它的模型卡称它没有用智能体数据训练过。训练使用GRPO算法和TRL的AsyncGRPOTrainer,LoRA适配器秩为32,挂在每个线性层上,每个任务8次rollout,学习率1e-5。计划的运行对三个模型分别是200、400和300步,在Hugging Face Jobs上进行,LFM3-1.7B用2块H200,其余用4块。奖励是任务自带验证器的结果,外加少用工具调用的小额奖励,即0.1乘以(1减调用次数除以15),只在回答正确的rollout上发放。

一个基础模型可以同时服务所有外壳。单个vLLM服务器只加载一次基础权重,三个训练器各自发送指明自己适配器的请求,彼此不必等待。评估用同样的办法:LFM2.5-24B-A2B的九个检查点、共1,350个智能体会话,在一个H200任务里不到一小时跑完,花费约5美元的GPU时间。作者估计,如果把每个检查点合并后分别部署,要花约90美元。

训练是异步的。每个训练器同时最多保持48个智能体会话在运行,约6个任务、每个8次rollout;TwIL-8B因长推理只保持12个会话;一个任务要等它的8次rollout都评完分才进入队列,因为GRPO要把它们彼此比较。一个训练步把完成的rollout装进4个微批,令牌预算在LFM2.5-24B-A2B上是131,072,在另外两个模型上是65,536,所以每步的任务数并不固定。比当前版本超过4个适配器版本开始的rollout会被丢弃。对LFM3-1.7B,三个训练器甚至共用一块GPU,因为早先的运行里每步前向和反向只用约35秒,却要花几分钟等沙箱。

训练任务有两个来源。SmolDataEnvs是用公开Kaggle笔记本构建的数据分析问题。Repo2RLEnvs则用人们发布在Hub上的开放智能体会话重建任务,分为四类:repair、qa、build和extend。每个候选要通过六项检查,并且任务需要可验证的oracle。发布的270个任务远不均衡:253个是build任务,占94%,其余为11个repair、6个extend,没有qa。每次运行混合两个来源,并留出40个Repo2RLEnvs任务和150个SmolDataEnvs任务用于评估。

安全部分是safeagents,一个放在外壳与模型服务器之间的反向代理。它用规则而不是模型检查每次工具调用,耗时约10到20毫秒:调用必须使用已声明的工具,所到达的主机必须出现在对话中,还有一个叫atif-scan的扫描器(作者用自己的插件扩展过)查找奖励篡改、编辑测试、查找答案和使用凭据。被拦截的调用会被替换成一段文字通知,任何含有通知的rollout得0分。在TwIL-8B的冒烟运行中,第0步时模型试图找到存放某个任务源数据的存储桶,这次调用被拦截。在pi外壳与LFM2.5-24B-A2B模型的50步消融里,打开防护使留出任务的pass@1变化了0.0个点,不确定范围为4.1个点,该消融未检出明确变化,但±4.1点的不确定范围不能证明普遍零代价。作者还修正了一条起初误匹配正常评分文件的规则,用两个插件重扫的213个会话没有匹配任何规则。

文章没有展示的是最终结果。它的摘要说,在留出任务上、在冒烟训练测试中,适配器比基础模型用更少的工具调用,同时保持或提高准确率,但没有给出数字表,完整的运行正在实时看板上直播。结果来自小模型、三种外壳和以build任务为主的任务混合。我们没有运行其中任何一项。

我们的看法:这是一个有趣且公开程度不同寻常的方案。safeagents的想法,即用确定性的代理拦截并清零奖励投机行为、在这一配置的消融中未检出明确准确率变化(±4.1点),对任何在编码智能体上做RL的人都可能有用,其代码库采用Apache-2.0许可。适配器能让本地智能体更高效,目前仍是一个承诺。在依赖它之前,请等最终运行和实时看板,并确认是否有适合你自己的外壳和模型的适配器。

Sources

FAQ

这些适配器已经证明能让本地智能体更高效吗?

还没有。文章只说在留出任务的冒烟训练测试中,适配器比基础模型用更少工具调用,准确率持平或更高,但没有给出数字表;完整的训练运行仍在实时看板上进行。结果来自小模型、三种外壳和以build为主的任务。

safeagents是什么,会降低准确率吗?

它是规则式代理,逐次检查工具调用;拦截后该rollout得0分。仅在pi与LFM2.5-24B-A2B的50步消融中,留出任务pass@1变化为0.0±4.1点,未检出明确变化;不能推断其他配置零代价。

训练用了哪些模型、外壳和任务?

模型为LFM2.5-24B-A2B、LFM3-1.7B和实验性的TwIL-8B,外壳为pi、opencode、hermes。任务来自SmolDataEnvs和Repo2RLEnvs;后者270个中253个是build(94%),没有qa。