Come funziona AITS
Il modello produce, il motore valida. In AITS 3 la specifica del metodo, il motore che la fa rispettare e gli adattatori per ogni runtime vivono separati, così cambiando modello o ambiente le regole restano le stesse.
Architettura a quattro livelli
La specifica descrive il metodo senza nominare fornitori e il motore lo applica senza chiamare modelli, mentre gli adattatori portano tutto dentro Claude Code, in una skill o in un client MCP. La scelta di quale modello serve ogni livello sta nella configurazione, che resta tua.
spec/ il metodo: agenti, rules.yaml, grafi, schemi, riferimenti, playbook
packages/core/ aits-core: il motore (validazione, regole e gate, registro, memoria, calibrazione, export)
packages/cli/ CLI aits, server aits-mcp, hook di runtime, endpoint A2A, builder degli adattatori, eval
plugins/aits/ adattatore Claude Code (generato da spec/)
skills/aits/ adattatore Agent Skills con il motore in scripts/aits.mjs (generato da spec/)
aits.config.yaml tuo: quale modello serve ogni livello, embedder della memoria, chiave di firmaRegole inviolabili
Le regole sono dichiarate in spec/rules.yaml e il motore le valuta dopo ogni output, in ogni modalità di controllo umano.
| Regola | Condizione | Effetto |
|---|---|---|
| R1 | Un agente diverso dal Meta-Orchestratore prende una decisione | Output rifiutato, gate bloccante |
| R2 | Un agente segnala una lacuna nei dati ad alto impatto | L'Analitico deve girare di nuovo, gate bloccante |
| R2a | L'Analitico segnala una lacuna ad alto impatto | Gate bloccante |
| R3 | Il Critico-Validatore trova una severità uguale o superiore a 10 | Devono girare Etico-Governance o Predittivo-Strategico, gate bloccante |
| R4 | Il Critico dice stop e l'Ottimizzatore dice vai | Etico-Governance deve arbitrare, gate bloccante |
| R5 | Il Creativo-Generativo propone 4 o più opzioni | Deve girare il Foresight, gate consultivo |
| R6 | Etico-Governance trova una linea rossa | Gate bloccante |
| R7 | Lo stesso agente fallisce due volte la validazione dello schema | Gate bloccante |
| R8 | Un agente alza un hitl_flag bloccante | Gate bloccante |
Gate umani
Davanti a un gate la persona può rispondere proceed, provide_context, override o abort, e l'override chiede una giustificazione e abbassa il tetto della confidenza finale. Ogni risposta viene registrata con il canale da cui arriva: il modulo che il client MCP mostra direttamente all'utente (elicitation), la riga di comando, un sistema A2A oppure le parole della persona riportate dal modello.
Quest'ultimo canale esiste per le sessioni senza nessuno davanti allo schermo, come quelle pianificate o lanciate con claude -p, dove il modulo non riceve risposta. Il motore accetta la risposta riportata solo se contiene le parole della persona e la marca come agent_relayed, mentre un rifiuto esplicito del modulo lascia il gate aperto.
Modalità di controllo
supervised(supervisionata)- la persona rivede e può correggere la rotta dopo ogni agente.
autonomous(autonoma)- il sistema procede da solo e si ferma ai gate obbligatori.
review(revisione)- il sistema completa l'analisi e la persona rivede tutto alla fine.
in tutte e tre le regole inviolabili valgono allo stesso modo.
Confidenza calcolata
La confidenza mostrata all'utente parte dall'input critico più debole, scende a low per un agente le cui previsioni passate non battono la frequenza di base, si ferma a medium quando tutti gli output vengono da una sola famiglia di modelli (o le famiglie non sono dichiarate) e si ferma a medium anche dopo un override umano. Il report mostra fianco a fianco quella dichiarata dall'orchestratore e quella calcolata, con le ragioni.
Diversità tra modelli
Uno studio della Cornell presentato a ICML 2025, Correlated Errors in Large Language Models (arxiv.org/abs/2506.07962), ha osservato che su una delle classifiche analizzate due modelli che sbagliano la stessa domanda scelgono la stessa risposta sbagliata il 60% delle volte, con una correlazione più alta tra modelli dello stesso sviluppatore. Per questo gli agenti che stimano rischi e probabilità girano più volte in modo indipendente, su famiglie di modelli diverse quando sono configurate, e le loro posizioni vengono aggregate senza dibattito: mediana dei numeri, conteggio delle posizioni e un rapporto di minoranza che conserva chi non è d'accordo.
Memoria e calibrazione
Ogni decisione chiusa salva le sue previsioni, quelle dichiarate dagli agenti più i rischi con severità da 10 in su e le probabilità degli scenari, e quando arriva l'esito lo registri con aits outcome. Il motore calcola il Brier score per agente, famiglia di modelli e livello, e da venti previsioni risolte per agente comincia a ricalibrarle da solo.
aits recall "<domanda>"- trova decisioni passate simili per significato, non per tag
aits outcome <decisione> <previsione> 0|1- registra cosa è successo
aits calibrate- mostra Brier score, skill sulla frequenza di base e affidabilità
aits patterns scan- propone nuovi archetipi da gruppi di almeno tre decisioni simili, che una persona approva o rifiuta
Registro verificabile
aits export scrive report.md, envelopes.json, log.jsonl, verification.json e trace.otlp.json, una traccia OpenTelemetry con struttura e hash ma senza contenuti. Con aits keys generate e una chiave nella configurazione ogni riga del registro viene firmata con Ed25519, e qualunque modifica successiva rompe la catena in un punto preciso.
Prova a manomettere un registro nella demo