In questo articolo

🔍 Cos'è pilotfish

pilotfish è un layer di orchestrazione multi-modello per Claude Code: non un tool esterno né un router che intercetta le chiamate, ma una configurazione globale che vive sotto ~/.claude/ e ridisegna chi fa cosa. Il nome viene dal pesce pilota, che nuota accanto ai grandi predatori facendo il lavoro di routine: qui la sessione principale gira sulla famiglia opus e delega il volume a Sonnet e Haiku attraverso subagent con ruoli espliciti.

La genesi del progetto è quasi comica, e la racconta l'autore stesso nel README: una mattina il quota settimanale si era azzerato, e la prima cosa che ha fatto con l'allowance fresca di Fable 5 è stato chiedergli di indagare dove fosse finito quello della settimana prima. La risposta — la maggior parte dei token se ne va in ricerca, edit meccanici e test, non in giudizio — è diventata questa configurazione: tre file, zero codice runtime, installazione idempotente su ogni progetto.

La carta d'identità del repo
repo       Nanako0129/pilotfish
cosa       orchestrazione multi-modello per Claude Code: frontiera pianifica,
           Sonnet/Haiku eseguono, verifier Opus a contesto fresco controllano
come       3 file di config sotto ~/.claude/ · 8 ruoli subagent · zero runtime
chicca     il benchmark Anthropic che lo giustifica: 96% delle prestazioni
           al 46% del costo con orchestratore + worker Sonnet
licenza    MIT · ~580 stelle · nato l'8 luglio 2026, release fitte

Repo ufficiale · Nanako0129/pilotfish

Richiede Claude Code 2.1.219 o successivo; l'installer si ferma su build più vecchie.

⚙️ Otto ruoli, tre livelli di configurazione

L'architettura sta in tre livelli. Il livello macchina è ~/.claude/settings.json: definisce chi orchestra (l'alias opus) e la catena di fallbackModel per degradare con grazia quando il modello primario non è disponibile. Il livello ruoli è la cartella ~/.claude/agents/: otto agent in Markdown, ognuno pinnato via frontmatter sul tier giusto e sulla superficie di tool minima. Il livello policy è il CLAUDE.md utente: le regole di delega, scritte in termini di ruoli e mai di nomi di modello.

Gli otto ruoli coprono il ciclo di vita completo: scout ed Explore (Haiku) per le ricognizioni read-only, plan-verifier (Opus, read-only) che sfida il piano e risponde READY o REVISE strutturato, mech-executor (Sonnet, effort basso) per il lavoro meccanico completamente specificato, executor (Sonnet, effort medio) per l'implementazione che richiede giudizio, verifier (Opus a contesto fresco) che verifica l'esito e non corregge mai, più i due ruoli di sicurezza (security-reviewer e security-executor, entrambi Opus) con mandato correttezza-prima-del-costo.

Il ciclo di vita di un task con pilotfish
  1. 01
    Discoveryscout/Explore (Haiku) raccolgono fatti delimitati, read-only
  2. 02
    Planla sessione principale (Opus) scrive il piano; plan-verifier lo sfida: READY o REVISE
  3. 03
    Esecuzionemech-executor o executor (Sonnet) ricevono un contratto stabile e posseduto in esclusiva
  4. 04
    Verificaverifier (Opus, contesto fresco) testa la claim: CONFIRMED / REFUTED / INCONCLUSIVE
  5. 05
    Accettazioneil giudizio finale resta alla sessione principale, mai al subagent

La qualità è protetta dalla verifica indipendente, non dall'usare il modello più grande ovunque.

💸 I numeri che giustificano il pattern

Quello che rende pilotfish più di un'opinione è che il pattern è benchmarkato da Anthropic stessa. Nei test pubblicati nella documentazione multi-agent, un orchestratore Fable 5 con worker Sonnet 5 raggiunge il 96% delle prestazioni della configurazione tutta-Fable per il 46% del costo (su BrowseComp: 86,8% contro 90,8% di accuratezza, 18,53 contro 40,56 dollari a problema). Il pattern inverso — Sonnet esecutore che consulta Fable come advisor — si ferma a circa il 92% per il 63% del costo: la divisione orchestratore/worker che pilotfish adotta vince su entrambi gli assi.

