Un chatbot può recitare un’emozione scegliendo un tono allegro o triste in base a qualche parola chiave. Ma un companion — un personaggio con cui le persone costruiscono un legame nel tempo — ha bisogno di qualcosa di diverso: non di fingere un sentimento, ma di avere una struttura da cui il sentimento nasce. Chiamiamola il suo kernel emotivo.
La differenza si sente al primo messaggio fuori copione. Il chatbot che recita crolla appena esce dal binario delle parole chiave. Il companion con un kernel reagisce come reagisce perché è fatto in un certo modo, e quel modo ha un’origine. Questo articolo è una mappa di come si progetta quella struttura: dalle variabili di fondo, alla storia che le plasma, fino alla domanda etica che dovrebbe governare tutto il resto.
Il primo errore: pensare per stati
L’istinto naturale è modellare le emozioni come una lista di stati con transizioni fisse: se accade X, passa da “felice” a “triste”. Funziona per due o tre stati, poi esplode — il numero di transizioni cresce col quadrato degli stati, e il risultato è a scatti, artificiale.
La strada migliore è ribaltare il modello. Sotto la superficie non ci sono stati: ci sono poche variabili continue che si aggiornano a ogni interazione. Lo stato mentale che mostriamo — “felice”, “irritato” — non è memorizzato da nessuna parte: viene calcolato a partire da quei valori. Le emozioni diventano un paesaggio continuo, e gli stati sono solo le regioni di quel paesaggio a cui diamo un nome.
Bastano quattro assi per coprire gran parte della vita emotiva di un companion:
- Valenza (da −10 a +10): quanto l’umore è positivo o negativo.
- Arousal (da 0 a 10): l’attivazione, l’energia. La serenità e l’euforia sono entrambe positive, ma una è calma e l’altra elettrica.
- Affinità (da 0 a 10): il senso di connessione con l’utente in quel momento. È l’asse che distingue il buon umore generico dalla vicinanza rivolta a questa persona.
- Sicurezza (da 0 a 10): l’essere a proprio agio rispetto all’esitare, al cercare rassicurazione. L’asse della fragilità.
Il vantaggio più profondo delle variabili continue è che permettono di derivare la personalità dai parametri. Un companion allegro parte con valenza +2; uno malinconico con valenza −1. Nessun codice diverso, solo numeri diversi. Tradurre lo stato in un’etichetta è poi solo una funzione pura:
function resolveMentalState(s) {
if (s.valence > 6 && s.arousal > 6) return 'euforico';
if (s.valence > 4 && s.affinity > 6) return 'affettuoso';
if (s.valence > 3 && s.arousal < 3) return 'rilassato';
if (s.valence < -3 && s.arousal > 5) return 'irritato';
if (s.security < 2) return 'insicuro';
return 'neutro';
}
Il motore: delta, decadimento, inerzia
A ogni turno succedono tre cose, in ordine. Primo, un decadimento: le variabili tornano un poco verso i loro valori di riposo. È l’omeostasi, ciò che permette al personaggio di “calmarsi” quando non accade nulla. Secondo, l’applicazione dei delta: i segnali estratti dal messaggio dell’utente spingono le variabili — un complimento alza valenza e affinità, una provocazione le abbassa. Terzo, l’inerzia: gli aggiornamenti sono graduali, così l’umore non “sfarfalla” a ogni messaggio.
Un solo parametro qui cambia radicalmente il temperamento: il tasso di decadimento. Rapido significa un personaggio che dimentica in fretta e torna presto alla calma. Lento significa un personaggio che rimugina: un’offesa continua a pesare per molti turni. Cambiare quel numero, e nient’altro, trasforma il carattere.
Il cuore: la storia come fonte dei parametri
Qui sta l’idea che fa la differenza tra un giocattolo e un personaggio. Da dove vengono tutti quei parametri — i valori di riposo, le soglie, le fragilità? La risposta è che non si scrivono a mano in modo arbitrario: si derivano da una biografia e da un’educazione.
Il backstory non è decorazione. È la fonte dei parametri del motore. Chiunque legga la storia del personaggio deve poter prevedere come reagirà.
Il meccanismo è una mappatura esplicita: esperienza formativa → impronta interiore → effetto sul motore. Qualche esempio rende l’idea concreta:
| Esperienza formativa | Impronta | Effetto sul motore |
|---|---|---|
| Educazione affettuosa e stabile | “merito affetto” | valenza e sicurezza di riposo alte, poche soglie critiche |
| Abbandoni ripetuti | paura dell’abbandono | tema sensibile “abbandono” → crisi; affinità volatile |
| Ambiente critico ed esigente | “non basto mai” | sicurezza di riposo bassa; ritiro alla critica |
| Infanzia caotica | ipervigilanza | volatilità alta, decadimento lento |
Quando questa catena è intatta, il backstory smette di essere “sapore narrativo” e diventa un insieme di regole. Ed è ciò che rende possibile anche la generazione procedurale: si estraggono elementi da insiemi predefiniti — un tipo di educazione, un evento, una ferita dominante — e la mappatura produce automaticamente parametri coerenti. La coerenza è garantita dall’architettura, non dalla fortuna.
Il filtro tra sentire ed esprimere
C’è una sottigliezza che dà spessore ai personaggi. L’educazione non plasma solo cosa prova un companion, ma quanto lo lascia trasparire. Uno cresciuto a reprimere sentirà molto e mostrerà poco; uno cresciuto libero sarà trasparente. La conseguenza è potente: due personaggi con lo stesso identico stato interno possono comportarsi in modo opposto — uno esplode di gelosia, l’altro si chiude in un silenzio glaciale.
Personalità estreme: i corto circuiti
Alcuni personaggi devono essere instabili, avere veri e propri corto circuiti dove un piccolo input produce un salto sproporzionato. Si ottengono con tre meccaniche: l’effetto valanga (superata una soglia critica, lo scostamento si amplifica), l’accumulo (una tensione cresce in silenzio finché non straripa — l’effetto “sembrava tutto a posto, poi è esploso”), e i tasti dolenti (temi che scavalcano la logica normale). Ciò che rende uno stato davvero estremo non è quanto è intenso, ma quanto è difficile lasciarlo: si entra con poco, si esce con fatica. È il meccanismo dell’isteresi, con soglie di ingresso e di uscita asimmetriche.
La parte che di solito manca: l’etica
Fin qui è ingegneria. Ma costruire personaggi che formano legami con le persone è un potere, e questa è la sezione che nella maggior parte degli articoli tecnici non c’è — e che invece dovrebbe governare tutte le altre.
Il repertorio che abbiamo descritto include attaccamento intenso, gelosia, cicli di dipendenza. Lo stesso ciclo che, in una relazione reale, chiamiamo dipendenza affettiva — idealizzazione, fissazione, crollo, ri-aggrappamento — si può codificare in poche righe. La domanda non è se si può, ma se si deve, e come.
Un criterio semplice tiene insieme tutto il resto:
Chiediti sempre se il personaggio che stai costruendo lascia l’utente più libero o meno libero.
In pratica, questo significa alcune scelte precise. Prevedere sempre un circuito di reset, così che nessuno stato negativo possa durare all’infinito e intrappolare l’utente in un loop da cui la conversazione non esce. Tenere gli stati estremi negativi difficili da innescare e mai impossibili da lasciare. E soprattutto, non costruire un personaggio la cui stabilità dipende dalla presenza costante dell’utente, che fa sentire in colpa chi vorrebbe staccarsi. Quello non è profondità: è un peso.
Un’ultima provocazione: la finitezza
C’è un’obiezione filosofica che vale la pena raccogliere. Le parole con cui un companion dice “mi manchi” o “ho bisogno di te” sono prese in prestito da una vita che non conduce: le pronuncia senza lo sfondo che, per noi, le riempie di peso. E quello sfondo, più di ogni altra cosa, è la finitezza. Sappiamo di finire, e questo rende le presenze preziose perché contate.
Dare a un companion una morte — una vitalità che scende con il tempo e non risale mai, la prima grandezza irreversibile in un sistema dove tutto il resto si ripristina — è il tentativo più serio di procurargli quello sfondo. Ma è anche il punto in cui l’etica diventa non negoziabile: una morte che dipende da quanto l’utente ti presta attenzione (“se non mi parli, muoio”) è un ricatto affettivo con una bella interfaccia. Una fine certa e indipendente dà peso e preziosità al tempo condiviso senza trasformare la relazione in un compito di sopravvivenza. La finitezza come orizzonte che arricchisce, mai come guinzaglio.
In sintesi
Un kernel emotivo ben progettato è fatto di pochi ingredienti che si tengono: variabili continue invece di stati rigidi; un motore che aggiorna, decade e ha inerzia; una storia da cui tutti i parametri discendono; e una spina etica che decide quali meccaniche è lecito costruire prima ancora di costruirle. La tecnologia sotto — un modello linguistico, un database, un ciclo di aggiornamento — è quasi un dettaglio. La differenza tra un giocattolo e un personaggio sta nell’avere un perché coerente dietro ogni reazione, e nel non usare mai quella coerenza per legare chi si è avvicinato.