ADHD: aggiungere ai Coding Agent un motore di ragionamento parallelo Tree-of-Thought

"Il README di ADHD serve a confermare posizionamento del progetto, pacchetto npm adhd-agent, licenza MIT, installazione, meccanismo a due fasi e perimetro dei risultati eval."
"Il documento how-it-works serve a confermare le due fasi Diverge/Focus, i rami isolati, il controllo di concorrenza tramite semaphore e il costo in token lineare."
"Il documento vs-cot-and-tot serve a confermare le differenze strutturali tra ADHD, Chain-of-Thought e Tree-of-Thought, oltre al fatto che frame non significa persona."
"Il documento frames serve a confermare i 15 frame cognitivi, codeMode, wild slot e criteri per i frame custom."
"Il documento when-to-use serve a confermare scenari di uso/non uso, numero di chiamate di default, intervallo 30-90 secondi e posizionamento di costo."
"L'articolo di The New Stack serve a confermare il contesto di ecosistema in cui ADHD è stato presentato da un media tecnico di terze parti."
Quando una CLI chiama un LLM e ogni tanto resta bloccata per 90 secondi, come progetti retry e timeout? La risposta da manuale è: exponential backoff con jitter, un timeout assoluto e un retry automatico. Non è una risposta sbagliata, ma forse senti che manca una domanda: il problema è davvero la rete o è stato scelto il modello sbagliato? Più l’utente aspetta, il pulsante non dovrebbe diventare sempre più “caldo”, magari fino a permettere un clic che sposta la richiesta su un modello più veloce?
ADHD serve proprio a questo tipo di problema. Non è un prompt che dice all’Agent “pensaci ancora”, ma una struttura di ragionamento parallelo per AI coding agent: prima più rami isolati divergono simultaneamente da prospettive cognitive diverse, poi un critic separato valuta, raggruppa, taglia le trappole e approfondisce i sopravvissuti. Questa guida spiega meccanismo, confini e criteri d’uso dello skill.
Cos’è ADHD (non è una tecnica di prompt)
Il posizionamento di ADHD è chiaro: prova a correggere la convergenza prematura nel ragionamento autoregressivo, non ad aggiungere parole incoraggianti al prompt.
Un modello autoregressivo genera token uno dopo l’altro. Appena i primi passi scelgono una direzione, il resto del testo tende a svilupparsi attorno a quella direzione. È un meccanismo efficiente, ma nei problemi di ingegneria aperti ha un effetto collaterale: la prima risposta plausibile diventa un’ancora, e il modello scivola lungo il percorso più comune, più simile ai dati di addestramento. Quella risposta è spesso corretta da manuale, ma spesso manca anche opzioni non ovvie e più preziose.
Anche un prompt normale può chiedere “elenca più soluzioni e poi confrontale”, “ragiona da prospettive diverse”, “evita di concludere troppo presto”. Il problema è che quei rami si contaminano ancora nello stesso contesto. Il modello genera e valuta insieme; una volta scritto un primo orientamento, i rami successivi fanno fatica a liberarsene davvero.
ADHD usa una scelta più rigida: nella fase di divergenza divide il lavoro in N chiamate Agent SDK completamente isolate. Ogni ramo vede solo il problema originale, un frame cognitivo e un system prompt che vieta la valutazione. Tra i rami non c’è contesto condiviso. Solo nella fase di revisione un critic separato valuta, raggruppa, pota e approfondisce tutto.
In una frase: CoT fa pensare un cervello più lentamente, Tree-of-Thought fa cercare un cervello più in largo, ADHD fa pensare più cervelli in parallelo e in modo diverso, poi lascia scegliere a un revisore.
Meccanismo a due fasi: muro duro tra Diverge e Focus
Il nucleo di ADHD sono due fasi: Phase 1 Diverge e Phase 2 Focus. In mezzo c’è un muro duro. Durante la divergenza la valutazione è proibita; solo nella fase di valutazione è permesso convergere.