A scala hobbistica la direzione è la stessa: un esperimento di audit con dodici worker documentato da Developers Digest passa da 14,50 dollari (tutto Fable 5) a 6,10 con worker Sonnet e 3,70 con worker Haiku. E per chi è in abbonamento c'è un bonus specifico: i limiti settimanali di Claude usano due bucket, uno condiviso per tutti i modelli più uno aggiuntivo solo-Sonnet — instradare l'esecuzione su subagent Sonnet costa meno per token e attinge a quell'headroom dedicato in più.

Costo di un audit a 12 worker (esperimento Developers Digest, in dollari API)
Tutto Fable 5+14.5$Fable orchestratore + worker Sonnet+6.1$Fable orchestratore + worker Haiku+3.7$

Caso best-case e dichiarato tale: la forma del risparmio, non una promessa. Sui benchmark Anthropic il rapporto è 96% delle prestazioni al 46% del costo.

🧪 Installazione: un runbook che l'agente legge

L'installazione è essa stessa un esercizio di vibe coding ben fatto: si clona la release pinnata, si avvia Claude Code dal checkout e si incolla un prompt che gli fa leggere il runbook locale install/AGENT-INSTALL.md. L'agente ispeziona la configurazione esistente, mostra un piano di merge — niente viene sovrascritto alla cieca — e applica solo dopo approvazione. Rilanciarla aggiorna in place.

Una scelta che apprezzo: il README sconsiglia esplicitamente la via comoda del prompt che punta al raw di GitHub, perché segue main senza pinning e perché la protezione anti prompt-injection di WebFetch può legittimamente intercettare un documento remoto che istruisce un'AI a installare software. La risposta suggerita non è disattivare la protezione, ma usare il checkout locale: postura di sicurezza rara nei tool di questa categoria.

Installazione dalla release pinnata
git clone --branch v1.3.8 --depth 1 https://github.com/Nanako0129/pilotfish.git
cd pilotfish
claude

# poi, nella sessione Claude Code:
# "Read the local file install/AGENT-INSTALL.md in the current checkout
#  and follow it to install pilotfish into my global Claude Code configuration.
#  Show me the full plan of changes and get my approval before writing anything."

Runbook di installazione · AGENT-INSTALL.md

Installazione idempotente: rilanciare il runbook aggiorna in place. Riavviare la sessione dopo l'install.

⚠️ Il caveat onesto: la delega automatica non è garantita

Qui il progetto dà il meglio in trasparenza. Un'installazione riuscita non garantisce che Claude Code deleghi spontaneamente: istruzioni a priorità più alta iniettate dal client possono frenare il dispatch degli agent, e un CLAUDE.md utente non può scavalcarle. Il README documenta gli esperimenti — su Pro due tentativi senza cue non hanno dispatchato nulla; su Max la topologia attesa è emersa in un tentativo positivo su quattro — e traccia tutto in issue pubbliche, con i dati per cella in benchmarks/spontaneous-dispatch.

La soluzione pragmatica è un opt-in esplicito: quando si vuole il ciclo di orchestrazione si aggiunge alla richiesta una riga che invoca pilotfish e il suo freno di dispatch. C'è anche un avviso prezioso che vale da solo la lettura: dalla versione 2.1.198 di Claude Code il subagent Explore integrato eredita il modello della sessione principale — se la sessione gira su Fable o Opus, ogni ricerca in background brucia token di fascia alta. pilotfish lo reindirizza su Haiku.

  • La delega spontanea dipende dal client: iniezioni a priorità più alta possono sopprimerla; serve l'opt-in esplicito nella richiesta quando si vuole il lifecycle completo.
  • Explore integrato eredita il modello della main session (da Claude Code 2.1.198): senza override, le ricerche di background girano sul tier più caro.
  • Gli alias modello dipendono da provider e settings: opus può risolvere a deployment diversi; per pinning esatto usare l'ID completo del modello.
  • Progetto giovane e in evoluzione rapida: nato l'8 luglio 2026, release frequenti; in ambienti condivisi conviene la release pinnata, non main.
  • Config globale, non per-progetto: scrive sotto ~/.claude/ e convive con la configurazione esistente via merge, ma va revisionato il piano di modifiche prima di approvare.

🏢 Perché è interessante, per sviluppatori e PMI

Per chi sviluppa con Claude Code tutti i giorni, pilotfish è la risposta strutturata a un problema che prima si gestiva a mano con il comando /model e la disciplina personale. La separazione fra ruoli read-only e ruoli con scrittura, i verifier che non correggono mai, il freno che tiene il lavoro piccolo nella sessione principale: sono pattern che migliorano il flusso anche a prescindere dal risparmio, perché la verifica a contesto fresco batte l'auto-critica — lo dice la guida ufficiale di prompting di Anthropic, non solo l'autore del repo.

