Salta ai contenuti

Sistemi aperti, chiusi, dissipativi

Una fiamma di candela ha una forma stabile e non contiene una sola molecola stabile. Capire come questo sia possibile è capire la differenza fra un sistema aperto e un sistema chiuso — e perché ogni sistema AI in produzione è del primo tipo.

C’è un fatto che ha tormentato la scienza per un secolo. Il secondo principio della termodinamica, una delle leggi più solide che conosciamo, dice che le cose, lasciate a se stesse, vanno verso il disordine. Il caffè caldo si raffredda, mai il contrario. Il castello di sabbia si sgretola, mai si ricostruisce.

Eppure un essere vivente fa, ogni istante, esattamente l’opposto: si costruisce, si organizza, si mantiene ordinato. Un albero parte da un seme e diventa una struttura elaborata. Per decenni questo è sembrato una contraddizione, quasi uno scandalo.

Non è una contraddizione. La soluzione sta tutta in una distinzione: la differenza fra un sistema che scambia con l’ambiente e uno che non lo fa. Un sistema chiuso decade verso il disordine. Un sistema aperto può fare l’opposto, perché il flusso che lo attraversa gli porta l’ordine da fuori.

Questa distinzione è il cuore del capitolo, e non è una curiosità da fisici: è il concetto che separa il modo giusto e il modo sbagliato di ragionare su un sistema AI. Perché un sistema AI in produzione è, nel senso tecnico e letterale della parola, un sistema aperto. Riceve query, dati, aggiornamenti, output di tool, pagine web. Non è mai isolato dal suo ambiente, e non può esserlo.

Chi lo tratta come un sistema chiuso — “questo input produce questo output, sempre, riproducibile” — sta usando il modello sbagliato, e ogni diagnosi che ne deriva eredita l’errore. Il non-determinismo che vedi nei log, il drift che vedi nel monitoring, la dipendenza dal contesto esterno che rende fragile una eval: non sono difetti accidentali. Sono le conseguenze inevitabili dell’apertura, e si capiscono solo se hai il vocabolario per nominarle.

C’è anche un guadagno di prospettiva, oltre a quello diagnostico. Pensare un sistema come chiuso porta a cercare la causa di ogni comportamento dentro il sistema: se l’agente sbaglia, l’errore è nell’agente. Pensarlo come aperto apre una seconda possibilità, spesso quella giusta: la causa può essere nel flusso, nell’ambiente, nella relazione fra il sistema e ciò che lo circonda.

Non è una sfumatura accademica. È la differenza fra mesi spesi a riscrivere un prompt e dieci minuti spesi a scoprire che un’API a monte aveva cambiato formato di risposta. Sapere che il sistema è aperto significa sapere che metà delle cause vivono fuori, e quindi guardare anche lì.

Il capitolo costruisce quel vocabolario da zero: sistema aperto e chiuso, equilibrio e stato stazionario, entropia ed entropia negativa, strutture dissipative, equifinalità. Sono nomi nati su organismi viventi e reazioni chimiche, e si applicano ai sistemi AI non per moda ma perché un sistema AI ha la stessa forma astratta. Distinguere dove questo è identità e dove è solo analogia è parte del lavoro, e il capitolo lo fa esplicitamente.

Una avvertenza sul metodo, valida per tutta la Parte IX. I concetti che seguono nascono nella fisica e nella biologia, e portano con sé un bagaglio quantitativo — formule, misure, leggi di conservazione. Per i sistemi AI, alcuni di quei concetti si trasferiscono come strumenti precisi e altri solo come immagini guida. Il capitolo segnala caso per caso quale dei due, perché usare un’immagine come se fosse una legge è uno degli errori più costosi nel ragionare sui sistemi.

Per capire perché la distinzione fra sistemi aperti e chiusi sia stata una conquista, e non un’ovvietà, conviene partire da cosa c’era prima.

La fisica classica dei secoli precedenti aveva ottenuto i suoi successi più puliti su sistemi idealizzati come isolati: un pendolo nel vuoto, due masse che si attraggono nello spazio vuoto, un gas dentro un contenitore perfettamente chiuso. L’idealizzazione era feconda — toglieva di mezzo le complicazioni e lasciava vedere le leggi — ma aveva un effetto collaterale. Aveva abituato a pensare che il caso “isolato” fosse il caso normale, e lo scambio con l’ambiente una complicazione secondaria da aggiungere dopo.

La termodinamica dell’Ottocento aveva poi consacrato un destino preciso per questi sistemi isolati: il secondo principio diceva che decadono verso l’equilibrio, verso il disordine massimo. Era una visione coerente e potente, ma cupa, e soprattutto in stridente contrasto con un fatto sotto gli occhi di tutti — gli esseri viventi non decadono affatto, crescono e si organizzano.

La biologia e la fisica parlavano lingue che non si incontravano. La distinzione fra sistemi aperti e chiusi nasce, come campo di pensiero esplicito, proprio per chiudere questo divario, nella biologia e nella fisica di metà Novecento. Tre figure, tre date.

Il primo è Ludwig von Bertalanffy (1901-1972), biologo austriaco e fondatore della teoria generale dei sistemi, già incontrato nel capitolo Sistema, ambiente, confine, stato: il vocabolario di base. Da biologo, von Bertalanffy era ossessionato da un fatto che la fisica del suo tempo non sapeva spiegare: un organismo vivente resta organizzato e stabile pur essendo attraversato senza sosta da materia ed energia. La fisica classica studiava soprattutto sistemi che, lasciati a sé, decadono. Un essere vivente fa il contrario.

Da qui la sua distinzione centrale fra sistemi aperti e chiusi, sviluppata a partire dagli anni Trenta e raccolta nel volume di sintesi General System Theory: Foundations, Development, Applications (George Braziller, New York, 1968). Von Bertalanffy coniò anche un termine tedesco che useremo: Fliessgleichgewicht, alla lettera “equilibrio di flusso”, per indicare uno stato stabile tenuto in piedi proprio dal flusso. Lo coniò perché in tedesco non esisteva la parola adatta; in italiano lo rendiamo come “stato stazionario”.

Il secondo è Erwin Schrödinger (1887-1961), fisico austriaco, premio Nobel per la fisica nel 1933 per i contributi alla meccanica quantistica. Nel 1944 Schrödinger pubblica un libretto fuori dal suo campo, What is Life? (Cambridge University Press), basato su un ciclo di lezioni tenute a Dublino nel 1943. La domanda del titolo — che cos’è la vita — viene affrontata da fisico: come fa un organismo a non decadere, se il secondo principio della termodinamica spinge tutto verso il disordine? La risposta di Schrödinger è una formula destinata a diventare famosa: l’organismo “si nutre di entropia negativa”. Su questa frase torneremo a lungo.

Quel libretto ebbe un’influenza sproporzionata rispetto alle sue dimensioni. Conteneva anche una seconda intuizione — l’idea di un “cristallo aperiodico” che immagazzina il codice ereditario — e fu citato sia da James Watson sia da Francis Crick fra le letture che li indirizzarono verso la struttura del DNA, scoperta nel 1953. Per il nostro tema conta la prima intuizione: l’idea che la vita vada capita come un fenomeno termodinamico, non come una violazione della fisica ma come un suo caso speciale, quello dei sistemi che restano ordinati pagando il conto altrove.

Il terzo è Ilya Prigogine (1917-2003), chimico-fisico belga di origine russa. Negli anni Sessanta Prigogine sviluppa la teoria delle strutture dissipative: strutture ordinate che possono formarsi e mantenersi solo lontano dall’equilibrio, in sistemi attraversati da un flusso di energia. Per questo lavoro riceve il premio Nobel per la chimica nel 1977, con una motivazione ufficiale che recita “per i suoi contributi alla termodinamica del non equilibrio, in particolare la teoria delle strutture dissipative”. La sua lezione Nobel, Time, Structure and Fluctuations (8 dicembre 1977), è uno dei testi di riferimento del capitolo.

