Núm. 03X by Nexow
D’una frase a un widget en viu
A X by Nexow descrius un widget amb paraules normals. El model escriu un petit programa, i el llenç l’executa en una caixa de la qual no pot sortir.
Alex Colls Outumuro
Cofundador i CTO · · 3 min de lectura
X by Nexow converteix una frase en un widget sobre un llenç: el gràfic d’un mercat, la taula d’una cartera, una llista de seguiment que es mou en viu. Molta gent suposa que el model omple una plantilla. No és així. Escriu codi.
El model escriu un mòdul
Cada widget és un petit arbre de fitxers. El seu punt d’entrada, index.js, exporta una sola funció:
export async function render(ctx) { … }El model el construeix com ho faria un desenvolupador, amb eines per escriure, editar, llegir i llistar fitxers. Mentre escriu, pot consultar: la documentació de referència de cada connector, una sonda que crida un endpoint real per veure què torna, i una cerca d’API públiques.
El contingut dels fitxers arriba en streaming mentre el model l’escriu, així que veus aparèixer el codi en lloc d’un indicador de càrrega. Fer streaming de l’entrada d’una eina té un parany: l’API ja no la valida per tu. El nostre bucle torna a analitzar cada crida a una eina, de manera estricta, i retorna l’entrada truncada perquè el model ho torni a provar.
Comprovat abans d’executar-se
Abans de muntar un widget, el seu codi es neteja de prosa solta i de marques de markdown, i passa pel linter. Un segon agent treballa al costat del primer i torna a comprovar els endpoints dels quals depèn el widget, amb fins a cinc sondes i una ronda de reparació en el mateix torn. Un cop muntat, una prova de fum busca un render buit o un bucle desbocat.
Si un widget es trenca just després de construir-se, X el repara un cop, en 45 segons, i s’atura aquí. No continuarà gastant els teus crèdits en els seus propis arranjaments.
Una caixa de la qual no pot sortir
Cada widget s’executa en el seu propi iframe aïllat, amb els scripts permesos i res més, així que rep un origen opac. Una política de seguretat de contingut bloqueja les crides a altres hosts. Tot el que ve de fora, dades o contingut multimèdia, entra per ctx, que l’app obté en nom del widget.
Així és també com les claus queden fora d’abast. El model no veu mai una credencial: només veu si una font està connectada, no necessita clau o no està connectada. Les claus desades al núvol es xifren amb AES-GCM, i per defecte les crides passen per proxies sense estat.
El model escriu el codi. No té mai les claus.
En viu, sense deu connexions
Un widget continua en viu gràcies a ctx: històric, subscripcions, dades de compte, consultes. Al darrere, un hub de dades compartit obre cada flux un sol cop, el llegeixin tants widgets com el llegeixin, i posa els fluxos en pausa mentre la pestanya és en segon pla. Deu gràfics del mateix mercat comparteixen un sol WebSocket.
Avui hi ha 95 connectors, des d’exchanges amb els seus propis fluxos WebSocket fins a fonts REST en un bucle de sondeig compartit amb espera progressiva. Dos estan marcats com a estables. La resta encara porten una etiqueta beta a l’app.
Alex