Per una PMI che sta adottando agenti di coding la questione è di budget e prevedibilità: i piani hanno limiti settimanali, i token di fascia alta sono la risorsa scarsa, e un team che li brucia in ricerche e edit meccanici se li ritrova esauriti per le decisioni architetturali dove servono davvero. Una policy di delega codificata in configurazione — uguale per tutti, versionabile, revisionabile — è un pezzo di governance concreta: trasforma «usate i modelli con buon senso» da raccomandazione a default operativo.

Sessione monolitica vs orchestrazione pilotfish

Tutto sul modello di punta

  • Ricerche, edit meccanici e test al prezzo del tier più alto
  • Il contesto della sessione si riempie di output di ricerca
  • Auto-critica: chi ha scritto il codice giudica sé stesso
  • Quota settimanale esaurito a metà settimana

Frontiera orchestra, tier giusti eseguono

  • Volume su Sonnet/Haiku: 96% delle prestazioni al 46% del costo (benchmark Anthropic)
  • La sessione principale resta pulita: i subagent riportano solo le conclusioni
  • Verifier Opus a contesto fresco: verifica indipendente, mai correzione
  • In abbonamento, Sonnet attinge anche al bucket settimanale dedicato

Il principio: la qualità la protegge la verifica indipendente, non il modello più caro usato ovunque.

✅ Da dove partire

Il percorso che suggerisco è in tre passi. Primo: leggere il README e i documenti in docs/ — anche senza installare nulla, sono fra le analisi più oneste in circolazione su costi, quota e comportamento reale del dispatch dei subagent. Secondo: installare dalla release pinnata con il runbook, revisionare il piano di merge proposto e riavviare la sessione. Terzo: provare il ciclo completo su un task reale con l'opt-in esplicito, e osservare nei log chi fa cosa — quali ruoli vengono dispatchati, cosa torna dal verifier.

Il segnale più ampio è che l'orchestrazione multi-modello sta diventando una pratica documentata e benchmarkata, non un trucco da power user: Anthropic pubblica i numeri, i tool la impacchettano, e la differenza fra chi la adotta e chi no si misura direttamente in bolletta e in quota residuo il venerdì pomeriggio. pilotfish è un ottimo posto dove studiarla, perché tutta la policy è leggibile in tre file di testo.

Domande frequenti su pilotfish

Cos'è pilotfish e a cosa serve?

È un layer di orchestrazione multi-modello per Claude Code, open source (MIT): tre file di configurazione sotto ~/.claude/ che fanno pianificare e decidere il modello di frontiera nella sessione principale, delegano il lavoro di volume a subagent Sonnet e Haiku con ruoli espliciti, e proteggono la qualità con verifier Opus a contesto fresco. Serve a ridurre costi e consumo di quota senza rinunciare alla qualità.

Quanto si risparmia davvero con l'orchestrazione multi-modello?

Nei benchmark pubblicati da Anthropic, un orchestratore di frontiera con worker Sonnet raggiunge il 96% delle prestazioni della configurazione monolitica per il 46% del costo. In un esperimento indipendente di audit a 12 worker, il costo scende da 14,50 dollari (tutto sul modello di punta) a 6,10 con worker Sonnet e 3,70 con worker Haiku. Sono casi best-case: la forma del risparmio, non una garanzia.

La delega ai subagent avviene automaticamente dopo l'installazione?

Non sempre, e il progetto lo documenta apertamente: istruzioni a priorità più alta del client possono sopprimere il dispatch automatico degli agent, e un CLAUDE.md utente non può scavalcarle. Quando si vuole il ciclo di orchestrazione completo conviene aggiungere alla richiesta l'opt-in esplicito suggerito nel README, che invoca pilotfish e il suo freno di dispatch.

pilotfish funziona anche con l'abbonamento Claude, o solo via API?

Funziona in entrambi i casi. Via API il risparmio è per token: il volume gira su tier più economici. In abbonamento si aggiunge un bonus: i limiti settimanali usano un bucket condiviso più un bucket aggiuntivo solo-Sonnet, quindi instradare l'esecuzione su subagent Sonnet attinge anche a quell'headroom dedicato. Richiede Claude Code 2.1.219 o successivo.

Parliamone

Se questo tema ti riguarda, scrivimi: confrontarsi su codice e AI è sempre tempo speso bene.