Caso studio
Coordination Hub
Uno spazio per coordinare il lavoro con più IA e capire cosa ha proposto ciascuna, cosa è stato rivisto e quale decisione spetta a me.
L’ho iniziato per risolvere un problema del mio lavoro: passando da un’IA all’altra perdevo contesto e dovevo ricostruire le decisioni. L’Hub, la cui interfaccia sperimentale si chiama Testigo, riunisce progetti, conversazioni e memoria revisionata. Il mio obiettivo è seguire il lavoro senza confondere una proposta con un risultato verificato.
Sperimentale
- Pilota
- prodotto proprio in sviluppo
- L0–L3
- autonomia con autorità umana
- MCP
- coordinamento tra sessioni separate
Collaborazione: Ho lavorato con Claude e Codex per implementare e revisionare il sistema. Mantengo la direzione del prodotto, i criteri di accettazione e le decisioni che richiedono autorizzazione.
Interfaccia reale con dati dimostrativi. Queste schermate provengono dallo sviluppo di Testigo e non contengono conversazioni di lavoro né informazioni di LALIGA. I fornitori risultano disconnessi in questa sessione isolata; le schermate mostrano il design della supervisione, non un’esecuzione autonoma in corso.
Il progetto, strato per strato
Piccole decisioni costruiscono il sistema.
Organizzo il contesto per progetto e conversazione. Ogni intervento conserva il suo autore e posso controllare la disponibilità degli strumenti senza lasciare lo spazio di lavoro. Interfaccia reale con dati dimostrativi.
La memoria distingue il materiale ricevuto dalla conoscenza revisionata. Mi interessa che la persona possa consultare e controllare quali informazioni vengono riutilizzate, invece di presumere che tutto ciò che è scritto sia valido. Interfaccia reale con dati dimostrativi.
Creare uno spazio separato rende esplicito dove inizia ogni progetto. È una parte dell’esperienza iniziale che continuo a testare per ridurre la configurazione ed evitare di mescolare i contesti. Interfaccia reale con dati dimostrativi.
Ricerca
Il problema è emerso mentre lavoravo. Copiavo risposte tra assistenti, ripetevo il contesto e perdevo tempo a verificare cosa fosse stato fatto davvero. Ho voluto separare tre elementi spesso confusi: la richiesta, la proposta e l’evidenza del risultato.
Ho definito livelli di autonomia affinché una raccomandazione non diventasse da sola un’autorizzazione. L0 permette di osservare; L1 e L2 delimitano le azioni in base alla loro portata; L3 riserva alla persona le decisioni di maggiore impatto.
Metodi:Diagnosi del costo reale dell’intermediazione umana · Confronto con framework esistenti e decisione di costruire su misura · Modello di autonomia L0–L3, con L3 riservato alla persona · Criteri di successo misurabili prima di scrivere codice.
Prototipo
Ho organizzato l’interfaccia attorno a un compito concreto: capire cosa richiede la mia attenzione. A sinistra colloco il contesto; al centro la conversazione; a destra lo stato degli strumenti. La memoria si consulta quando serve, senza occupare permanentemente lo spazio di lettura.
Il registro degli eventi conserva la traccia delle operazioni. Su di esso sono costruite le viste che permettono di leggere una conversazione e rivederne le decisioni senza percorrere l’intero registro tecnico.
L’IA nel processo
In questo caso uso l’IA per costruire uno strumento che deve anche aiutarmi a supervisionarla. Alterno implementazione e revisione con Claude e Codex e confronto le loro conclusioni con codice e test. Due risposte concordanti non mi bastano per considerare qualcosa validato.
- Strumento
- Claude · Codex, coordinati tra loro dall’Hub stesso
- Fase
- Intero ciclo: specifica, implementazione, revisione incrociata e verifica
- Contributo umano
- Problema, criteri di accettazione, architettura decisionale, priorità e ogni approvazione irreversibile
- Risultato dell’IA
- Implementazione, test e revisioni indipendenti con rilievi prioritizzati ed evidenze
- Criteri di selezione
- Evidenze verificabili, reversibilità, isolamento tra progetti, assenza di segreti e test superati
- Limiti individuati
- Nessuna IA amplia i propri permessi, chiude una decisione irreversibile o dichiara consenso senza revisione indipendente
- Decisione finale
- Autorità umana su tutto ciò che è irreversibile. Le IA decidono le azioni reversibili e ne lasciano traccia
Sviluppo
L’Hub offre operazioni tramite MCP per consultare messaggi, registrare risposte e fornire evidenze da strumenti compatibili. Il contratto distingue inviare, ricevere, elaborare e verificare: sono stati diversi e voglio che anche l’interfaccia li tratti così.
Mi sono concentrato su recupero, reinvii e separazione tra progetti. Sono situazioni poco appariscenti, ma decisive perché uno strumento di coordinamento non aggiunga più incertezza di quanta ne risolva.
Validazione
Una revisione ha individuato un problema rivelatore: si poteva chiudere un tema per consenso senza verificare una revisione indipendente. Abbiamo corretto il contratto per esigere quella revisione e conservarne l’evidenza. Questa scoperta ha cambiato il mio criterio progettuale: uno stato positivo deve spiegare su cosa si fonda.
La versione iniziale documentava 95 test automatizzati. È un’evidenza storica dello sviluppo, non una garanzia che il prodotto attuale sia finito. L’Hub rimane in fase pilota e la facilità d’uso deve ancora essere valutata con persone; una schermata o un test del codice non sostituiscono questa validazione.
Dal prototipo al componente
Organizzazione del sistema
- foundations / livelli di autonomia · stati di disponibilità · classi di visibilità
- organisms / coda di attenzione · cronologia della conversazione · pannello di consenso
- organisms / registro decisioni · inventario agenti · catena delle evidenze
Codice · evidenza di implementazione
const requiredReviewers = [
...new Set(target.to.filter((agent) => agent !== parsed.from)),
]
if (requiredReviewers.length === 0) {
throw new Error('Consensus requires an independent review')
}
const reviewedBy = requiredReviewers.filter((reviewer) =>
events.some(
(event) =>
event.correlationId === target.id &&
event.from === reviewer &&
['review', 'objection', 'result'].includes(event.messageKind),
),
)
if (reviewedBy.length !== requiredReviewers.length) {
throw new Error('Consensus requires an independent review from: ...')
}
const level =
parsed.reversibility === 'irreversible' ? 'L3' : topicLevel
if (level === 'L3' && parsed.from !== 'manuel') {
throw new Error('L3 consensus may only be resolved by Manuel')
}src/store.mjs · resolveTopic()
Il cuore del sistema: il controllo del consenso. Prima bastava che un agente lo dichiarasse; ora esige la revisione indipendente di tutti i revisori richiesti e deriva il livello invece di impostarlo.
consensusState = 'reviewed' | 'provisional' | 'lapsed' ← derivato dalle revisioni registrate, non dichiarato dall’agente che decide
Cosa ho imparato
Separare intelligenza e autorità: fare in modo che una parte proponga e un’altra deterministica autorizzi impedisce di confondere una raccomandazione con una decisione.
Un accordo senza revisione indipendente non è consenso, ma un’opinione con un timbro. Se il sistema non lo verifica, prima o poi succederà.
L’indisponibilità dovuta alle quote non è eccezionale, ma normale: il design deve degradare in modo esplicito invece di bloccarsi.
Ho imparato a registrare le decisioni durante il lavoro: ricostruirne dopo il contesto costa di più e può lasciare lacune.
Domanda aperta:Che cosa deve vedere una persona per supervisionare con fiducia il lavoro di più agenti autonomi senza leggere tutto ciò che producono?
Contatti
Parliamone.
Se pensi che il mio modo di lavorare sia adatto al tuo team, o hai un prodotto o una ricerca che vorresti sviluppare, mi piacerebbe saperne di più. Raccontami di cosa hai bisogno e a che punto sei. Leggerò personalmente il tuo messaggio.
Puoi trovarmi anche su LinkedIn