Modelli e impegno
/emet sceglie automaticamente un modello e un livello di ragionamento per ogni ruolo; non c’è nulla da cambiare a mano durante l’esecuzione. Ogni chiave è nel riferimento della configurazione.
| Ruolo | Modello | Impegno | Impostato da |
|---|---|---|---|
| Pianificazione (fasi 1–4) | Opus, tramite opusplan |
quello della tua sessione | te, una sola volta |
| Coordinatore, dalla fase 5 | Sonnet, tramite opusplan |
quello della tua sessione | te, una sola volta |
| Worker (fase 7) | Sonnet | medium |
agents/emet-worker.md, o models.worker |
Review, livello passive (diff solo di documenti) |
nessuno | — | emet assess |
Review, livello medium (normale modifica ai sorgenti) |
Opus | medium |
models.reviewer.medium |
Review, livello high (percorsi o sink a rischio) |
Opus | medium per impostazione predefinita |
models.reviewer.high |
| Triage dei log di CI (fase 8) | Haiku | — | models.triage |
Le due definizioni di agente (installate da install.sh in ~/.claude/agents/) fissano da sole model/effort nel frontmatter, così la scelta di modello e impegno del coordinatore non si trasmette mai a un worker o al reviewer. emet doctor segnala (senza mai bloccare) la scomparsa di uno dei due file. emet preflight blocca invece il dispatch quando manca emet-worker o emet-reviewer, perché la fase 6 e la fase 8 fanno il dispatch tramite subagent_type.
Instradamento per livello di rischio
La fase 8 esegue emet assess --base <trunk> --head <integration branch>, che classifica il diff in modo deterministico e stampa un JSON con il livello, i motivi e il modello/impegno consigliati per il reviewer:
passive: diff solo di documenti; non viene inviato alcun reviewer.medium: il reviewer usamodels.reviewer.medium.high: il diff tocca autenticazione, sicurezza, pagamenti, webhook, CI, l’installer, lockfile, migrazioni, un sink pericoloso (SQL grezzo, pipe-to-shell e simili) o un percorso che corrisponde areview.highRiskPaths. Il reviewer usamodels.reviewer.high, e l’auto-merge fa atterrare la PR solo con controlli verdi e nessun rilievo di review aperto.
Un ticket che tocca percorsi ad alto rischio può avere una riga Model: (per esempio Model: opus oppure Model: opus/high), che sostituisce models.worker solo per quel worker.
Triage con Haiku
Il coordinatore non legge mai un log di CI per intero. Un controllo fallito viene passato a un agente su models.triage (predefinito haiku), che restituisce al massimo circa 2k token con riferimenti file:line per la correzione.
Configurazione
Ogni chiave è facoltativa, e i valori predefiniti riproducono la tabella qui sopra:
{ "models": { "worker": { "model": "sonnet", "effort": "medium" }, "reviewer": { "medium": { "model": "opus", "effort": "medium" }, "high": { "model": "opus", "effort": "medium" } }, "triage": "haiku" }, "review": { "highRiskPaths": [] }}review.highRiskPaths è un elenco di sottostringhe di percorso aggiuntive, senza distinzione tra maiuscole e minuscole, che impongono il livello high. Per maggiore attenzione sulle ondate rischiose, alza models.reviewer.high.effort (per esempio a high).
Perché un solo reviewer
Perché un solo reviewer a contesto pulito invece di una ventola di più punti di vista: nessun benchmark pubblico confronta direttamente le due soluzioni, ma una ventola rilegge l’intero diff una volta per ogni punto di vista e in questo repo è rimasta bloccata per oltre un’ora, mentre i resoconti di Anthropic e di terze parti sui modelli di classe Opus suggeriscono che l’aggiornamento del modello valga quanto i punti di vista aggiuntivi. Per un’ondata ad alta posta in gioco, esegui poi /code-review ultra a mano; /emet non lo invia mai da solo.
Cosa imposti una volta, di persona
/emet non può cambiare queste impostazioni durante l’esecuzione:
model: "opusplan"in~/.claude/settings.json: è ciò che fa girare le fasi 1–4 su Opus e dalla fase 5 in poi su Sonnet, senza bisogno di/model.emet doctoravvisa (senza mai modificare le tue impostazioni) se non è impostato.- Un impegno di sessione
mediumohighanzichéxhigh: i worker e il reviewer hanno già il proprio impegno a prescindere dal tuo, e un valore globale alto aggiunge per lo più costi ai turni del coordinatore (contabilità del dispatch, merge, report) che non ne hanno bisogno. - Un
permissions.defaultModein grado di funzionare senza supervisione (auto,acceptEditsobypassPermissions), più regolepermissions.denyche bloccanogit push * main|masteregit push --force *.emet doctoravvisa su entrambi, perché un’ondata che si ferma su una richiesta di permesso o che può forzare il passaggio oltre il branch trunk vanifica lo scopo dell’esecuzione senza supervisione.
Sono punti di partenza, non numeri definitivi. Opus 5.5 è stato lanciato il 2026-09-22, e la scelta di impegno e modello per gli agenti di programmazione è ancora un campo attivo; ritara dopo alcune ondate reali invece di considerare questa tabella definitiva.