Phase 1 Diverge: N percorsi concorrenti e isolati
La prima fase sceglie N frame cognitivi, di default N=5, poi avvia in parallelo N query Agent SDK isolate. Ogni ramo riceve solo tre elementi:
- Il problema originale.
- Il prompt di prospettiva di un frame, per esempio per riporre il problema in termini di latenza, layout di memoria, regolamentazione, on-call o inversione.
- Un system prompt che vieta valutazione, ranking ed esitazione.
I rami non possono vedersi. Il ramo con prospettiva da audit regolatorio non vede cosa ha scritto il ramo speedrunner; il ramo da ingegnere hardware non viene ancorato in anticipo dal ramo “bambino di 10 anni”. Ogni ramo è una sessione stateless indipendente. L’anchoring non viene represso dall’autodisciplina del modello: viene tagliato dalla struttura.
La concorrenza è controllata da un semaphore, con concurrency=4 di default. Il costo in token cresce linearmente con il numero di rami, O(N×costo per ramo), non N², perché i rami successivi non rileggono l’intero contenuto dei rami precedenti.
Phase 2 Focus: una chiamata critic separata
La seconda fase passa a una chiamata critic separata. Fa tre cose:
- score: assegna a ogni ramo un punteggio da 0 a 10 su novelty, feasibility e fit, e per ogni trappola scrive una ragione meccanicistica.
- cluster: raggruppa per underlying angle, non per parole chiave superficiali.
- deepen top-K: approfondisce i sopravvissuti, K=3 di default, aggiungendo schizzo, rischio portante, primo passo e 3-5 sotto-idee.
La scelta chiave è la separazione meccanica tra generator e critic. La fase generator vieta la valutazione; la fase critic deve valutare. Non sono due promesse verbali dentro la stessa sessione, ma due chiamate API diverse.
La forma di una chiamata a ramo isolato è più o meno questa:
const branches = await Promise.all(
frames.map((frame) =>
withSemaphore(concurrency, () =>
callLLM({
systemPrompt: `${frame.vantage}\n\nFORBIDDEN: evaluation, ranking, hedging. JSON array out.`,
userPrompt: `${problem}\n\n${context ?? ""}`,
}),
),
),
);
Tornando al problema retry/timeout iniziale, la baseline tende a dare l’ibrido standard: timeout del primo token a 15 secondi, timeout tra token a 30 secondi, limite assoluto a 90 secondi e un retry automatico. Il valore di ADHD non è scrivere questa risposta più lunga, ma far emergere anche opzioni come “un pulsante che diventa sempre più caldo mentre aspetti e, con un clic, annulla e sposta su un modello più veloce”, segnalando allo stesso tempo idee curiose ma insidiose come “streaming dei token al contrario” o “fatturare in base alla pazienza”.
Confronto strutturale con CoT/ToT
| Dimensione | Chain-of-Thought (CoT) | Tree-of-Thought (ToT) | ADHD |
|---|---|---|---|
| Numero di thread | singolo, lineare | un solo albero attraversato | N percorsi paralleli e isolati |
| Contesto condiviso | sì, tutto condiviso | sì, di solito parzialmente condiviso | no, isolamento con muro duro |
| generator/critic | valutazione nello stesso turno | lo stesso modello alterna generazione e valutazione | fasi separate, chiamate separate, posture opposte |
| Motore dei rami | nessun ramo esplicito | varianti del passo successivo | frame cognitivi che ripongono l’intero problema |
| Parallelismo | assente | per lo più sequenziale | concorrenza reale, controllata da semaphore |
| Problemi adatti | logica multi-step, matematica | ricerca, pianificazione, puzzle | design e ideazione di ingegneria aperti |
Tre differenze portanti
Prima: ADHD è isolamento, non ricerca. I rami di ToT si sviluppano comunque nello stesso albero e i nodi iniziali influenzano quelli successivi. I rami di ADHD non possono vedersi durante la divergenza, quindi l’anchoring viene eliminato per costruzione.
Seconda: ADHD usa frame, non varianti del next-step. ToT spesso espande le opzioni dentro “quale passo fare dopo”; ADHD ripone l’intero problema da un’altra posizione cognitiva. Non ritocca un parametro, ma fa guardare il problema al modello dalla latenza, dai vincoli fisici, dalla responsabilità regolatoria o dalla pressione di un on-call alle 3 di notte.
Terza: la separazione generator-critic è meccanica, non promissoria. Dire nella stessa sessione “prima non valutare” lascia comunque spazio a confronti sotterranei durante la generazione. ADHD divide la cosa con chiamate diverse, system prompt diversi e posture diverse.
Vale anche chiarire che frame non significa persona. Una persona dice “sei questo ruolo”; un frame dice “riponi l’intero problema con questi vincoli e questo vocabolario”. La prima cambia l’etichetta identitaria, il secondo cambia il quadro del problema.
15 frame cognitivi e come crearne uno custom
ADHD include 15 frame cognitivi per torcere lo stesso problema in direzioni diverse. codeMode tende di default verso prospettive di codice e design, e ogni esecuzione conserva un wild slot per evitare una divergenza troppo ordinata.
Esempi di frame integrati
| frame | Prospettiva |
|---|---|
| Ingegnere hardware | Ragiona con latenza, layout di memoria e vincoli fisici |
| Audit regolatorio | Ragiona da compliance, rischio e tracciabilità della responsabilità |
| Bambino di 10 anni | Ragiona con linguaggio e logica elementari |
| Competitor che prova a romperlo | Cerca vulnerabilità e punti deboli da una prospettiva avversaria |
| Biologia | Ragiona con evoluzione, ecologia e vincoli metabolici |
| Logistica | Ragiona con supply chain, magazzino e vincoli di trasporto |
| Game design | Ragiona con esperienza del giocatore, bilanciamento e feedback loop |
| Mercato | Ragiona da prezzo, concorrenti e posizionamento |
| Inversione | Parte dal risultato e ragiona all’indietro, assumendo che sia già riuscito |
| 0 dollari o budget infinito | Ragiona con vincoli di budget estremi |
| Rimuovi l’assunzione portante | Togli l’assunto che dai per scontato |
| Speedrunner | Raggiunge l’obiettivo con il minor numero di passi |
| Colonia di formiche | Ragiona con collaborazione distribuita e senza centro |
| On-call alle 3 di notte | Ragiona in urgenza, stanchezza e risorse limitate |
| wild slot | Mantiene una prospettiva casuale |
Regole di selezione
- Lo stesso problema e lo stesso seed scelgono deterministicamente lo stesso gruppo di frame, utile per la riproducibilità.
- codeMode tende di default verso prospettive code/design, quindi non consegna un problema di ingegneria solo a metafore irrilevanti.
- Ogni esecuzione conserva un wild slot, così il sistema ha una possibilità di uscire da una cornice troppo regolare.
Frame custom
Un frame custom non deve essere lungo. Deve però cambiare davvero il problema. Un buon frame soddisfa almeno due condizioni su tre:
- Ha un vocabolario distintivo, non è solo “ragiona da più angoli”.
- Ha una postura distintiva: avversaria, costruttiva, ingenua, a vincoli estremi.
- Ha una distorsione riproducibile, cioè cambia stabilmente la direzione del ragionamento ogni volta che lo applichi.
Per esempio, per un prodotto in abbonamento puoi scrivere un frame così:
name: subscription_retention
vocabulary: ["subscription", "retention", "churn", "renewal", "lifecycle"]
stance: "Think in terms of subscription churn and lifetime value, not one-off transactions"
distortion: "Assume users will churn; design mechanisms that reduce churn"
Questo frame non si limita a chiamare il modello “responsabile crescita”; spinge il problema dentro i vincoli di retention, churn e lifetime value.
Quando usarlo e quando no
ADHD è uno strumento da punto decisionale, non da ogni battitura. Il criterio più semplice è questo: se un junior può trovarlo con Google, vince la baseline; quando un senior direbbe “fermiamoci un minuto e guardiamola da un’altra angolazione”, entra in scena ADHD.
Scenari adatti
| Scenario | Perché è adatto |
|---|---|
| Decisioni di architettura/design | Costo alto, servono argomenti da più angoli, facile perdere trappole |
| Design di interfacce API/SDK/CLI | I mental model degli utenti sono diversi e servono più ingressi |
| Naming | Molta ambiguità semantica, ruoli diversi leggono significati diversi |
| Debugging sfocato | La causa non è chiara; prima bisogna generare ipotesi e poi verificarle |
| Pianificazione di migrazioni/refactoring | Prestazioni, sicurezza, compatibilità e ritmo entrano in conflitto |
| Ampliare una code review | Serve simulare l’attenzione di reviewer diversi |
| Strategia di prezzo | Tanti vincoli business, adatti a prospettive avversarie e di mercato |
Scenari non adatti
| Scenario | Perché non è adatto |
|---|---|
| Cercare fatti | Esiste una sola risposta corretta, non serve divergere |
| Correggere bug con causa nota | La catena causale è chiara, divergere rallenta la correzione |
| Problemi risolvibili con una ricerca | La baseline è più veloce ed economica |
| Loop interno/a ogni battitura/bassa latenza | Un ritardo di 30-90 secondi non è accettabile |
| Problemi con una sola risposta corretta | Più rami non aggiungono informazione utile |
Installazione e attivazione
Prima di installarlo, fai una revisione di sicurezza dello skill di terze parti. Leggi almeno SKILL.md: cosa chiede all’Agent, se chiama comandi esterni, se legge o scrive directory che non vuoi toccare. Puoi usare come riferimento la guida pratica alla revisione di sicurezza degli skill OpenClaw.
Installazione universale
Il comando universale è:
npx skills add UditAkhourii/adhd
Rileva automaticamente circa 50 Agent, tra cui Claude Code, Cursor, Antigravity, Codex, Cline, Gemini CLI e Windsurf, e installa il file skill corretto.
Installazione specifica per Codex
Se il comando universale non registra lo skill in Codex, puoi forzare il target:
npx skills add UditAkhourii/adhd -a codex -g
Puoi anche installarlo a mano:
curl -o ~/.codex/skills/adhd/SKILL.md https://raw.githubusercontent.com/UditAkhourii/adhd/main/SKILL.md
Dopo l’installazione manuale, riavvia Codex per ricaricare la directory degli skill.
Modalità di attivazione
L’attivazione è:
/adhd "problema"
Per esempio:
/adhd "Una CLI che chiama un LLM ogni tanto resta bloccata per 90s: come progettare retry/timeout/UX?"
Non collegarlo a ogni completamento. L’uso più sensato è attivarlo esplicitamente su architettura, design di interfacce, naming e debugging sfocato.
Costo e valore
Dati di costo
| Dimensione | Dato |
|---|---|
| Chiamate LLM | circa 10: N=5 divergenze + 1 valutazione + 1 clustering + K=3 approfondimenti |
| Tempo | di solito 30-90 secondi |
| Moltiplicatore di costo | 5-10 volte un colpo singolo |
| Costo in token | O(N×costo per ramo), crescita lineare, non N² |
Posizionamento del valore
Il posizionamento ufficiale è: spendere nell’ordine di 0,30 dollari per allargare una decisione architetturale da 50.000 dollari. Non significa far girare ADHD su ogni piccolo problema. Ricorda piuttosto che il costo di un errore in una decisione ingegneristica aperta può superare di molto una singola inferenza multi-ramo.
Nei progetti reali devi considerare anche il costo di contesto. Dentro Claude Code o sessioni Agent simili, ogni ramo può caricare contesto base di progetto, descrizioni degli strumenti e regole del repository. In teoria l’algoritmo è O(N×costo per ramo); in fattura somiglia di più a N×(base context + branch work). Per questo è adatto a “dovremmo progettare così?”, non a “come completo la prossima riga?”.
Interpretare i risultati eval
Il progetto ADHD presenta una serie di eval autodichiarate: 6 problemi di ingegneria aperti, stesso modello, giudice LLM indipendente, ordine A/B casuale. Questo perimetro va dichiarato: non è un benchmark accademico di terze parti e non è una valutazione umana.
Tabella comparativa a cinque dimensioni
| Dimensione | ADHD | baseline | Miglioramento |
|---|---|---|---|
| breadth (ampiezza delle soluzioni) | 9.00 | 4.83 | 1.9x |
| novelty (novità) | 7.83 | 2.67 | 2.9x |
| trap detection (rilevamento trappole) | 9.50 | 1.83 | 5.2x |
| actionability (azionabilità) | 9.50 | 6.50 | 1.5x |
| builder usefulness (utilità per chi costruisce) | 7.67 | 6.83 | 1.1x |
Nota sul perimetro
Questi numeri sono utili per spiegare una direzione, non per citarli come punteggi autorevoli. Non dimostrano che “ADHD è sempre più forte di ogni strategia di ragionamento”. Sostengono una tesi più stretta: su problemi di ingegneria aperti, isolamento della divergenza più critic separato può cambiare in modo evidente ampiezza, novità e rilevamento delle trappole.
Nel testo, quindi, non conviene scrivere “leader nei benchmark di settore”. Una formula più solida è: “nelle eval autodichiarate del progetto, ADHD ha vinto 5 problemi aperti su 6, con uno scarto particolarmente grande in trap detection”. Tenere chiaro il confine dei fatti aiuta il lettore a usare bene questi dati.
Conclusione
La cosa interessante di ADHD non è che scrive risposte più lunghe, ma che trasforma il “pensare in modo diverso” in una struttura: i rami divergenti sono isolati, i frame ripongono il problema, il critic arriva separatamente a potare. Questa struttura colpisce esattamente una debolezza comune dei Coding Agent nei problemi di ingegneria aperti: convergere troppo presto sulla prima risposta che sembra buona.
Mettilo nei punti decisionali, non nel loop quotidiano a ogni battitura. Architettura, interfacce, naming, migrazioni e debugging sfocato valgono 30-90 secondi in più; cercare fatti, correggere bug con causa nota o scrivere una riga di boilerplate sono compiti più adatti alla baseline.
Se stai organizzando la tua toolchain di programmazione IA, puoi proseguire con il panorama degli strumenti di coding IA 2026 per collocarlo nella mappa degli strumenti, oppure leggere l’analisi dell’architettura DeepAgents per capire come sub-agent e strumenti di planning organizzano catene di ragionamento più lunghe.
Installare e attivare ADHD in Codex o Claude Code
Installa lo skill ADHD e attiva il ragionamento divergente parallelo nei punti decisionali chiave: architettura, naming, debugging sfocato.
- 1
Step 1: Revisionare prima lo skill di terze parti
Apri il file SKILL.md del progetto e verifica cosa chiede all'Agent, quali comandi chiama, quale contesto legge e se richiede permessi aggiuntivi. Non installare skill di terze parti alla cieca. - 2
Step 2: Eseguire il comando universale
Esegui npx skills add UditAkhourii/adhd. Il comando riconosce automaticamente circa 50 Agent, tra cui Claude Code, Cursor, Antigravity, Codex, Cline, Gemini CLI e Windsurf. - 3
Step 3: Forzare il target in Codex
Se il comando universale non registra lo skill in Codex, esegui npx skills add UditAkhourii/adhd -a codex -g oppure scarica manualmente SKILL.md in ~/.codex/skills/adhd/. - 4
Step 4: Attivarlo nei punti decisionali
Usa /adhd "il tuo problema". Dai priorità a problemi aperti come architettura, design di interfacce, naming e debugging sfocato; evita ricerche di fatti e completamento a ogni battitura.
FAQ
Qual è la differenza concreta tra ADHD e Tree-of-Thought?
ADHD richiede un modello locale o serve Claude?
Quanto costa e quanto è lenta una esecuzione di ADHD?
Quali compiti sono adatti e quali no?
Come lo installo e lo attivo in Codex o Claude Code?
Un frame è la stessa cosa di una persona?
12 min di lettura · Pubblicato il: 8 giu 2026 · Aggiornato il: 14 lug 2026
Toolbox AI Agent
Se arrivi dalla ricerca, il modo più veloce per orientarti è passare all’articolo precedente o successivo della stessa serie.
Precedente
female-portrait-director: trasformare i prompt per ritratti IA in uno Skill riutilizzabile
female-portrait-director è un progetto open source che trasforma i prompt per ritratti IA in uno Skill strutturato e riutilizzabile. Qui trovi blocco dei parametri, routing on-demand, espansione registica, limiti di sicurezza e un metodo in 5 passi per creare il tuo Skill di prompt.
Parte 3 di 4
Successivo
Questo è l’articolo più recente della serie per ora.



Commenti
Accedi con GitHub per lasciare un commento