Il filo che lega le tre figure è uno solo. Tutte e tre affrontano la stessa apparente contraddizione — ordine che persiste in un universo che spinge verso il disordine — e tutte e tre la sciolgono nello stesso modo: il sistema è aperto, e l’apertura è esattamente ciò che gli permette di restare ordinato. Non è un caso che la teoria dei sistemi e la termodinamica del non equilibrio siano cresciute negli stessi decenni: stavano rispondendo, da angoli diversi, alla stessa domanda.

Una nota sulla parola “chiuso”, perché ha due accezioni e la confusione è facile. In termodinamica stretta si distinguono tre casi: un sistema isolato non scambia né materia né energia; un sistema chiuso scambia energia ma non materia; un sistema aperto scambia entrambe. Nella teoria generale dei sistemi questa tripartizione spesso si appiattisce su una dicotomia: “chiuso” diventa un’abbreviazione per “senza flusso rilevante con l’ambiente”. In questo capitolo useremo soprattutto la dicotomia, perché è quella che conta per ragionare sui sistemi AI; quando la distinzione fine fra isolato e chiuso sarà importante, lo diremo.

Prima di qualsiasi formula, tre modi diversi di afferrare la differenza fra aperto e chiuso. Il primo guarda una candela. Il secondo fa i conti dell’entropia. Il terzo parte dal codice. Conviene tenerli tutti e tre: il primo dà l’immagine, il secondo dà il meccanismo, il terzo dà la presa per chi pensa in funzioni.

Guarda la fiamma di una candela. Ha una forma. La riconosci, la disegni, resta “la stessa fiamma” per minuti interi. Eppure non c’è una sola molecola che resta nella fiamma da un istante al successivo.

Il combustibile sale dallo stoppino, l’ossigeno entra dai lati, i gas di combustione escono dall’alto. La fiamma è una forma mantenuta da un flusso, non una cosa fatta di materia stabile. Soffiaci sopra, interrompi il flusso, e la forma sparisce all’istante: non c’era nessun oggetto persistente da spegnere, solo un flusso da bloccare.

Ora guarda il caso opposto: un cubetto di ghiaccio dentro un thermos sigillato. Niente entra, niente esce. Il ghiaccio si scioglie, l’acqua si intiepidisce, e quando tutto ha raggiunto la stessa temperatura il sistema si ferma. Da quel momento non succede più nulla.

È uno stato stabile anche questo, ma di un tipo opposto: è stabile perché è morto, perché non c’è più nessun gradiente, nessuna differenza che possa mettere in moto qualcosa.

Ecco la distinzione, in immagine. La fiamma è un sistema aperto: la sua stabilità è una stabilità dinamica, ottenuta a ogni istante grazie al flusso. Il thermos è un sistema chiuso: la sua stabilità finale è la stabilità della cessazione.

La fiamma sembra ferma ma è ferma come un giocoliere è fermo — ogni istante è una correzione, ogni istante qualcosa entra e qualcosa esce. Il ghiaccio sciolto è fermo e basta, fermo come una pietra: in lui non c’è più niente che si muova da correggere.

Il punto controintuitivo da portare via: in un sistema aperto, “stabile” non vuol dire “immobile”. Vuol dire che i flussi si bilanciano.

Togli i flussi e scopri quanto poco era immobile. È una verifica che si può fare mentalmente su qualsiasi sistema: se per immaginarlo “fermo” devi immaginare anche il suo ambiente acceso, allora era un sistema aperto, e la sua quiete era un lavoro.

C’è un secondo esempio che vale la pena affiancare alla fiamma, perché è ancora più estremo. Un vortice in un fiume — il piccolo gorgo che si forma a valle di un sasso — ha una forma riconoscibile e persistente. Puoi tornare allo stesso punto del fiume un’ora dopo e ritrovare lo stesso vortice.

Eppure non solo le molecole d’acqua sono completamente diverse: anche l’acqua che ha generato il vortice mentre lo guardavi è ormai a chilometri di distanza. Il vortice non è fatto d’acqua nello stesso senso in cui un sasso è fatto di pietra. Il vortice è una forma che il flusso assume, un pattern stabile imposto a un materiale che non smette mai di passare.

Devia il fiume e il vortice cessa di esistere — non “si ferma”, proprio cessa, perché non c’era nessuna cosa, solo un modo in cui l’acqua scorreva. La fiamma, il vortice, un organismo, un servizio AI in produzione: sono tutti, in questo senso preciso, forme imposte a un flusso.

L’immagine della fiamma dice che i due sistemi sono diversi. Non dice perché un sistema aperto può ordinarsi mentre uno chiuso decade. Per quello servono i conti, e i conti si fanno con l’entropia.

L’entropia, in prima intuizione, misura il disordine: il numero di modi microscopici in cui le particelle di un sistema possono disporsi pur lasciando invariato il suo aspetto macroscopico. Pochi modi, sistema ordinato, entropia bassa. Tantissimi modi, sistema disordinato, entropia alta.

Un’immagine concreta aiuta: un mazzo di carte. Esiste un solo ordinamento “nuovo di fabbrica” — tutte in scala per seme — e ci sono circa 8×10678 \times 10^{67} ordinamenti diversi che chiameremmo “mescolato”. Lo stato ordinato è raro, gli stati disordinati sono praticamente tutti gli altri.

Mescola un mazzo ordinato e quasi certamente ottieni disordine, semplicemente perché il disordine ha molti più modi di realizzarsi. Mescola un mazzo già disordinato e resta disordinato. Questo è il secondo principio in miniatura: non c’è una forza che spinge verso il disordine, c’è solo il fatto che il disordine è incomparabilmente più probabile. Per riportare il mazzo in ordine devi spendere lavoro — riordinarlo a mano — cioè importare ordine da fuori.

Il secondo principio della termodinamica dice esattamente questo, in modo preciso: l’entropia di un sistema isolato non può diminuire. Lasciato a sé, un sistema isolato va verso il disordine massimo, che è il suo equilibrio. È il mazzo che, mescolato all’infinito senza mani esterne, non torna mai da solo in scala.

Un sistema vivente sembra contraddire la legge: cresce, si organizza, mantiene strutture elaborate, cioè abbassa o tiene bassa la propria entropia. Come? La risposta sta in una parola sola del secondo principio: isolato. La legge vincola i sistemi isolati. Un sistema aperto non è isolato per definizione, e quindi la legge, su di lui preso da solo, semplicemente non si applica nella forma “l’entropia non scende”.

Mettiamolo in conto. La variazione di entropia di un sistema aperto si scompone in due pezzi:

dS=dSinterna+dSscambiatadS = dS_{\text{interna}} + dS_{\text{scambiata}}

In parole povere, questo dice che l’entropia del sistema cambia per due ragioni indipendenti. Il primo termine, dSinternadS_{\text{interna}}, è l’entropia prodotta dai processi irreversibili che avvengono dentro il sistema: per il secondo principio questo termine è sempre maggiore o uguale a zero. Un sistema, da solo, sa solo produrre disordine.

Il secondo termine, dSscambiatadS_{\text{scambiata}}, è l’entropia che attraversa il confine: importata o esportata insieme ai flussi di materia ed energia. E questo termine può essere negativo.

Se il sistema esporta abbastanza entropia — cioè se dSscambiatadS_{\text{scambiata}} è negativo e grande in valore assoluto — la somma totale dSdS può risultare negativa. Il sistema, nel suo complesso, diminuisce la propria entropia: si ordina. Non ha violato nessuna legge. Ha solo scaricato il disordine fuori dal confine.

