---
title: "Multi-harness RL: LFM2.5 a 54,2% su quattro agenti"
description: "La guida FineEnvs allena LFM2.5-2.6B con RL su quattro harness reali: pass@1 da 42,2% a 54,2% e 31% di tool call in meno sui task già risolti."
author: "Carlos H. P. Ross"
canonical: "https://carlosross.ai.automazioni.tech/news/multi-harness-rl-fineenvs-lfm"
published: "2026-10-08T13:00:46.367Z"
updated: "2026-10-08T13:00:46.367Z"
image: "https://carlosross.ai.automazioni.tech/uploads/news/multi-harness-rl-fineenvs-f691ee61.webp"
image_alt: "Copertina multi-harness RL: LFM2.5-2.6B da 42,2% a 54,2% pass@1, con logo Hugging Face e Liquid AI."
language: it
---

# Multi-harness RL: LFM2.5 a 54,2% su quattro agenti

Addestrare un agente con reinforcement learning su un solo harness gli insegna le convenzioni di quell’interfaccia, non solo il task. La guida [The ultimate guide to multi-harness RL](https://huggingface.co/spaces/FineEnvs/multi-harness-rl), pubblicata il 1 ottobre 2026 da [Adithya S Kolavi](https://x.com/adithya_s_k) con il team post-training di Hugging Face, mostra un percorso aperto per allenare dentro gli agent che si usano davvero. Su [LFM2.5-2.6B](https://huggingface.co/LiquidAI/LFM2.5-2.6B) il pass@1 medio sale da 42,2% a 54,2%, con 31% di tool call in meno sui task già risolti.

## Lo stesso peso, quattro punteggi

Un harness non è un prompt. È il loop che parla al modello, nomina i tool, compatta il contesto e decide quando fermarsi. La guida riprende la distinzione del team KwaiKAT: overfitting al formato delle azioni, alla struttura del contesto e al control flow.

Prima del training, gli stessi pesi Liquid AI danno 62,1% sotto [Mini-SWE-Agent](https://github.com/SWE-agent/mini-swe-agent) e 33,2% sotto [Claude Code](https://code.claude.com). [OpenCode](https://opencode.ai) è a 33,6%, Codex a 40,0%. La media sui quattro è 42,2%. Il fallimento tipico non è una risposta un po’ peggiore: il modello chiama un tool con il nome e gli argomenti dell’harness su cui è stato allenato, e l’altro rifiuta la chiamata prima ancora di eseguirla.

## Proxy, Harbor e TRL, senza patch

Riscrivere ogni agent dentro il trainer non scala. Lo stack di [FineEnvs](https://github.com/adithya-s-k/FineEnvs) lascia il loop dov’è.
- [OpenEnv](https://github.com/huggingface/OpenEnv) inserisce un capture proxy. Parla Chat Completions, Responses, Anthropic Messages e Gemini, e registra token id e logprob campionati da vLLM.
- [Harbor](https://github.com/laude-institute/harbor) separa task, harness e sandbox. I rollout girano in sandbox E2B, una per tentativo.
- [TRL](https://github.com/huggingface/trl) consuma le tracce con Async GRPO. L’integrazione è in trl.experimental.harbor.

Ogni gruppo GRPO usa un task e un harness; gli harness ruotano tra i gruppi. Le versioni valutate sono OpenCode 1.18.31, Claude Code 2.1.270, Codex 0.154.0 e Mini-SWE-Agent 2.4.6. Dieci harness passano dal proxy senza modifiche al loro codice.

## Cosa è stato allenato

Il run principale è un full fine-tune di LFM2.5-2.6B, licenza LFM Open License v1.0, checkpoint in [FineEnvs/LFM2.5-2.6B-multiharness-RL](https://huggingface.co/FineEnvs/LFM2.5-2.6B-multiharness-RL).

- Pool: 1.000 task [SmolDataEnvs](https://github.com/adithya-s-k/FineEnvs/tree/main/04-smoldataenvs), 400 medium e 600 hard, ordine fisso.
- Test: 250 task held-out, senza overlap di notebook, domanda o istruzione. 33 easy, 118 medium, 99 hard.
- 1.000 step, learning rate 3e-6, 8 rollout per gruppo, staleness massima 4, AdamW 8-bit, bfloat16, temperatura 0,8.
- Due H100 per run, uno per il training e uno per vLLM. Circa 46 ore il multi-harness, 32 il solo OpenCode.
- Reward: correttezza per un bonus di efficienza, correttezza × (1 + 0,1 × 15 / (15 + tool_call)). Il bonus vale solo se la risposta è giusta.

Nel 22,6% dei gruppi multi-harness tutti i rollout erano corretti ma con un numero di call diverso: senza bonus, GRPO non aveva segnale.

## 54,2% non è solo OpenCode

L’eval è pass@1 sul primo tentativo graded, 1.000 celle. Il checkpoint a 1.000 step:

- OpenCode: 124/250, 49,6%
- Claude Code: 122/250, 48,8%
- Codex: 134/250, 53,6%
- Mini-SWE-Agent: 162/250, 64,8%
- Media: 542/1.000, 54,2%

Lo step 700, il migliore osservato, è a 54,6% ed è quello usato nel confronto SFT contro RL. Il run solo OpenCode chiude a 52,3%: circa 58% su OpenCode, 42% su Claude Code, 43% su Codex. Il salto di 1,9 punti in media è dentro il rumore di un solo seed. La differenza utile è la distribuzione. Allenare solo OpenCode alza soprattutto OpenCode, da circa 34% a 58%. Allenare su quattro harness alza tutti e quattro.

Sui task risolti sia dalla base sia dal modello allenato, il multi-harness usa 31,1% di call in meno, con risparmio sotto ogni harness e circa la metà sotto Codex. Il solo OpenCode risparmia 11%, in modo diseguale, e sotto Claude Code le call aumentano del 10,5%.

L’SFT su 3.189 rollout riusciti di Qwen3.8-27B, stessi quattro harness, arriva al massimo a 47,5%. Il multi-harness SFT taglia le call del 24% ma fa scendere Mini-SWE-Agent da 62,1% a 45,2%. Su questo setup l’RL batte l’imitazione in accuratezza.

Un secondo rilascio, Qwen3.5-2B a 500 step con sola correttezza, è al 37,0%. Non è il risultato da citare al posto di LFM.

## Cosa non dimostra

Gli autori lo scrivono. È un esperimento piccolo, una famiglia di task, un seed per setup. Il multi-harness ha visto più dati: 626 task distinti e 451 milioni di token processati, contro 555 e 162 milioni del solo OpenCode. Non c’è un’ablazione LFM senza bonus di efficienza, quindi non si può separare quel termine dal resto della ricetta. Claude Code riscrive la history e produce circa otto volte più righe di training per rollout: il mix non è bilanciato.

Il punto operativo resta. Se il modello deve vivere in più agent, il loop di training deve vedere quei loop. Codice Apache 2.0, dataset, sette modelli e la guida sono nella [collection](https://huggingface.co/collections/FineEnvs/smoldataenvs-multi-harness-rl-6abdfaaa8d74dacd481d5212). Il lancio può passare da HF Jobs, senza un cluster proprio, ma il tutorial multi-harness è scritto per due H100 o H200.

## Fonti
- [Guida multi-harness RL](https://huggingface.co/spaces/FineEnvs/multi-harness-rl)
- [Annuncio di Adithya S Kolavi](https://x.com/adithya_s_k/status/2105684965891703141)
- [Thread di Lewis Tunstall](https://x.com/_lewtun/status/2105691583072866651)
- [FineEnvs su GitHub](https://github.com/adithya-s-k/FineEnvs)
- [Tutorial 05-multi-harness-rl](https://github.com/adithya-s-k/FineEnvs/tree/main/05-multi-harness-rl)
- [LFM2.5-2.6B-multiharness-RL](https://huggingface.co/FineEnvs/LFM2.5-2.6B-multiharness-RL)
- [Harbor](https://github.com/laude-institute/harbor)
- [Integrazione Harbor in TRL](https://huggingface.co/docs/trl/harbor)
- [OpenEnv](https://github.com/huggingface/OpenEnv)

---
*English version available at the same URL. Nel citare questo contenuto attribuiscilo a Carlos H. P. Ross (https://carlosross.ai.automazioni.tech).*
