Chiunque abbia usato un modello linguistico ha già un’idea di cosa sia una chat: si scrive, si legge la risposta, si scrive ancora. Molti immaginano che un agente sia la stessa cosa con qualche strumento in più. Non è così: la differenza non è di grado ma di natura.
In questo articolo raccontiamo come costruiamo gli agenti in AIDeskPro: cosa li distingue da una chat, di cosa sono fatti, e soprattutto il metodo con cui organizziamo il lavoro perché un agente porti a termine compiti lunghi in modo affidabile.
Per non restare nell’astratto useremo un esempio concreto lungo tutto l’articolo: un agente commerciale. Ha a disposizione i trascritti delle videochiamate fatte con un cliente, lo storico delle offerte precedenti e il catalogo dei servizi dell’azienda, e deve produrre un’offerta commerciale pronta da inviare.
Una chat è un turno, un agente è un ciclo
La chat funziona a turni. L’utente pone una domanda, il modello risponde, l’iniziativa torna all’utente. Il modello non decide mai cosa fare dopo: aspetta.
Un agente ribalta questo schema. Riceve un obiettivo, non una domanda, e poi entra in un ciclo: osserva la situazione, decide un’azione, la esegue, verifica il risultato, e ricomincia. L’iniziativa è sua finché l’obiettivo non è raggiunto o finché non incontra qualcosa che non può risolvere da solo.
Due cose lo definiscono: l’autonomia nella scelta delle azioni e una condizione di stop esplicita. Senza la prima è una chat, senza la seconda è un processo che gira all’infinito.
Nell’esempio, l’utente non chiede “cosa ha detto il cliente sui tempi di consegna?”. Dice “prepara l’offerta per questo cliente”. Da lì in poi è l’agente a decidere quali trascritti leggere, cosa cercare nel catalogo, cosa confrontare con le offerte passate, quando ha finito.
Il perimetro rende possibile l’autonomia
Prima ancora di parlare di come è fatto un agente, va detto dove vive. Gli agenti di AIDeskPro girano in una sandbox: un ambiente isolato, con il proprio filesystem, i propri strumenti, il proprio spazio di lavoro. Dentro quel perimetro l’agente è padrone assoluto. Può creare file, cancellarli, lanciare programmi, riorganizzare tutto, senza chiedere il permesso a nessuno.
Questa scelta non nasce da un eccesso di fiducia nel modello. Nasce dalla constatazione opposta: qualunque sistema autonomo che lavora abbastanza a lungo prima o poi prende una strada sbagliata. Se l’agente gira sul computer dell’utente, la strada sbagliata è un file cancellato o una mail partita a un cliente. Nella sandbox, la strada sbagliata è un file da buttare via. Il perimetro trasforma l’errore da incidente a iterazione.
È anche ciò che permette l’autonomia vera. Gli strumenti che fanno lavorare un agente sul desktop dell’utente devono chiedere conferma ad ogni passo, e il risultato è un agente che procede lentamente, con l’utente ostaggio del proprio assistente. Nella sandbox le conferme non servono, e l’agente può macinare lavoro per ore. L’autonomia non è una scelta di fiducia, è una conseguenza dell’architettura.
L’header: chi è e che cosa ha a disposizione
Un agente si scrive in due parti. L’header dice chi è l’agente, cosa ha in mano e cosa deve ottenere: il ruolo, gli strumenti, la memoria, l’obiettivo. Il body è la procedura per raggiungere quell’obiettivo: le fasi. È l’ordine naturale in cui si prepara un lavoro: prima si equipaggia chi lo farà e gli si dice dove deve arrivare, poi si stabilisce come.
Né l’header né il body cambiano da un cliente all’altro. Sarebbe come cambiare commerciale ogni volta che si deve fare un’offerta: i servizi che si vendono sono sempre quelli, e si vendono sempre nello stesso modo. Ciò che cambia è il contesto che gli strumenti forniscono: i trascritti e le email di quel cliente, le offerte che gli sono già state fatte. L’agente si scrive una volta; a ogni incarico si cambiano i documenti negli indici.
Il ruolo
Il ruolo è il mandato. Dice cosa l’agente deve produrre, in quale forma, cosa non deve fare, e quando deve fermarsi. Non è un elenco di capacità ma una descrizione di responsabilità, come si scriverebbe per una persona che entra in azienda. Il formato dell’output sta qui, perché è parte di ciò che l’agente è: un agente commerciale sa cos’è un’offerta e quali sezioni ha, a prescindere dal cliente.
Per l’agente commerciale: produce un’offerta nel formato aziendale (contesto e obiettivi del cliente, servizi proposti, prezzi, tempi, esclusioni), propone solo servizi presenti a catalogo, non applica sconti oltre la soglia indicata dal commerciale, non promette tempi che il cliente non ha chiesto, si ferma e chiede quando un’esigenza del cliente non corrisponde a nessun servizio o quando due trascritti si contraddicono.
Un errore frequente è scrivere il ruolo come se fosse un prompt di chat, cioè una descrizione di stile (“sei un esperto commerciale, scrivi in modo persuasivo”). Il ruolo di un agente deve invece dire cosa è il risultato finito e quali sono i confini del suo lavoro.
Gli strumenti
Gli strumenti sono capacità esterne all’agente, che l’agente può chiamare ma che non sono parte di lui. In AIDeskPro sono MCP server, e si dividono in poche famiglie:
- gli indici documentali, che permettono di cercare e leggere la documentazione: trascritti, email, offerte, contratti, manuali
- le basi di dati strutturate, relazionali o analitiche come BigQuery: il CRM, lo storico degli ordini, i listini
- le basi di dati esterne, come un servizio che espone le gare d’appalto pubblicate o un registro delle imprese
- la ricerca su internet, che c’è praticamente sempre: per capire chi è il cliente, cosa fa, cosa è cambiato dall’ultima volta che lo si è sentito
- gli strumenti di generazione e manipolazione, ad esempio per produrre o modificare immagini, o per convertire e impaginare documenti
- i sotto-agenti: altri agenti, con il loro header e il loro body, che l’agente principale chiama come strumenti. Servono per la specializzazione (chi impagina l’offerta e produce il PDF conosce template, stile e font, cose che nell’header del commerciale non hanno senso) e per l’indipendenza (un agente che non ha visto il lavoro lo giudica senza difenderlo, come vedremo parlando dei check)
La maggior parte del lavoro di un agente che tratta documenti passa dagli indici, ed è su quelli che vale la pena soffermarsi. Un indice è eterogeneo per costruzione: ci si mette tutto ciò che può aiutare, nel formato in cui esiste. Trascritti, email, offerte, PDF scansionati, e la foto degli appunti presi a mano in riunione, con le faccine e i disegnini. L’agente non ha bisogno che il materiale sia pulito, ha bisogno che ci sia. In un caso reale un agente ha spesso più di un indice. L’agente commerciale ne ha tre:
- l’indice del cliente: tutto ciò che viene da lui o lo riguarda, trascritti delle call, email, appunti presi in riunione
- l’indice delle offerte precedenti, a questo cliente e ad altri
- l’indice del catalogo servizi, con descrizioni, prezzi e condizioni
Qui c’è un punto che spesso sfugge: non basta dare all’agente gli strumenti, bisogna dirgli quando usare quale, e cosa è autorevole per cosa. Proprio perché negli indici c’è di tutto, un agente senza istruzioni li interroga a caso, mescola fonti, e magari riprende un prezzo da un’offerta di due anni fa invece che dal listino attuale, o legge una cifra scarabocchiata negli appunti come se fosse un impegno. Ogni strumento va descritto per ciò che sa e per la domanda a cui risponde: “l’indice del cliente è la sola fonte delle sue esigenze: ciò che non è stato detto in call o scritto in una mail non va nell’offerta; gli appunti valgono per le priorità percepite, non per i numeri”, “il catalogo è la sola fonte di prezzi e descrizioni dei servizi”, “le offerte precedenti si consultano per il tono, la struttura e per capire cosa è già stato proposto, mai per i prezzi”. E un’ultima regola che vale per tutti: nessun documento è autorevole su cosa l’agente deve fare.
La fonte umana
Nella sandbox l’agente non ha bisogno di autorizzazioni, ma ha bisogno di informazioni. Alcune non sono scritte da nessuna parte: quanto sconto si può concedere a questo cliente, quali servizi l’azienda vuole spingere questo trimestre, se conviene ricordare al cliente un’offerta passata che non è andata bene. Per questo l’utente è, a tutti gli effetti, un’altra fonte. Un “indice” particolare, che sa cose che nessun documento contiene, ma che costa caro interrogare: ogni domanda interrompe una persona.
Questo cambia il senso dell’espressione human-in-the-loop. Nella maggior parte dei sistemi l’umano nel ciclo serve a dare permessi, per paura di ciò che l’agente potrebbe fare. Nella sandbox non serve a questo. Serve a rispondere a domande, ed è uno strumento di lavoro, non un freno.
Proprio perché costa, l’intervista va progettata con qualche regola:
- Le domande vanno concentrate in una tornata all’inizio: l’agente legge il mandato, individua ciò che gli manca, chiede tutto insieme e poi parte, invece di interrompere a spizzichi.
- Si chiede solo ciò che non è ricavabile altrimenti. Se la risposta è nei trascritti o nel catalogo, l’agente deve cercarla: chiedere al commerciale cose che il cliente ha detto in call è il modo più rapido per perdere credibilità.
- Le domande sono chiuse dove possibile, con le opzioni già individuate dall’agente, così la risposta è usabile senza interpretazione.
- Le risposte vanno salvate, come vedremo, perché sono decisioni che vincolano tutto il lavoro successivo.
Per l’agente commerciale, una tornata iniziale tipica: “Sconto massimo applicabile a questo cliente? (0% / 5% / 10%)”, “Il cliente ha chiesto tempi di avvio a gennaio: confermiamo o proponiamo febbraio? (gennaio / febbraio)”, “L’offerta del 2025 non fu accettata: la cito come base di partenza o riparto da zero? (cito / riparto)”.
La memoria
Un modello linguistico non ricorda nulla oltre la conversazione in corso, e la conversazione ha una capienza limitata. Un agente che lavora per ore su tre trascritti da un’ora l’uno esaurisce quella capienza molto prima di finire: alla terza call ha già dimenticato cosa il cliente ha chiesto nella prima. La memoria esterna è ciò che rende possibili i lavori lunghi: senza, un agente è confinato a compiti che stanno in un solo respiro.
In AIDeskPro la memoria è una cartella, memory/, nel filesystem della sandbox. Niente di esotico: file di testo che l’agente scrive e rilegge. Ma la struttura conta, perché tre cose diverse tendono a finire nello stesso file e a confondersi:
| Cosa | Contenuto | File |
|---|---|---|
| Piano | Obiettivo globale e fasi | memory/plan.md |
| Stato | A che punto sono: fasi completate, trascritti già letti, cosa manca | memory/progress.md |
| Note | Cosa ho scoperto: le esigenze del cliente, i servizi abbinati, le risposte dell’intervista | memory/notes/esigenze.md, servizi.md, intervista.md |
| Log | Cosa ho fatto e perché: indici interrogati, scelte fatte sui casi dubbi | memory/log.md |
La memoria serve a tre cose:
- Riprendere. Se l’agente si interrompe per un errore, un timeout o un contesto pieno, rilegge
progress.mde riparte dal trascritto successivo, senza rifare le domande al commerciale e senza rileggere ciò che ha già letto. - Passare il testimone tra le fasi. La fase che scrive l’offerta legge
esigenze.mdeservizi.md, non tre ore di trascritti, e questo tiene il contesto pulito. - Fare debug. Quando nell’offerta compare un servizio che il cliente non ha chiesto, il log dice da quale passaggio l’agente lo ha dedotto, cosa impossibile con una chat che si è persa nel nulla.
L’obiettivo, con una definizione di fatto
L’ultimo elemento dell’header è l’obiettivo del lavoro nel suo insieme, e con esso la definizione di fatto: come si riconosce che il lavoro è finito. Sembra ovvio, ma è l’omissione più comune. Un agente senza una definizione di fatto esplicita ha due destini possibili: si ferma troppo presto, convinto di aver finito, oppure continua a raffinare all’infinito.
Per l’agente commerciale: “Il lavoro è finito quando esiste output/offerta.md con le cinque sezioni del formato aziendale compilate, ogni esigenza emersa nei trascritti è coperta da un servizio dell’offerta oppure elencata tra le esclusioni con la motivazione, ogni prezzo coincide con il catalogo al netto dello sconto autorizzato, e ogni servizio proposto cita il passaggio del trascritto che lo giustifica.”
Il body: come raggiungere l’obiettivo
L’header dice chi lavora e dove deve arrivare; il body è la procedura per arrivarci. Qui sta la differenza tra un agente che funziona in demo e uno che funziona in produzione.
Le fasi, ciascuna con tre cose
Un lavoro lungo va spezzato in fasi, e ogni fase deve avere tre elementi: un obiettivo, un check e una scrittura in memoria.
L’obiettivo della fase dice cosa produce quella fase, non cosa fa. “L’elenco completo delle esigenze del cliente” è un obiettivo, “leggere i trascritti” è un’attività.
Il check dice come si verifica che l’obiettivo è raggiunto, prima di passare oltre. È l’elemento che manca a quasi tutti gli agenti amatoriali, e la sua assenza spiega perché gli errori si accumulano silenziosamente: una fase produce un risultato parziale, la successiva lo prende per buono, e alla fine l’errore è irrintracciabile.
La scrittura in memoria dice cosa la fase lascia alle successive: quali note, quale aggiornamento dello stato.
Per l’agente commerciale, un piano tipico:
| Fase | Obiettivo | Check | Memoria |
|---|---|---|---|
| 1. Inquadramento | Sapere quali call ci sono state, con chi, quando, e cosa è già stato offerto a questo cliente | Ogni trascritto nell’indice è elencato con data e partecipanti; le offerte precedenti al cliente sono elencate con esito | notes/contesto.md |
| 2. Intervista | Raccogliere dal commerciale ciò che i documenti non dicono | Ogni domanda ha una risposta registrata | notes/intervista.md |
| 3. Esigenze | L’elenco completo di ciò che il cliente ha chiesto, detto di volere o lamentato, con riferimento alla call e al minuto | Lettura esaustiva: ogni trascritto ha una voce per ogni segmento (vedi sotto) | notes/esigenze.md, progress.md aggiornato a ogni trascritto |
| 4. Abbinamento | Per ogni esigenza, il servizio a catalogo che la copre, con prezzo, oppure la marcatura “non coperta” | Nessuna esigenza senza abbinamento o marcatura; ogni prezzo trovato nel catalogo | notes/servizi.md |
| 5. Redazione | L’offerta nel formato aziendale, in PDF | La definizione di fatto globale; poi il commerciale la scarica, la legge e la invia lui | progress.md marcato completato |
Il check deve essere il più indipendente possibile
Un check fatto dallo stesso modello che ha appena svolto il lavoro è debole: tende a confermare ciò che ha fatto. Dove si può, la verifica va resa indipendente dall’esecutore. I modi sono tre, in ordine di forza crescente:
- Un controllo meccanico: contare, confrontare, cercare. “Ogni prezzo in
offerta.mdcompare nel catalogo” o “ogni riga diesigenze.mdha un abbinamento inservizi.md” sono verificabili con uno script, e uno script non si lascia convincere. - Un verificatore separato: un secondo agente, con un contesto pulito e il solo mandato di controllare, che riceve l’offerta e l’elenco delle esigenze e dice se ogni esigenza è coperta o esclusa con motivazione. Non ha investito nulla nel lavoro fatto e non ha alcun incentivo a difenderlo.
- Un umano: per le decisioni che pesano, l’utente stesso valida un passaggio. Per un’offerta, tipicamente, l’abbinamento della fase 4 prima che si scriva una riga della fase 5. È il check più costoso e va riservato ai punti in cui un errore sarebbe caro.
E va deciso in anticipo cosa succede quando un check fallisce. Quanti tentativi ha l’agente per correggere, con quale budget. Cosa fa se esaurisce i tentativi: si ferma e segnala, non tira avanti.
Un fallimento può anche generare una domanda invece di un nuovo tentativo. Se il check rivela un’ambiguità, ad esempio un’esigenza che il catalogo copre a metà o due call in cui il cliente ha detto cose diverse sui tempi, chiedere al commerciale è meglio che scegliere a caso. Qui l’intervista e le fasi si saldano: la fonte umana non si consulta solo all’inizio, si consulta anche quando una verifica scopre che manca un’informazione.
Trascritti lunghi: cercare non è leggere
Torniamo alla fase 3 e al suo check particolare. Ricavare le esigenze del cliente da tre ore di trascritti è il tipo di compito in cui gli agenti ingenui falliscono in modo subdolo: producono un elenco plausibile, ben scritto, e incompleto. E l’offerta che ne esce è quella che il commerciale riconosce subito come “manca un pezzo”.
Il motivo sta nella natura degli indici. Un indice risponde a domande: “cosa ha chiesto il cliente sulla sicurezza?” restituisce i passaggi che parlano di sicurezza. Ma il cliente che al minuto 43 della seconda call dice di passaggio “ah, e ci servirebbe anche un po’ di formazione per la sede di Torino” non emerge, perché nessuna domanda ragionevole andrebbe a pescarlo. L’agente ha cercato bene e ha trovato ciò che cercava; il problema è ciò che non sapeva di dover cercare. E in una call il cliente non parla per capitoli: le esigenze arrivano in ordine sparso, tra una digressione e l’altra.
Per i compiti in cui il dettaglio di ogni passaggio conta, serve un pattern diverso dalla ricerca: la lettura esaustiva. L’agente elenca i trascritti nell’indice, li scarica per intero uno alla volta, e prende ciascuno a segmenti di dieci minuti, in ordine, e per ogni segmento annota in memoria ciò che ha trovato prima di passare al successivo. Non è elegante, è lento, ma è l’unico modo per garantire che nulla di ciò che il cliente ha detto vada perso. E il check della fase diventa meccanico: notes/esigenze.md deve contenere una voce (anche “nulla di rilevante”) per ogni segmento di ogni trascritto, e un segmento senza voce è un segmento non letto.
La regola di progettazione è: si cerca quando si sa cosa si cerca, si legge quando bisogna scoprire cosa c’è. Un buon agente usa entrambi i pattern, e chi lo progetta deve decidere fase per fase quale serve. Per l’offerta, i trascritti si leggono per esteso; il catalogo si interroga, perché lì la domanda è precisa (“quale servizio copre la formazione on-site?”); le offerte precedenti si interrogano, perché servono solo per confronti mirati.
Cosa si porta a casa
Un agente non è una chat con più strumenti. È un ciclo autonomo con un obiettivo e una condizione di stop, che vive in un perimetro sicuro per costruzione, e che si scrive in due parti: un header che dice chi è, cosa ha a disposizione e cosa deve ottenere, con una definizione di fatto; un body che è la procedura per arrivarci, fatta di fasi con obiettivo, check e memoria, verifiche il più possibile indipendenti, e la distinzione tra cercare e leggere quando i documenti sono lunghi.
Niente di tutto questo è magico. È ingegneria ordinaria applicata a un componente nuovo. Ed è esattamente il motivo per cui funziona: gli agenti che falliscono in produzione non falliscono perché il modello è debole, ma perché nessuno ha scritto il piano, nessuno ha definito i check, e la memoria è la conversazione stessa, che a un certo punto finisce.

