Spui ce vrei
O cerere în limbaj natural descrie schimbarea dorită.
Interacțiune vizuală & agenți Demonstrator de cercetare
World Agent este un demonstrator pentru interacțiunea în limbaj natural cu o scenă vizuală. Explorăm legătura dintre conversație, starea unui obiect și acțiuni vizibile într-un mediu 3D.

World Agent
O cerere în limbaj natural descrie schimbarea dorită.
Cererea este legată de acțiunile disponibile în demonstrator.
Mediul vizual se actualizează, iar pașii pot fi urmăriți.
Explorarea unui obiect și a opțiunilor sale prin conversație.
Legătura dintre comenzile utilizatorului și o scenă navigabilă.
Evaluarea unui runtime vizual înaintea integrărilor comerciale.
Scena și catalogul demonstratorului sunt conceptuale. Nu prezentăm o integrare CRM sau un model generativ de lume ca fiind conectat în această versiune.
World Agent în detaliu
World Agent răspunde la o întrebare de interfață: ce se schimbă dacă, în loc să apeși pe butoane, spui ce vrei și scena se schimbă în fața ta? Vorbești, iar mașina din scenă își schimbă culoarea, jantele, mediul, vremea, ora, unghiul camerei, ușile și portbagajul.
Partea interesantă nu e că înțelege comanda, ci că fiecare schimbare lasă o urmă care spune de unde a venit: din catalog, din comanda utilizatorului, din stratul creativ sau din sistem. Un strat de ceață pe un traseu alpin e etichetat „simulare vizuală”; o culoare din paleta de patru e etichetată „catalog”. Utilizatorul nu trebuie să ghicească ce e adevărat și ce e decor.
Există trei directoare cu nume asemănător pe disc; două dintre ele — `world-agent-v2` și `world-agent-provenance-atlas` — nu sunt proiecte separate, ci copii de lucru git ale aceluiași depozit. Varianta reală e `world-agent` pe ramura `main`, care poartă azi reformularea V2 „World Generator” și e identică bit cu bit cu ramura `v2/world-generator`.
Aproximativ 22 de reguli de potrivire pe text românesc traduc o frază într-o schimbare tipizată de stare. „Fă mașina albă și pune jante sport” atinge două reguli și produce două evenimente distincte. Nu e model de limbaj: e cod care rulează în browser, dă același rezultat de fiecare dată și se poate citi linie cu linie.
Recunoașterea vocală folosește `webkitSpeechRecognition` din browser, cu limba fixată pe `ro-RO`. Unde interfața nu există — sau utilizatorul preferă tastatura — bara de comandă rămâne funcțională, cu aceleași reguli. Nu trimitem audio nicăieri.
Un vehicul construit procedural din primitive Three.js (caroserie, cabină din capsulă de sticlă, patru roți cu jante, faruri, uși, portbagaj), pe un platou cu inel, grilă și trei lumini. Randare cu tone mapping ACES Filmic, raport de pixeli plafonat la 1,75 și oprire completă a animației când sistemul cere mișcare redusă.
Fiecare mutație de stare produce un eveniment cu una din patru etichete: Catalog, User command, Creative layer sau System. Eticheta „Creative layer” se afișează literal ca „Strat creativ / simulat”. Fișa de ofertă apare cu detaliul „Date fictive marcate — nu este ofertă comercială”.
Există un runtime normalizat cu opt unelte vizuale (`visual.inspect`, `visual.highlight`, `visual.move`, `visual.create`, `visual.delete`, `world.query`, `ui.navigate`, `ui.open_panel`) și un jurnal de evenimente cu numere de revizie a lumii. Un apel cu revizie învechită e respins cu `STALE_REVISION`; un apel repetat cu același `actionId` întoarce chitanța originală marcată ca reluare. Adaptorul de voce raportează el însuși `NOT_CONNECTED` — contractul e implementat, furnizorul nu e conectat.
Șase benzi, fiecare cu statutul ei declarat: API documentat de integrat, componente rulabile deschise, cercetare deschisă de evaluat, furnizor de contactat, previzualizare de cercetare fără API public, și o bandă marcată blocat pentru UE unde licențele examinate nu autorizează lansarea. Genie 3 stă explicit în categoria previzualizare de cercetare — nu integrare.
Date și funcționare
De la explorare la implementare
Un produs fizic configurabil, un spațiu, un utilaj. Întrebarea de pornire e ce decizie ia vizitatorul după ce vede scena.
Se pornește de la lista de acțiuni sigure, nu de la lista de fraze. Fiecare acțiune primește regulile de limbaj care o declanșează, în limba publicului, și eticheta de proveniență corectă.
Cererile valide sunt partea ușoară. Se testează cererile ambigue, cele în afara scenariului și cele care combină mai multe acțiuni, ca răspunsul „nu pot face asta, dar pot face astea” să fie util.
Rezultatul e un pachet static servit de nginx pe un server propriu, cu certificat Let's Encrypt și posibilitate de revenire la versiunea precedentă prin schimbarea unei legături simbolice. Nu are nevoie de proces de server.
Unul singur: `world-agent`, pe ramura `main`. `world-agent-v2` și `world-agent-provenance-atlas` sunt copii de lucru git (`git worktree`) ale aceluiași depozit, folosite ca să existe simultan mai multe variante de design. `main` și `v2/world-generator` sunt azi la același commit, deci „varianta V2” nu e un alt proiect, e ce rulează.
Nu. E un motor de scenă: obiectele și acțiunile există dinainte, iar comanda alege dintre ele. Genie 3 apare în registrul nostru de motoare exact cu statutul lui real — previzualizare de cercetare, fără API public de lansat, fără greutăți publicate. Ce facem noi în schimb e mai puțin spectaculos și mai ușor de garantat: aceeași comandă dă același rezultat, iar fiecare schimbare are o etichetă de proveniență.
Nu, și e o alegere. Compilatorul e un set de aproximativ 22 de reguli de potrivire pe text românesc, rulate în browser, care produc schimbări tipizate de stare. Avantajul: e determinist, nu costă nimic pe cerere, nu trimite textul nicăieri și se poate audita linie cu linie. Dezavantajul: vocabularul e finit, și când o cerere iese din el sistemul o spune în loc să improvizeze.
Cu recunoașterea vocală din browser — `webkitSpeechRecognition`, cu limba fixată pe `ro-RO`. Asta înseamnă practic browserele pe motor Chromium. În rest, bara de text face exact același lucru, cu aceleași reguli: vocea e o comoditate, nu o dependență.
Nu, și sunt marcate ca atare în chiar evenimentul care le afișează: „Date fictive marcate — nu este ofertă comercială”. Nu există integrare cu un catalog de producător sau cu un sistem de preț. Într-o implementare pentru un client, sursa de preț ar fi sistemul lui, iar eticheta de proveniență s-ar schimba din „Catalog demo” în sursa reală.
Nu în acest build. Conectorii apar în interfață cu eticheta NOT CONNECTED, iar contractul de unelte există dar adaptorul de furnizor raportează singur `NOT_CONNECTED`. Există însă partea grea deja scrisă: opt unelte vizuale tipizate, numere de revizie a lumii, respingere pe revizie învechită și chitanțe idempotente — adică exact protecțiile de care ai nevoie ca un agent să nu aplice de două ori aceeași acțiune peste o stare care s-a schimbat între timp.
Da, cu munca de configurare descrisă mai sus: scena, lista de acțiuni permise și regulile de limbaj se rescriu pentru obiectul respectiv. Ce se refolosește e arhitectura — compilatorul determinist, railul de proveniență, contractul de unelte și disciplina de revizie a stării.
Exemplu ilustrativ
Un scenariu de utilizare, fără date de client sau rezultate comerciale atribuite.
Vizitatorul rostește sau scrie fraza în bara de comandă.
Textul e trecut prin regulile de potrivire în română: „alpi” activează mediul alpin, „noapte” schimbă ora, „ploa” activează stratul de ploaie. Fiecare regulă produce un eveniment separat cu eticheta lui de proveniență, iar scena Three.js reașază camera, ceața și culoarea de fundal în consecință.
Scena se schimbă imediat, iar în railul lateral apar trei intrări: „Mediu compus — Strat creativ / simulat — Traseu alpin”, „Timp simulat — Strat creativ / simulat — Iluminare de noapte” și „Vreme simulată — Strat creativ / simulat — Strat de ploaie activ”. Agentul răspunde că a aplicat 3 schimbări și a păstrat sursa fiecăreia. Nicio intrare nu pretinde că e dată reală.
Ce este necesar:Un browser cu WebGL. Pentru comandă vocală, un browser pe motor Chromium; altfel bara de text face același lucru.
Posibilități de colaborare
Conectarea surselor autorizate, organizarea informației și revizuirea acțiunilor de către echipă, cu acces separat pe roluri.
Definim un pilot în jurul unui proces real: utilizatori, date, integrări, costuri și criterii de acceptare. Extinderea urmează după evaluarea rezultatului.
Stabilim cerințele de accesibilitate, găzduire, protecție a datelor și interoperabilitate. Orice conexiune cu servicii AGE sau STISC necesită validarea eligibilității, accesului și aprobărilor.
Acestea sunt scenarii de adaptare, nu declarații despre contracte sau parteneriate existente. Funcțiile propuse se confirmă în domeniul de lucru al proiectului.
Discută un pilotDezvoltăm reprezentări 3D ale orașului care combină relief, hărți și date despre spațiul construit.
Prototip & cercetareAcces API la modele AI printr-o interfață comună.
PlatformăGrai este direcția noastră de cercetare pentru sinteză vocală și modele adaptate limbilor folosite aici.
Cercetare & dezvoltarePovestește-ne despre procesul tău. Împreună stabilim ce merită construit, ce putem conecta și cum verificăm rezultatul.