Questa è la formalizzazione esatta di ciò che Schrödinger chiamava “nutrirsi di entropia negativa”. Un organismo mangia molecole strutturate, ad alta energia libera e bassa entropia — il cibo è materia ordinata — ed espelle calore disperso e molecole degradate, ad alta entropia. La differenza fra ciò che entra e ciò che esce è l’ordine che l’organismo trattiene.

Conviene rendere concreta l’espressione “cibo a bassa entropia”, perché suona astratta. Un cucchiaio di zucchero è materia altamente strutturata: lunghe catene di molecole identiche, disposte in modo regolare. L’organismo le spezza, ne estrae energia utilizzabile, e restituisce all’ambiente anidride carbonica, acqua e calore — materia e energia molto meno strutturate dello zucchero di partenza. L’organismo non “consuma energia” nel senso ingenuo: l’energia si conserva, è il primo principio. Quello che l’organismo consuma è l’ordine dello zucchero, e lo usa per pagare il proprio. Von Bertalanffy lo dice in modo quasi identico: in un sistema aperto “non abbiamo solo produzione di entropia dovuta a processi irreversibili, ma anche importazione di entropia, che può benissimo essere negativa”.

Una precisazione di onestà, che Schrödinger stesso fece. In una nota a un’edizione successiva di What is Life? ammise che la nozione fisicamente più rigorosa non è “entropia negativa” ma “energia libera”. Scelse “entropia negativa” perché rendeva più vivido il contrasto che voleva mostrare. Il capitolo segue la sua scelta espositiva, ma vale ricordarlo: la frase famosa è una semplificazione consapevole, non l’ultima parola tecnica.

C’è un terzo modo di entrare nella distinzione, ed è il più vicino al lettore che scrive codice. Dimentica per un momento la termodinamica e guarda due funzioni.

Una funzione pura, nel senso della programmazione funzionale, è una funzione che dato lo stesso input restituisce sempre lo stesso output, senza dipendere da nient’altro e senza modificare nient’altro. È un sistema chiuso allo stato puro: tutto ciò che le serve è negli argomenti, tutto ciò che produce è nel valore di ritorno. Non legge orologi, non legge file, non chiama la rete. È riproducibile per costruzione, ed è esattamente per questo che è facile da testare.

Una funzione che legge l’orologio di sistema, o un file su disco, o una risposta di rete, non è pura. Dipende da qualcosa che sta fuori dai suoi argomenti — l’ambiente — e quel qualcosa può cambiare fra due chiamate. È un sistema aperto: il suo comportamento non è determinato dai soli input espliciti, ma anche da uno stato del mondo che la funzione non controlla.

Questo angolo non è una metafora: è la stessa distinzione, vista dal lato del software. E mostra subito perché conta. Il programmatore esperto sa che le funzioni impure sono quelle difficili da testare, da riprodurre, da ragionare. Sa che i bug intermittenti — quelli che spariscono quando li cerchi — vivono quasi sempre lì, nella dipendenza da un ambiente che cambia.

La teoria dei sistemi dice la stessa cosa con un vocabolario più ampio: i sistemi aperti sono più difficili da ragionare dei sistemi chiusi, perché parte della loro causalità vive fuori dal confine. Un agente AI è una funzione massicciamente impura. Tenerlo a mente è metà del lavoro.

I tre angoli convergono sullo stesso punto, da tre direzioni. La fiamma mostra che un sistema aperto è una forma sostenuta da un flusso. Il bilancio dell’entropia mostra perché quel flusso può portare ordine invece che disordine. La firma della funzione mostra che cosa l’apertura costa in pratica: prevedibilità. Tre lenti, un unico oggetto — e da qui in poi il capitolo può permettersi di essere preciso, perché l’intuizione è a posto.

Dall’intuizione ai concetti precisi. Tre nodi: la differenza fra equilibrio e stato stazionario, le strutture dissipative, l’equifinalità. Sono i tre concetti che danno alla distinzione aperto/chiuso un contenuto operativo, e che servono per le applicazioni più avanti.

Nessuno dei tre richiede matematica oltre l’idea di derivata come tasso di variazione. Dove compare una formula, è spiegata riga per riga; dove un concetto si presta a un’immagine, l’immagine viene prima.

Questi due termini vanno tenuti distinti con cura, perché descrivono entrambi uno “stato che non cambia nel tempo” e per questo vengono confusi di continuo. Sono però fisicamente opposti.

L’equilibrio termodinamico è lo stato in cui un sistema isolato finisce se lo si lascia a sé abbastanza a lungo: entropia massima, nessun gradiente, nessun flusso netto. È uno stato morto. È stabile non perché qualcosa lo mantenga, ma perché non c’è più niente che possa succedere. Il thermos di acqua arrivata a temperatura uniforme è in equilibrio: nessuna parte è più calda di un’altra, quindi niente si muove.

Lo stato stazionariosteady state, il Fliessgleichgewicht di von Bertalanffy — è lo stato in cui si stabilizza un sistema aperto. La struttura, la composizione, le grandezze macroscopiche restano costanti, ma restano costanti attraverso un flusso continuo che entra ed esce. Non è entropia massima: il sistema è tenuto lontano dall’equilibrio proprio dal flusso. La fiamma della candela è in stato stazionario: la sua forma è costante, ma solo finché combustibile e ossigeno la attraversano.

C’è un test operativo per distinguerli, ed è semplice. Togli l’ambiente, interrompi i flussi, e guarda cosa succede allo stato. Se lo stato non cambia, era un equilibrio: il sistema non aveva bisogno dell’ambiente. Se lo stato collassa, era uno stato stazionario: la sua costanza era un prodotto del flusso. Spegni una candela e la fiamma sparisce; sigilla meglio un thermos già all’equilibrio e non cambia nulla.

Per un sistema modellato con equazioni differenziali — e von Bertalanffy modellava così i suoi sistemi aperti, con sistemi di equazioni differenziali ordinarie, vedi ODE a intuizione per dinamiche e controllo nella Parte VI — lo stato stazionario è il punto in cui le derivate si annullano: le grandezze non cambiano nel tempo, dx/dt=0dx/dt = 0, anche se i flussi che attraversano il sistema sono tutt’altro che nulli. La derivata zero non significa flusso zero. Significa flusso bilanciato.

Vale la pena rendere la differenza ancora più tangibile con un’immagine idraulica. Immagina una vasca con il rubinetto aperto e lo scarico aperto. Se la portata in entrata e quella in uscita sono uguali, il livello dell’acqua resta costante: la vasca è in stato stazionario. Il livello non cambia, ma l’acqua nella vasca è in continuo ricambio.

Ora chiudi entrambi: rubinetto e scarico. Anche adesso il livello resta costante — ma per la ragione opposta, perché non entra né esce nulla. Stesso livello costante, due situazioni completamente diverse.

Se ora qualcuno alza lo scarico, nel primo caso il livello scende subito; nel secondo non succede niente. Il livello costante della prima vasca era un bilancio attivo, fragile, dipendente; quello della seconda era l’inerzia di un sistema in cui non c’è più niente da bilanciare. Questa è, in piccolo, tutta la differenza fra stato stazionario ed equilibrio — e fra un servizio in produzione e un programma fermo.

Un’ultima precisazione, che fa da ponte verso il resto della Parte. Cosa tiene un sistema aperto nel suo stato stazionario, invece di lasciarlo derivare via? La risposta breve è: il feedback. Se un flusso aumenta, qualcosa nel sistema deve accorgersene e correggere, riportando le grandezze verso il valore stazionario. Senza un meccanismo di correzione, una perturbazione qualsiasi spingerebbe il sistema lontano dal suo stato e non lo farebbe più tornare.

