Dice ciò che vuole
Una richiesta in linguaggio naturale descrive la modifica desiderata.
Interacțiune vizuală & agenți Demonstrator de cercetare
World Agent è un dimostratore per l’interazione in linguaggio naturale con una scena visiva. Esploriamo il legame tra conversazione, lo stato di un oggetto e azioni visibili in un ambiente 3D.

World Agent
Una richiesta in linguaggio naturale descrive la modifica desiderata.
La richiesta è collegata alle azioni disponibili nel dimostratore.
L’ambiente visivo si aggiorna e i passaggi possono essere seguiti.
L’esplorazione di un oggetto e delle sue opzioni tramite conversazione.
Il collegamento tra i comandi dell’utente e una scena navigabile.
La valutazione di un runtime visivo prima delle integrazioni commerciali.
La scena e il catalogo del dimostratore sono concettuali. Non presentiamo un’integrazione CRM o un modello generativo di mondo come collegati in questa versione.
World Agent in dettaglio
World Agent risponde a una domanda di interfaccia: cosa cambia se, invece di premere pulsanti, dite ciò che volete e la scena cambia davanti a voi? Parlate, e la macchina nella scena cambia colore, cerchi, ambiente, meteo, ora, angolo della telecamera, porte e bagagliaio.
La parte interessante non è che capisca il comando, ma che ogni modifica lasci una traccia che dice da dove proviene: dal catalogo, dal comando dell’utente, dal livello creativo o dal sistema. Uno strato di nebbia su un percorso alpino è etichettato «simulazione visiva»; un colore della palette di quattro è etichettato «catalogo». L’utente non deve indovinare cosa è reale e cosa è decorazione.
Esistono tre directory con nome simile sul disco; due di esse — `world-agent-v2` e `world-agent-provenance-atlas` — non sono progetti separati, ma copie di lavoro git dello stesso repository. La variante reale è `world-agent` sul branch `main`, che oggi porta la riformulazione V2 «World Generator» ed è identica bit per bit al branch `v2/world-generator`.
Circa 22 regole di corrispondenza sul testo romeno traducono una frase in una modifica tipizzata di stato. «Fai la macchina bianca e metti cerchi sportivi» attiva due regole e produce due eventi distinti. Non è un modello di linguaggio: è codice che gira nel browser, dà lo stesso risultato ogni volta e si può leggere riga per riga.
Il riconoscimento vocale usa `webkitSpeechRecognition` nel browser, con la lingua fissata su `ro-RO`. Dove l’interfaccia non esiste — o l’utente preferisce la tastiera — la barra di comando resta funzionante, con le stesse regole. Non inviamo audio da nessuna parte.
Un veicolo costruito proceduralmente da primitive Three.js (carrozzeria, cabina in capsula di vetro, quattro ruote con cerchi, fari, porte, bagagliaio), su un basamento con anello, griglia e tre luci. Rendering con tone mapping ACES Filmic, rapporto di pixel limitato a 1,75 e arresto completo dell’animazione quando il sistema richiede movimento ridotto.
Ogni mutazione di stato produce un evento con una delle quattro etichette: Catalog, User command, Creative layer o System. L’etichetta “Creative layer” viene visualizzata letteralmente come “Livello creativo / simulato”. La scheda di offerta appare con il dettaglio “Dati fittizi contrassegnati — non è un’offerta commerciale”.
Esiste un runtime normalizzato con otto strumenti visivi (`visual.inspect`, `visual.highlight`, `visual.move`, `visual.create`, `visual.delete`, `world.query`, `ui.navigate`, `ui.open_panel`) e un registro di eventi con numeri di revisione del mondo. Una chiamata con revisione obsoleta viene respinta con `STALE_REVISION`; una chiamata ripetuta con lo stesso `actionId` restituisce la ricevuta originale marcata come ripetizione. L’adattatore vocale segnala da solo `NOT_CONNECTED` — il contratto è implementato, il fornitore non è connesso.
Sei fasce, ciascuna con il proprio status dichiarato: API documentata da integrare, componenti eseguibili aperti, ricerca aperta da valutare, fornitore da contattare, anteprima di ricerca senza API pubblica, e una fascia marcata bloccata per l’UE dove le licenze esaminate non autorizzano il lancio. Genie 3 rientra esplicitamente nella categoria anteprima di ricerca — non integrazione.
Dati e funzionamento
Dall’esplorazione all’implementazione
Un prodotto fisico configurabile, uno spazio, un macchinario. La domanda iniziale è quale decisione prende il visitatore dopo aver visto la scena.
Si parte dall’elenco delle azioni sicure, non dall’elenco delle frasi. A ogni azione vengono assegnate le regole linguistiche che la attivano, nella lingua del pubblico, e l’etichetta di provenienza corretta.
Le richieste valide sono la parte facile. Si testano le richieste ambigue, quelle fuori dallo scenario e quelle che combinano più azioni, così che la risposta „non posso fare questo, ma posso fare queste cose” sia utile.
Il risultato è un pacchetto statico servito da nginx su un server proprio, con certificato Let's Encrypt e possibilità di tornare alla versione precedente cambiando un collegamento simbolico. Non ha bisogno di un processo di server.
Una sola: `world-agent`, sul ramo `main`. `world-agent-v2` e `world-agent-provenance-atlas` sono copie di lavoro git (`git worktree`) dello stesso deposito, usate affinché esistano simultaneamente più varianti di design. `main` e `v2/world-generator` sono oggi allo stesso commit, quindi la „variante V2” non è un altro progetto, è ciò che gira.
No. È un motore di scena: gli oggetti e le azioni esistono prima, e il comando sceglie tra essi. Genie 3 compare nel nostro registro dei motori esattamente con il suo stato reale — anteprima di ricerca, senza API pubblica da lanciare, senza pesi pubblicati. Quello che facciamo noi invece è meno spettacolare e più facile da garantire: lo stesso comando dà lo stesso risultato, e ogni modifica ha un’etichetta di provenienza.
No, ed è una scelta. Il compilatore è un insieme di circa 22 regole di corrispondenza sul testo romeno, eseguite nel browser, che producono cambiamenti di stato tipizzati. Il vantaggio: è deterministico, non costa nulla per richiesta, non invia il testo da nessuna parte e può essere verificato riga per riga. Lo svantaggio: il vocabolario è finito, e quando una richiesta esce da esso il sistema lo dice invece di improvvisare.
Con il riconoscimento vocale del browser — `webkitSpeechRecognition`, con la lingua fissata su `ro-RO`. Questo significa in pratica browser con motore Chromium. Per il resto, la barra di testo fa esattamente la stessa cosa, con le stesse regole: la voce è una comodità, non una dipendenza.
No, e sono marcati come tali proprio nell’evento che li mostra: „Date fittizie marcate — non è un’offerta commerciale”. Non esiste integrazione con un catalogo del produttore o con un sistema di prezzi. In un’implementazione per un cliente, la fonte dei prezzi sarebbe il suo sistema, e l’etichetta di provenienza passerebbe da „Catalogo demo” alla fonte reale.
Non in questa build. I connettori compaiono nell’interfaccia con l’etichetta NOT CONNECTED, e il contratto degli strumenti esiste ma l’adattatore del fornitore segnala da solo `NOT_CONNECTED`. Esiste però già la parte difficile: otto strumenti visivi tipizzati, numeri di revisione del mondo, rifiuto su revisione obsoleta e ricevute idempotenti — cioè esattamente le protezioni di cui avete bisogno affinché un agente non applichi due volte la stessa azione su uno stato che nel frattempo è cambiato.
Sì, con il lavoro di configurazione descritto sopra: la scena, l’elenco delle azioni consentite e le regole di linguaggio vengono riscritti per l’oggetto rispettivo. Ciò che viene riutilizzato è l’architettura — il compilatore deterministico, il rail di provenienza, il contratto degli strumenti e la disciplina di revisione dello stato.
Esempio illustrativo
Uno scenario di utilizzo, senza dati del cliente o risultati commerciali attribuiti.
Il visitatore pronuncia o scrive la frase nella barra dei comandi.
Il testo viene passato attraverso le regole di corrispondenza in romeno: „alpi” attiva l’ambiente alpino, „notte” cambia l’ora, „pioggia” attiva il livello di pioggia. Ogni regola produce un evento separato con la propria etichetta di provenienza, e la scena Three.js riadatta camera, nebbia e colore di sfondo di conseguenza.
La scena cambia immediatamente, e nel rail laterale compaiono tre voci: „Ambiente composto — Strato creativo / simulato — Tracciato alpino”, „Tempo simulato — Strato creativo / simulato — Illuminazione notturna” e „Meteo simulato — Strato creativo / simulato — Strato di pioggia attivo”. L’agente risponde di aver applicato 3 modifiche e di aver mantenuto la fonte di ciascuna. Nessuna voce pretende di essere un dato reale.
Ce este necesar:Un browser cu WebGL. Pentru comandă vocală, un browser pe motor Chromium; altfel bara de text face același lucru.
Possibilità di collaborazione
Il collegamento delle fonti autorizzate, l’organizzazione delle informazioni e la revisione delle azioni da parte del team, con accesso separato per ruoli.
Definiamo un pilot attorno a un processo reale: utenti, dati, integrazioni, costi e criteri di accettazione. L’estensione segue dopo la valutazione del risultato.
Stabiliamo i requisiti di accessibilità, hosting, protezione dei dati e interoperabilità. Ogni connessione con servizi AGE o STISC richiede la validazione dell’ammissibilità, dell’accesso e delle approvazioni.
Questi sono scenari di adattamento, non dichiarazioni su contratti o partenariati esistenti. Le funzioni proposte si confermano nell’ambito di lavoro del progetto.
Discută un pilotSviluppiamo rappresentazioni 3D della città che combinano rilievo, mappe e dati sullo spazio costruito.
Prototip & cercetareAccesso API ai modelli AI tramite un’interfaccia comune.
PlatformăGrai è la nostra direzione di ricerca per la sintesi vocale e modelli adattati alle lingue usate qui.
Cercetare & dezvoltareRaccontaci il tuo processo. Insieme stabiliamo cosa vale la pena costruire, cosa possiamo collegare e come verifichiamo il risultato.