Lo stato stazionario non è quindi solo “un punto dove le derivate si annullano”: è un punto mantenuto attivamente. Il meccanismo che lo mantiene — il feedback negativo — è il tema del capitolo feedback-feedforward (in preparazione) della Parte IX e dell’intera Parte X sulla cibernetica. Qui basti il nesso: apertura e feedback sono due facce della stessa moneta. L’apertura espone il sistema all’ambiente; il feedback è ciò che gli permette di restare sé stesso nonostante l’esposizione.

Prigogine fa un passo oltre von Bertalanffy. Von Bertalanffy aveva mostrato che un sistema aperto può mantenere l’ordine che ha. Prigogine mostra che lontano dall’equilibrio l’ordine può anche emergere dal nulla, spontaneamente, dove prima non c’era.

L’esempio canonico, citato anche nella motivazione del Nobel, è l’instabilità di Bénard. Prendi uno strato sottile di liquido e scaldalo da sotto. Finché la differenza di temperatura fra il fondo e la superficie è piccola, il calore sale per conduzione e il liquido resta omogeneo, senza struttura visibile.

Aumenta la differenza di temperatura oltre una certa soglia, e succede qualcosa di sorprendente: il liquido si organizza da solo in celle convettive esagonali regolari, una griglia ordinata di rulli di liquido che salgono e scendono. Ordine macroscopico, geometria precisa, emerso spontaneamente da un liquido che prima era uniforme.

Prigogine chiamò queste configurazioni strutture dissipative. Il nome è scelto con cura: “dissipative” perché esistono solo finché dissipano, cioè finché consumano il flusso di energia che le attraversa. Smetti di scaldare, e le celle di Bénard svaniscono e il liquido torna omogeneo. La struttura non è un oggetto che, una volta formato, resta. È un processo che si tiene in piedi solo a spese dell’ambiente.

C’è un’eco diretta dell’idea di Schrödinger, e Prigogine la rende esplicita. La cella di convezione è ordine — entropia localmente bassa — e quell’ordine non viola il secondo principio perché la cella esporta nell’ambiente più disordine di quanto ne contenga. È lo stesso bilancio dell’organismo che si nutre di entropia negativa, applicato a un sistema fisico semplice e senza vita. Prigogine generalizza: l’apparizione spontanea di ordine in un sistema aperto lontano dall’equilibrio non è un caso speciale della biologia, è un fenomeno fisico generale. La vita, in questa luce, è una struttura dissipativa particolarmente elaborata.

Le celle di Bénard sono un ordine nello spazio. Esiste anche un ordine nel tempo, e l’esempio più noto è la reazione di Belousov-Žabotinskij, una reazione chimica oscillante studiata in Unione Sovietica fra gli anni Cinquanta e Sessanta. Mescolati gli ingredienti giusti in un recipiente e tenuti lontano dall’equilibrio, la soluzione non vira lentamente verso un colore finale come farebbe una reazione ordinaria: oscilla.

Cambia colore avanti e indietro in modo regolare, come un orologio, per minuti. È una struttura dissipativa temporale: un ritmo che emerge spontaneamente da una chimica che, all’equilibrio, sarebbe semplicemente inerte. Anche qui, smetti di alimentare la reazione e l’oscillazione si spegne. L’ordine — spaziale o temporale che sia — è un prestito dal flusso, non una proprietà della materia.

Tre ingredienti, insieme, producono una struttura dissipativa: il sistema deve essere aperto, deve essere tenuto lontano dall’equilibrio, e deve avere una dinamica non lineare con feedback. Quando i tre coincidono, l’ordine può comparire da solo. È un risultato profondo: dice che l’ordine non è per forza l’eredità di un ordine precedente o il prodotto di un progettista. Può essere ciò che un flusso di energia fa a una materia, se la materia è del tipo giusto e il flusso è abbastanza forte.

Questo rovescia un’intuizione comune. Verrebbe da pensare che l’ordine sia sempre “costoso”, qualcosa che va costruito pezzo per pezzo contro la tendenza naturale delle cose. Prigogine mostra che, nelle condizioni giuste, l’ordine è ciò che il sistema fa da solo — la configurazione che il flusso preferisce.

Non è una smentita del secondo principio: la struttura ordinata dissipa più entropia di quanta ne dissiperebbe il sistema disordinato, quindi accelera la corsa complessiva verso il disordine dell’universo. È ordine locale che serve il disordine globale. Per i sistemi AI questa resta un’analogia, marcata come tale, ma un’analogia istruttiva: comportamenti collettivi ordinati possono emergere in un sistema multi-componente senza che nessuno li abbia programmati, semplicemente perché sono la configurazione che la dinamica favorisce sotto un certo regime di flusso. L’emergenza avrà la sua trattazione nella Parte XV.

C’è un dettaglio della soglia che merita attenzione, perché è dove la storia diventa interessante. Sotto la soglia non succede niente di visibile: aumenti il calore e il liquido resta omogeneo. Poi, a un valore preciso del flusso, il sistema cambia regime di colpo — non gradualmente — e compaiono le celle.

Questa è una transizione qualitativa: un piccolo cambiamento nel parametro di controllo, attraversata la soglia, produce un cambiamento strutturale del comportamento. Il sistema aveva due regimi possibili, e il flusso ha deciso quale. Le transizioni di questo tipo, le biforcazioni, sono un tema ricorrente nei sistemi aperti lontani dall’equilibrio, e torneranno nella Parte IX nel capitolo equilibrio-stabilita (in preparazione). Per ora basti il punto: in un sistema aperto, aumentare un flusso non significa solo “fare di più la stessa cosa”. Oltre certe soglie, significa fare una cosa diversa.

L’ultimo concetto della meccanica è quello che distingue più nettamente i sistemi aperti dai chiusi, e ha il nome più tecnico: equifinalità.

Parti da un sistema chiuso deterministico, per esempio un sistema planetario. Le posizioni dei pianeti a un certo istante futuro sono univocamente determinate dalle loro posizioni e velocità all’istante iniziale. Cambia anche di poco le condizioni iniziali, e lo stato finale cambia. In un sistema chiuso deterministico, il finale è schiavo dell’inizio: c’è una sola fine per ogni inizio, e inizi diversi danno fini diverse.

In un sistema aperto questo non vale. Lo stesso stato finale può essere raggiunto da condizioni iniziali diverse e per vie diverse. È quello che von Bertalanffy chiama equifinalità, e nelle sue parole: “lo stesso stato finale può essere raggiunto da condizioni iniziali differenti e per vie differenti. È questo che si chiama equifinalità”.

L’esempio classico è biologico, e von Bertalanffy lo prendeva dall’embriologia sperimentale del primo Novecento. Un organismo normale può svilupparsi da un uovo intero, da un uovo dimezzato chirurgicamente, o da due uova fuse insieme. Lo stato finale — l’organismo adulto e ben formato — è lo stesso, anche se le condizioni di partenza erano radicalmente diverse.

Per un sistema chiuso un esito del genere sarebbe impossibile: meno della metà del materiale iniziale dovrebbe produrre meno della metà del risultato. L’embrione non funziona così perché è aperto, attraversato da flussi di materia ed energia, e il suo stato adulto è un attrattore della dinamica, non una conseguenza meccanica dell’inizio.

La meta non era prefigurata, codificata nelle condizioni iniziali. È piuttosto un attrattore del processo: una destinazione verso cui il sistema converge da molti punti di partenza diversi. Il concetto di attrattore avrà il suo capitolo dedicato, equilibrio-stabilita (in preparazione), più avanti nella Parte IX.

L’equifinalità ha una conseguenza concettuale netta, ed è ambivalente. Da un lato è una buona notizia per la robustezza: un sistema aperto raggiunge il suo stato funzionale nonostante perturbazioni iniziali, nonostante un avvio imperfetto.

Dall’altro è una cattiva notizia per il debugging: se lo stesso stato finale può essere prodotto da percorsi diversi, allora osservare lo stato finale non ti dice quale percorso il sistema ha seguito. La stessa uscita non testimonia lo stesso processo interno. Per chi prova a capire un sistema dai suoi output, questa è una limitazione strutturale, non un’inconvenienza occasionale.

Vale la pena anticipare un esempio vicino al lettore, anche se la sua discussione completa arriva più avanti. Due agenti AI ricevono lo stesso compito e producono lo stesso file corretto. Equifinalità: lo stato finale è identico. Ma uno ci è arrivato in tre passi puliti e l’altro dopo dodici tentativi, sette errori di tool e due vicoli ciechi.

Guardando solo il file finale non li distingui. Sono equifinali nello stato, profondamente diversi nel processo. Questo è il motivo per cui valutare un agente solo sul risultato finale è una eval debole: l’equifinalità garantisce che il risultato non racconti la traiettoria.

L’equifinalità ha un gemello speculare, ed è utile nominarlo per non confonderli: la multifinalità. Se l’equifinalità dice che inizi diversi possono portare alla stessa fine, la multifinalità dice il contrario — che lo stesso inizio può portare a fini diverse. Un sistema aperto esposto a flussi diversi dall’ambiente diverge verso esiti diversi pur partendo dallo stesso stato.

Le due proprietà non sono in contraddizione: descrivono due facce dell’allentamento del legame inizio-fine che caratterizza i sistemi aperti. In un sistema chiuso deterministico nessuna delle due vale: una fine, un inizio, legati rigidamente. In un sistema aperto il legame si allenta da entrambi i lati. Per un agente, l’equifinalità è la ragione per cui può riprendersi da un avvio storto; la multifinalità è la ragione per cui lo stesso prompt, in due ambienti diversi, può portarlo in due posti diversi.

Una precisazione che evita un fraintendimento. “Aperto” e “chiuso” non sono due caselle: sono i due estremi di uno spettro. Un sistema può essere più o meno aperto a seconda di quanti canali — materia, energia, informazione — sono attivi e di quanto flusso portano.

Un sasso su una scrivania è quasi chiuso: scambia un po’ di calore con l’aria, e basta. Una pianta in vaso è aperta su più canali — luce, acqua, anidride carbonica, ossigeno — ma è radicata, non si muove. Un animale è aperto su tutti i canali e per di più si sposta nell’ambiente. Un agente AI in produzione è aperto soprattutto sul canale informativo, ma su quello in modo massiccio: ogni token di contesto, ogni risultato di tool, ogni aggiornamento del modello è informazione che attraversa il confine.

Tenere a mente lo spettro serve perché la domanda utile, in pratica, non è quasi mai “questo sistema è aperto o chiuso?” — la risposta è quasi sempre “aperto”. La domanda utile è “su quali canali è aperto, quanto flusso portano, e quali di questi flussi posso controllare?”. È una domanda di grado, e le decisioni di progetto vivono nel grado.

C’è anche un secondo asse, oltre al “quanto”, ed è il “quanto velocemente”. Due sistemi possono essere aperti sugli stessi canali ma con tempi di scambio diversissimi: una foresta scambia carbonio con l’atmosfera su scale di decenni, un agente scambia informazione con l’ambiente su scale di secondi. La velocità del flusso decide quanto in fretta l’ambiente può perturbare il sistema, e quindi quanto reattivo deve essere il feedback che lo tiene in stato stazionario. Un sistema aperto e veloce — come un agente — vive in un regime in cui l’ambiente può cambiarlo nel tempo di una singola sessione. È una delle ragioni per cui il drift, negli agenti, si misura in giorni e non in anni.

I concetti visti finora — bilancio di entropia, stato stazionario, equifinalità, confine — restano astratti finché non si toccano su casi concreti. Quattro esempi eterogenei: un conto numerico, un confronto in codice, uno scenario reale, e un caso che mostra come lo stesso oggetto cambi natura a seconda del confine scelto. Ognuno illumina un aspetto diverso, e vale la pena seguirli tutti e quattro.

Esempio 1 — il bilancio di entropia, con i numeri

Sezione intitolata “Esempio 1 — il bilancio di entropia, con i numeri”

Riprendiamo la scomposizione dS=dSinterna+dSscambiatadS = dS_{\text{interna}} + dS_{\text{scambiata}} e mettiamoci dei numeri, in unità arbitrarie, su un intervallo di tempo fissato.

Un sistema aperto, nell’intervallo, produce internamente entropia per +10+10. Questo termine è positivo per forza: è il secondo principio applicato all’interno del sistema. Nessun sistema, da solo, sa produrre ordine.

Lo stesso sistema, nell’intervallo, importa cibo strutturato — materia a bassa entropia — e questa importazione conta come entropia entrante pari a 25-25. Contemporaneamente esporta calore degradato e scarti, entropia uscente pari a +12+12. Il bilancio dello scambio è quindi dSscambiata=25+12=13dS_{\text{scambiata}} = -25 + 12 = -13.

La variazione totale di entropia del sistema è:

dS=+10+(13)=3dS = +10 + (-13) = -3

Il sistema ha abbassato la propria entropia di 3 unità. Si è ordinato. E il secondo principio?

Guardiamo l’universo, cioè il sistema più l’ambiente. L’ambiente ha incassato i 1313 di entropia netta che il sistema gli ha scaricato, e i 1010 prodotti internamente fanno comunque parte del bilancio complessivo. La somma sull’universo è positiva. Il secondo principio è perfettamente rispettato: lo è sempre, sul sistema isolato giusto, che è l’universo intero. Quello che è successo è solo che il sistema ha spostato il disordine oltre il proprio confine. L’ordine locale è reale, ma è pagato con disordine altrove.

Un’osservazione sui segni, perché è dove l’esempio fa la differenza. Cambia un solo numero: supponi che il sistema importi entropia solo per 15-15 invece di 25-25, magari perché il “cibo” è meno strutturato. Allora dSscambiata=15+12=3dS_{\text{scambiata}} = -15 + 12 = -3, e dS=+10+(3)=+7dS = +10 + (-3) = +7: il sistema ora aumenta la propria entropia, decade. Lo stesso sistema, con lo stesso metabolismo interno, si ordina o si disordina a seconda della qualità del flusso che riceve. L’apertura non garantisce l’ordine. Garantisce solo che l’ordine sia possibile, se il flusso è abbastanza ricco. Spostato ai sistemi AI: un agente immerso in un ambiente informativo povero o rumoroso non si “ordina” comportandosi meglio, esattamente come un organismo a dieta di cibo degradato.

Esempio 2 — sistema chiuso e sistema aperto in codice

Sezione intitolata “Esempio 2 — sistema chiuso e sistema aperto in codice”

La differenza fra i due tipi di sistema si vede pulita nella firma di una funzione.

# Sistema chiuso: nessun input dall'esterno dopo l'inizializzazione.
# Lo stato finale e' funzione SOLO dello stato iniziale.
def sistema_chiuso(stato_iniziale, passi):
s = stato_iniziale
for _ in range(passi):
s = transizione(s) # niente input esterno
return s
# Sistema aperto: a ogni passo entra qualcosa dall'ambiente.
# Lo stato finale dipende dallo stato iniziale E dallo stream di input.
def sistema_aperto(stato_iniziale, passi, ambiente):
s = stato_iniziale
for _ in range(passi):
ingresso = ambiente.leggi() # materia / energia / informazione
s, uscita = transizione(s, ingresso)
ambiente.scrivi(uscita) # esportazione verso l'ambiente
return s

Le due firme dicono tutto. sistema_chiuso prende solo lo stato iniziale: è riproducibile per costruzione, stesso input dà sempre lo stesso output.

sistema_aperto prende anche un ambiente, e dentro il loop chiama ambiente.leggi() — una sorgente che il modellatore non controlla e che può restituire cose diverse a chiamate diverse. Il risultato di sistema_aperto dipende dallo stato iniziale e dallo stream di input, e lo stream di input è dell’ambiente, non nostro.

Tieni a mente quella riga ambiente.leggi(). Nel prossimo esempio si scopre cosa è, in un sistema AI reale.

Un agente di coding gira su una codebase. Elenchiamo cosa attraversa il suo confine, cioè cosa entra ed esce dal sistema “agente”.

In entrata: i prompt dell’utente, i file letti dal filesystem, l’output dei comandi di test, le risposte delle API esterne, i risultati delle ricerche web, e — meno visibile ma decisivo — gli aggiornamenti del modello sottostante, decisi dal provider su una timeline che l’agente non conosce. In uscita: le modifiche ai file, i comandi eseguiti, i messaggi all’utente.

Nessuno di questi flussi è sotto il controllo dell’agente. L’agente è un sistema aperto in senso pieno, e la riga ambiente.leggi() dell’esempio precedente è, qui, ogni chiamata a un tool. Da questa apertura discendono tre conseguenze pratiche, che non sono bug ma proprietà strutturali.

La prima è il non-determinismo. Lo stesso prompt iniziale può produrre traiettorie diverse, perché l’ambiente da cui l’agente legge non è lo stesso a due esecuzioni diverse. Un test che è verde adesso può essere rosso fra un’ora, non perché l’agente sia cambiato, ma perché è cambiato un file, un endpoint, un risultato di ricerca.

La seconda è il drift. L’ambiente cambia sotto i piedi dell’agente: una dipendenza si aggiorna, un’API cambia formato di risposta, il modello sottostante viene sostituito con una versione nuova. Un agente “corretto” oggi può degradare domani senza che nessuno abbia toccato il suo codice. Il drift non è un incidente: è la firma dell’apertura. Un sistema chiuso non potrebbe driftare; uno aperto non può evitarlo.

La terza è la dipendenza dal contesto esterno. Un agente che funziona perfettamente in un ambiente può fallire identico in un altro, perché parte del sistema — la parte che decide il comportamento — vive fuori dall’agente, nell’ambiente. Spostare l’agente significa cambiare il sistema.

L’errore di modello più comune, di fronte a tutto questo, è trattare l’agente come un sistema chiuso: “questo prompt produce questo risultato”. È lo stesso errore di chi si aspetta che una fiamma resti accesa dopo aver tolto l’ossigeno. Il comportamento dipende dal flusso, e il flusso è dell’ambiente.

Esempio 4 — lo stesso modello, due regimi: addestramento e inferenza

Sezione intitolata “Esempio 4 — lo stesso modello, due regimi: addestramento e inferenza”

L’ultimo esempio mostra che lo stesso oggetto può essere aperto o chiuso a seconda di rispetto a cosa lo si guarda — il punto del “confine come scelta”, reso concreto.

Prendi un LLM (large language model, un modello linguistico di grandi dimensioni). Durante l’addestramento, il modello è un sistema aperto rispetto ai suoi pesi: il flusso dei dati di training attraversa il sistema e a ogni passo modifica i parametri. I pesi sono lo stato, e lo stato cambia sotto il flusso. È, alla lettera, un sistema aperto in evoluzione verso uno stato — uno stato che, per equifinalità, run di training diversi con inizializzazioni diverse possono raggiungere per vie diverse, finendo su modelli funzionalmente vicini.

Durante l’inferenza, lo stesso modello è in un regime diverso. I pesi sono congelati: nessun dato li tocca più. Rispetto ai pesi, il sistema è ora chiuso. Ma rispetto al contesto resta aperto: il prompt entra, attraversa il modello, l’output esce. Lo stesso oggetto fisico — la stessa matrice di parametri — è chiuso su un canale e aperto su un altro, nello stesso istante.

La lezione è che la domanda “questo sistema è aperto o chiuso?” è mal posta finché non si dice rispetto a quale flusso e con quale confine. “L’LLM in inferenza è un sistema chiuso” è vero se il confine racchiude i pesi e l’unico flusso considerato è l’aggiornamento dei parametri. È falso se il confine racchiude la conversazione e il flusso considerato è il contesto. Non sono due risposte in conflitto: sono due modelli diversi dello stesso oggetto, e la teoria dei sistemi dice di dichiarare quale stai usando.

Questo esempio ha una ricaduta che vale oltre la pedanteria terminologica. Molti malintesi sui modelli nascono da una sovrapposizione fra i due regimi: ci si aspetta che un modello “impari” durante una conversazione — cioè che il canale dei pesi sia aperto in inferenza — quando invece in inferenza quel canale è chiuso. Il modello sembra imparare solo perché il contesto, che è aperto, accumula informazione dentro la singola sessione. Distinguere i due confini spiega in una riga perché un modello non ricorda nulla fra due conversazioni separate: il canale che porterebbe quella memoria, in inferenza, è chiuso.

La distinzione aperto/chiuso non è teoria astratta: cambia decisioni di progetto concrete.

Capacity planning e SLO. Un servizio AI in produzione è uno stato stazionario, non un equilibrio. La sua latenza, il suo costo per richiesta, la sua qualità restano costanti solo perché un flusso continuo di richieste, dati e capacità di calcolo lo attraversa.

Spegni una parte del flusso — un provider che va giù, un budget di token esaurito, un rate limit raggiunto — e lo “stato stabile” che vedevi nei dashboard collassa, esattamente come la fiamma senza ossigeno. Progettare un servizio AI vuol dire progettare il suo stato stazionario: dimensionare i flussi che lo tengono in piedi, non immaginare un punto di equilibrio che resta da solo.

Questo cambia anche il modo di leggere un dashboard piatto. Una metrica costante per giorni non significa “il sistema è a posto e fermo”: significa “i flussi che lo attraversano sono per ora bilanciati”. È un’informazione su un equilibrio dinamico in corso, non su una proprietà acquisita. Lo stesso grafico piatto può precedere di pochi minuti un collasso, se uno dei flussi sta per cambiare. La teoria dei sistemi insegna a non confondere la stabilità di uno stato stazionario con la solidità di un equilibrio.

Eval e riproducibilità. Disegnare una eval trattando l’agente come sistema chiuso porta a test fragili che falliscono in modo intermittente e fanno perdere fiducia nell’intero processo. Una eval onesta parte dal fatto che l’agente è aperto: l’ambiente è parte del sistema sotto test, ci sarà non-determinismo da gestire con esecuzioni multiple e soglie statistiche, e per l’equifinalità lo stesso risultato finale può nascondere percorsi interni diversi — quindi valutare solo l’output finale può mascherare un processo che si è comportato male.

Test riproducibili: chiudere il sistema apposta. C’è un risvolto pratico che ribalta il problema. Se l’apertura è la causa della non-riproducibilità, allora un modo per ottenere test riproducibili è chiudere il sistema apposta, deliberatamente, ai fini del test.

È esattamente ciò che fanno i mock, gli stub, le fixture, i dataset congelati, i tempi finti: sostituiscono l’ambiente reale e variabile con un ambiente fisso e controllato. In linguaggio sistemico, si sposta il confine in modo da racchiudere anche l’ambiente, trasformando un sistema aperto in uno chiuso per la durata del test. È una decisione di teoria dei sistemi presa ogni giorno da chi scrive test, di solito senza chiamarla così.

Vederla per quello che è aiuta a capirne il limite: un test su un sistema artificialmente chiuso dice qualcosa sul componente, ma non sul sistema aperto che girerà in produzione. Servono entrambi i tipi di prova.

Sandbox e contenimento. Lo stesso ragionamento, applicato alla sicurezza. Un agente con accesso al filesystem e alla rete è massicciamente aperto, e l’apertura è anche la sua superficie di rischio: ogni canale verso l’ambiente è un canale per un input ostile o per un’azione dannosa.

Una sandbox è, nel vocabolario di questo capitolo, una restrizione deliberata dell’apertura: si chiudono alcuni canali — niente rete, filesystem in sola lettura, niente esecuzione di comandi arbitrari — per ridurre il blast radius. Progettare i permessi di un agente è decidere quanto e su quali canali lasciarlo aperto. Non è un dettaglio di configurazione: è la scelta di dove tracciare il confine fra l’agente e il mondo che può toccare.

Il context window come stato stazionario. Un agente che gira a lungo gestisce un context window — la finestra di testo che il modello vede a ogni passo — che non può crescere all’infinito. Le tecniche di compaction, eviction, sliding window servono a mantenere la dimensione del contesto entro un limite mentre informazione nuova continua a entrare e informazione vecchia esce.

Visto con gli occhi di questo capitolo, il context window di un agente long-running è uno stato stazionario: la sua dimensione resta costante attraverso un flusso continuo di token che entrano e che vengono scartati. Non è un equilibrio — non è un buffer che si riempie e si ferma — è un ricambio bilanciato. E come ogni stato stazionario, dipende dal flusso: cambia il ritmo con cui entra informazione e l’equilibrio fra le grandezze va riprogettato.

Monitoring e drift. Il monitoring di un sistema AI in produzione esiste perché il sistema è aperto. Concept drift e data drift — i fenomeni per cui le prestazioni di un modello degradano nel tempo, trattati nel capitolo model-drift (in preparazione) della Parte sull’MLOps — sono la manifestazione diretta dell’apertura: l’ambiente cambia, e un sistema aperto ne risente per definizione. In un sistema genuinamente chiuso il monitoring continuo non servirebbe. Il fatto che serva è la conferma operativa che il sistema è aperto.

Closed-world e open-world nei knowledge base. C’è una distinzione, nata nella logica e nei database, imparentata con quella di questo capitolo: la closed-world assumption contro la open-world assumption.

La closed-world assumption (CWA), formalizzata dall’informatico canadese Raymond Reiter nel lavoro On Closed World Data Bases (1977-78), è l’ipotesi che ciò che non si riesce a derivare come vero sia da considerare falso: l’assenza di un fatto viene trattata come la sua negazione. La open-world assumption (OWA) fa l’opposto: l’assenza di un fatto significa “sconosciuto”, non “falso”.

Un database aziendale completo — la tabella di tutti i dipendenti — può ragionevolmente usare la CWA: se un nome non c’è, quella persona non è un dipendente. Il web semantico, dove la conoscenza è per principio incompleta, usa la OWA. Il legame con i sistemi aperti e chiusi è concettuale, non un’identità formale, e va dichiarato come tale: la CWA modella la conoscenza come un sistema chiuso e completo, la OWA come un sistema aperto che può sempre ricevere fatti nuovi.

La ricaduta pratica è diretta. Un sistema RAG (retrieval-augmented generation, generazione assistita da recupero di documenti) che non trova un documento deve decidere fra le due ipotesi: rispondere “non esiste / è falso” oppure “non lo so”. Per un assistente che opera sul mondo reale la OWA è quasi sempre la scelta corretta, perché l’assenza di un’informazione nel contesto non è una prova della sua falsità — è solo un’osservazione mancante.

La distinzione aperto/chiuso è potente, ma proprio per questo viene tirata oltre il suo punto di tenuta. È un vocabolario che chiarisce molto, e per questo invita a usarlo dappertutto — anche dove non regge.

I fraintendimenti che seguono non sono curiosità marginali: sono gli errori che, una volta entrati in un ragionamento, lo corrompono in modo silenzioso. Vale la pena conoscerli per nome.

“Aperto e chiuso sono proprietà oggettive del sistema.” No. Sono proprietà del confine, e il confine lo traccia chi modella, come discusso in Sistema, ambiente, confine, stato: il vocabolario di base e come approfondirà confini-del-sistema (in preparazione). Lo stesso oggetto fisico può essere modellato come aperto o come chiuso a seconda di dove metti la linea e di quali flussi decidi di trascurare.

“Sistema chiuso” è quasi sempre un’abbreviazione per “modellato come chiuso ai fini di questo problema”. Un LLM in inferenza è un buon esempio: rispetto ai suoi pesi è chiuso, perché i pesi sono congelati e nessun dato li modifica; rispetto al suo contesto è aperto, perché il prompt entra e l’output esce. Dire “l’LLM è un sistema chiuso” senza specificare “rispetto a cosa” è un’affermazione incompleta.

“Stato stazionario è la stessa cosa di equilibrio.” È la confusione più frequente, ed è grave perché i due concetti sono opposti. L’equilibrio è entropia massima, flusso zero, stato morto. Lo stato stazionario è struttura costante tenuta in piedi da un flusso, lontano dall’equilibrio.

Sembrano simili solo perché entrambi “non cambiano nel tempo”, ma uno non cambia perché è finito tutto, l’altro non cambia perché tutto si bilancia. Confonderli porta a previsioni sbagliate: ti aspetti che un sistema in stato stazionario sopravviva alla rimozione dei flussi, e invece collassa.

“I sistemi viventi violano il secondo principio.” Mai. Il secondo principio parla di sistemi isolati. Un sistema aperto può ordinarsi localmente esportando entropia, e il bilancio sul sistema-più-ambiente resta sempre conforme. Non c’è violazione: c’è un sistema diverso da quello a cui la legge si applica. Chi presenta la vita come una sfida alla termodinamica ha cambiato il sistema senza accorgersene.

“Entropia negativa di Schrödinger ed entropia di Shannon sono la stessa cosa.” Questo è il punto dove il capitolo deve essere più netto, perché è qui che la divulgazione sui sistemi AI scivola più spesso.

L’entropia termodinamica e l’entropia di Shannon — la misura dell’informazione, trattata nel capitolo Entropia, cross-entropy, KL divergence della Parte IV — condividono la stessa forma matematica e lo stesso nome, e non per coincidenza: il legame formale è reale e profondo. Ma non sono la stessa grandezza misurata sullo stesso oggetto. L’entropia termodinamica si misura su stati microscopici di materia ed energia; l’entropia di Shannon si misura su distribuzioni di probabilità di simboli.

Dire che addestrare un LLM “riduce l’entropia termodinamica” è un abuso: il training estrae struttura statistica dai dati, e questo ricorda — è un’analogia, marcata come tale — l’estrazione di neghentropia di un organismo, ma non è un teorema e non è un’identità. La cosa onesta da scrivere è che l’analogia illumina, e che il ponte fra le due entropie resta concettuale finché qualcuno non costruisce una mappatura formale precisa, caso per caso.

“L’identità ‘sistema AI uguale sistema aperto’ è anch’essa un’analogia.” No, e qui vale la distinzione opposta. Che un sistema AI in produzione sia un sistema aperto non è un’analogia didattica: è la definizione di sistema aperto — un sistema che scambia materia, energia o informazione con l’ambiente — applicata letteralmente. Un agente scambia informazione con l’ambiente a ogni chiamata di tool. È un’istanza, non una somiglianza.

Il capitolo tiene separate le due cose di proposito: l’identità “AI in produzione uguale sistema aperto” è solida; l’analogia “training come neghentropia” è feconda ma resta analogia. Confondere le due — promuovere l’analogia a identità, o degradare l’identità ad analogia — è l’errore di classe di affermazione contro cui le linee guida della wiki mettono in guardia.

“Equifinalità significa che il percorso non conta.” No. Equifinalità dice che lo stato finale è robusto rispetto a condizioni iniziali diverse. Il percorso conta eccome: conta per i costi, per i tempi, per il consumo di risorse, e conta per il debugging.

Un agente che raggiunge il risultato giusto dopo dieci tentativi falliti e uno che lo raggiunge al primo colpo finiscono nello stesso stato, ma non sono lo stesso sistema in funzione. Equifinalità dice solo che lo stato finale, da solo, non ti permette di distinguerli.

“Un sistema aperto è automaticamente robusto, grazie all’equifinalità.” È un’illusione confortante e va smontata. L’equifinalità garantisce che certi sistemi aperti convergano allo stesso stato finale da inizi diversi — ma solo se quello stato è davvero un attrattore della loro dinamica.

Non tutti i sistemi aperti hanno questa proprietà, e non tutti gli stati sono attrattori. Un sistema aperto può anche divergere, oscillare, o convergere verso uno stato finale indesiderato altrettanto stabilmente. L’apertura, da sola, non è robustezza: è la precondizione che rende possibile sia la robustezza sia la fragilità. Quale delle due ottieni dipende dalla dinamica interna e da come il feedback è disegnato — tema della Parte X sulla cibernetica.

“Un sistema chiuso è più semplice, quindi più sicuro.” È un’intuizione comprensibile e parzialmente vera, ma va maneggiata con cura. Un sistema chiuso è più prevedibile — questo sì — perché tutta la sua causalità sta dentro il confine. Ma “prevedibile” non è “sicuro”, e “chiuso” spesso non è una scelta disponibile.

Un sistema AI utile deve interagire con il mondo: leggere dati, chiamare tool, rispondere a utenti. Chiuderlo del tutto significherebbe renderlo inutile. La domanda di progetto realistica non è “chiuso o aperto” ma “quanto aperto, su quali canali, con quali controlli sul flusso”. La sicurezza, in un sistema che deve restare aperto per funzionare, non si ottiene chiudendolo: si ottiene scegliendo con cura i canali e mettendo controlli là dove il flusso entra.

Il limite della metafora termodinamica per i sistemi AI. Vale la pena dirlo apertamente: l’apparato di von Bertalanffy, Schrödinger e Prigogine nasce su materia ed energia, e su sistemi descritti da equazioni differenziali continue. Un sistema AI è discreto, simbolico, e la sua “apertura” è soprattutto apertura informativa.

I concetti di sistema aperto, stato stazionario ed equifinalità si trasferiscono bene perché sono concetti strutturali, indipendenti dal substrato. I concetti più specificamente termodinamici — il bilancio quantitativo di entropia, le strutture dissipative come fenomeno fisico — si trasferiscono solo come analogie, e vanno usati come tali. Il capitolo prende l’impalcatura concettuale; non pretende che un agente sia una cella di Bénard.

La regola di igiene, riassunta: ogni volta che usi una delle parole di questo capitolo su un sistema AI, chiediti se stai facendo un’affermazione strutturale — solida — o una termodinamica — analogica.

“L’agente è un sistema aperto” è strutturale e regge. “L’agente esporta entropia” è termodinamica e va presa come figura, non come bilancio misurabile. Tenere separate le due cose è la differenza fra usare la teoria dei sistemi e abusarne.

Una parola finale sulla portata di tutto questo. La distinzione aperto/chiuso non risolve da sola nessun problema di progettazione: è una lente, non una ricetta. Ma è una lente che cambia quali domande ti poni. Davanti a un sistema AI che si comporta in modo strano, chi pensa “chiuso” cerca il guasto dentro; chi pensa “aperto” cerca anche nel flusso, nell’ambiente, nel confine. La maggior parte dei guasti veri, in un sistema aperto, vive proprio lì — ed è per questo che vale la pena avere il vocabolario per cercarli.

  • Sistema, ambiente, confine, stato: il vocabolario di base — definisce sistema, confine, ambiente, stato. Questo capitolo specializza quella distinzione: “aperto” e “chiuso” sono proprietà del confine, e dipendono da dove lo si traccia.
  • stato-spazio-dinamica (in preparazione, Parte IX) — lo stato stazionario e l’equilibrio sono punti particolari nello spazio degli stati di un sistema; lì se ne formalizza la posizione.
  • equilibrio-stabilita (in preparazione, Parte IX) — l’equilibrio termodinamico e lo stato stazionario sono due tipi diversi di attrattore; il capitolo dedicato formalizza il concetto di attrattore solo anticipato qui con l’equifinalità.
  • confini-del-sistema (in preparazione, Parte IX) — il fatto che “aperto/chiuso” dipenda da dove si traccia il confine è il legame diretto: cambiare il confine può trasformare un sistema chiuso in uno aperto.
  • feedback-feedforward (in preparazione, Parte IX) — il feedback è il meccanismo che permette a un sistema aperto di mantenere il proprio stato stazionario nonostante le perturbazioni.
  • Entropia, cross-entropy, KL divergence — definisce l’entropia di Shannon e le sue parenti; serve qui per capire il bilancio di entropia e per non confondere entropia informativa ed entropia termodinamica.
  • Processi stocastici e dinamiche casuali — uno stato stazionario stocastico è l’analogo probabilistico dello stato stazionario fisico di questo capitolo.
  • Catene di Markov, stazionarietà, mixing — la distribuzione stazionaria di una catena di Markov è l’esempio matematico più pulito e maneggevole di stato stazionario.
  • ODE a intuizione per dinamiche e controllo — von Bertalanffy modellava i sistemi aperti con sistemi di equazioni differenziali; lo stato stazionario è il punto in cui le derivate si annullano pur restando i flussi attivi.
  • model-drift (in preparazione, Parte sull’MLOps) — il drift di un modello in produzione è la conseguenza operativa diretta dell’apertura del sistema verso un ambiente che cambia.
  • Ludwig von Bertalanffy, General System Theory: Foundations, Development, Applications (George Braziller, 1968). Il testo fondativo. I capitoli sui sistemi aperti, sullo stato stazionario e sull’equifinalità sono la fonte diretta di gran parte di questo capitolo. Denso ma sorprendentemente leggibile.
  • Erwin Schrödinger, What is Life? (Cambridge University Press, 1944). Un classico breve. Il capitolo “Order, Disorder and Entropy” è quello da cui viene la frase sull’entropia negativa; la nota in cui Schrödinger corregge sé stesso a favore di “energia libera” è un esempio di onestà scientifica da leggere.
  • Ilya Prigogine, Time, Structure and Fluctuations — lezione Nobel, 8 dicembre 1977, disponibile sul sito ufficiale del premio Nobel. La presentazione di prima mano delle strutture dissipative, con l’esempio dell’instabilità di Bénard.
  • Ilya Prigogine e Isabelle Stengers, Order Out of Chaos (Bantam, 1984; orig. La Nouvelle Alliance, 1979). La versione divulgativa e filosofica della teoria di Prigogine: meno tecnica, più ambiziosa nel collegare termodinamica, tempo e organizzazione.
  • Raymond Reiter, On Closed World Data Bases, in Logic and Data Bases (Plenum Press, 1978). La fonte per la distinzione closed-world / open-world, utile a chi vuole vedere il rigore logico dietro un’idea che oggi si incontra soprattutto come pratica nei knowledge base e nei sistemi RAG.