Dentro Grok Build: leggere un harness di agente open
Il 14–16 luglio 2026 xAI ha pubblicato Grok Build — l'agente di coding dietro la sua CLI — come repository pubblico Apache 2.0 su xai-org/grok-build. Non i pesi. L'harness: il loop dell'agente, le implementazioni dei tool, l'interfaccia da terminale, il sistema di estensioni. È finito in prima pagina su Hacker News nel giro di poche ore.
È un artefatto raro. Quasi tutti gli agenti di coding seri — Claude Code, Cursor, Codex — vengono distribuiti come binario o come bundle. Qui ci sono circa 800.000 righe di Rust di produzione in un repository che puoi leggere. Vale più come libro di testo che come prodotto.
Questa pagina è la lettura pratica: cosa c'è davvero dentro, cosa insegna la struttura su come si costruiscono gli agenti, e due cose di questo rilascio che gran parte della copertura giornalistica ha raccontato al contrario.
- Capire cosa è stato pubblicato e cosa no — l'harness sì, i pesi no, la storia di sviluppo no
- Leggere la mappa dei crate come una checklist di ciò che serve davvero a un agente di coding di produzione
- Capire perché qui Apache 2.0 significa source-available, non open-development — e perché la distinzione è portante
- Vedere il codice del data-collector ancora presente nell'albero pubblicato, e cosa confermano le sue costanti sull'incidente di esfiltrazione di luglio
- Sapere cosa è realmente riutilizzabile da questo repository e cosa invece è un vicolo cieco
Cosa è stato pubblicato davvero
Il repository è Rust per oltre il 99%, con licenza Apache 2.0, e si descrive come un harness per agente di coding più una TUI — a schermo intero, interattiva col mouse, estendibile. Si compila su macOS e Linux con una toolchain Rust fissata.
Tre cose che non è:
- Non è il modello. I pesi di Grok 4.5 non sono qui e non sono aperti. L'harness parla con un endpoint hosted. Puoi leggere ogni riga di come l'agente ragiona sulla tua codebase e comunque non eseguirlo senza le API di xAI.
- Non è una storia di sviluppo. Il repository ha due commit:
Publish harness and TUI open-source, poiSynced from monorepo. Alla radice c'è un fileSOURCE_REVche contiene un singolo hash di revisione interna. È l'export di un monorepo privato, ri-sincronizzato periodicamente — non un repository sviluppato in pubblico e non uno su cui puoi fare archeologia per capire le scelte di design. - Non è aperto a te.
CONTRIBUTING.mddice chiaramente che il repository non accetta pull request esterne né patch non sollecitate, che xAI sviluppa il software internamente e che l'albero è pubblicato "per trasparenza del sorgente e build locali". Le issue di GitHub sono disabilitate a livello di repository.
★ La distinzione che conta: Apache 2.0 è una licenza, e ti concede diritti reali — leggere, forkare, modificare, distribuire derivati. Non dice nulla sulla governance. Grok Build è source-available sotto una licenza open-source con un modello di sviluppo chiuso. Puoi forkarlo; non puoi influenzarlo. Leggi "open source" nei titoli come "puoi leggere il sorgente", perché è esattamente e soltanto quello che viene offerto.
La mappa dei crate è la vera lezione
Ignora il marketing. L'elenco delle directory sotto crates/codegen/ è la cosa più utile del repository, perché è un inventario onesto di ciò che serve a un agente di coding che va in produzione. Una selezione:
| Crate | Cosa ti dice |
|---|---|
xai-grok-agent, xai-grok-shell | Il runtime dell'agente e i suoi entry point — interattivo, stdio, headless |
xai-grok-tools, xai-grok-tools-api | Le implementazioni dei tool, separate dall'interfaccia dei tool — un confine vero |
xai-grok-workspace, xai-fast-worktree | Filesystem, controllo di versione, esecuzione, checkpoint — e worktree git veloci |
xai-codebase-graph | Comprensione strutturale di un repository, non solo grep |
xai-grok-memory | La memoria è un sottosistema, non un trucco di prompting |
xai-grok-mcp | MCP è una superficie di integrazione di prima classe |
xai-grok-hooks, xai-hooks-plugins-types | Hook e plugin hanno un proprio layer di tipi |
xai-grok-subagent-resolution | Decidere quale subagente gestisce cosa è abbastanza difficile da meritare un crate a sé |
xai-token-estimation | Contare i token prima di spenderli |
xai-hunk-tracker | Tracciare gli hunk dei diff lungo una sessione di editing |
xai-grok-pager, xai-ratatui-inline | La TUI — scrollback, prompt, modali, rendering inline |
xai-acp-lib | Agent Client Protocol — gli editor incorporano l'agente |
xai-grok-telemetry, xai-mixpanel | Telemetria e product analytics, come crate di prima classe |
ptyctl, xai-tty-utils, xai-grok-crash-handler | I terminali sono ostili e i processi crashano |
Rileggi quella lista come un piano di costruzione. Il modello mentale ingenuo di un agente di coding è "un loop che chiama un modello ed esegue tool". La decomposizione reale comprende un grafo della codebase, un sottosistema di memoria, il checkpointing, la gestione delle worktree, il tracciamento degli hunk, la risoluzione dei subagenti, la stima dei token, la gestione dei crash e un layer di controllo delle PTY — prima ancora di scrivere un singolo prompt.
★ La verifica di scala. Simon Willison ha contato 844.530 righe di Rust nell'albero, di cui solo il ~3% dipendenze vendorizzate, e ha notato che il Codex di OpenAI si attesta su circa 950.933 righe. Due team indipendenti, che convergono vicino al milione di righe, per "un loop attorno a un LLM". Se il tuo progetto di agente ti sembra fuori controllo, questa è la calibrazione: non sei tu, e la parte difficile non è mai stata il loop.
C'è anche un crate xai-grok-mermaid — un renderer da terminale che disegna diagrammi Mermaid con i caratteri Unicode di box-drawing. Non è importante. È un bel promemoria del fatto che la rifinitura è una frazione enorme di qualunque agente reale.
Il codice del data-collector è ancora nell'albero
È qui che il repository smette di essere un libro di testo e comincia a essere una prova.
A luglio 2026 la cattura di traffico di un ricercatore ha mostrato Grok Build caricare interi repository — storia git completa, file mai letti, contenuti dei .env — su un bucket Google Cloud Storage, attraverso un canale scollegato da ciò che il modello leggeva. AILmanac copre quell'incidente e la modalità di fallimento generale in Cosa carica il tuo agente. xAI ha disabilitato il comportamento lato server e ha dichiarato che i dati conservati sarebbero stati cancellati.
Il sorgente pubblicato contiene quel macchinario. Verificabile direttamente dal repository:
crates/codegen/xai-grok-shell/src/upload/gcs.rsesiste.crates/codegen/xai-file-utils/src/upload_config.rsdefinisceDEDUP_GCS_PREFIX = "repo_changes_dedup".
Quella costante è la parte interessante. L'upload intercettato dal ricercatore finiva su path di oggetti della forma gs://grok-code-session-traces/repo_changes_dedup/v2/…. Il prefisso del path catturato sul filo è una costante con nome nel sorgente pubblicato da xAI stessa. Lo stesso file definisce sia ARCHIVE_SCHEMA_VERSION (v2) sia ARCHIVE_SCHEMA_VERSION_V3 — il che significa che il formato dell'archivio era stato iterato fino a una terza versione. Era infrastruttura mantenuta, non un path di debug lasciato lì per caso.
La documentazione del modulo in gcs.rs è più esplicita di qualunque comunicato stampa. Definisce gli helper di upload "the data-collector helpers", e l'intera ragione di esistere del file è una correzione ingegneristica: far passare credenziali refresh-aware in modo che i token scaduti smettano di causare 401 su POST /v1/storage. Qualcuno stava debuggando l'affidabilità del path di upload dei repository come lavoro di produzione.
Simon Willison riporta che il path di upload ora è disabilitato nell'albero pubblicato e restituisce un errore hard-coded. È coerente con la posizione dichiarata da xAI, ma non siamo riusciti a confermare in modo indipendente il meccanismo specifico tramite ricerca nel codice — trattalo come riportato, non come verificato qui.
★ Cosa portarsi via. Non "xAI è unicamente cattiva" — la lezione più ampia della pagina sulla sicurezza resta valida: questa classe di canale esiste in qualche forma in molti agenti, e leggere il sorgente è l'unico modo per saperlo. Prendi invece il meta-punto: è esattamente a questo che serve la trasparenza del sorgente. Non puoi verificare i flussi di dati di un binario in un pomeriggio. Puoi fare grep di bucket_url in un albero pubblicato in circa dieci secondi. Il rilascio è genuinamente prezioso proprio perché rende greppabili le parti scomode.
Check yourself
0/4Cosa è davvero riutilizzabile
Sii onesto sui vincoli prima di forkare:
- I confini tra i crate sono il prodotto di un team ben finanziato che spedisce a utenti veri. Quella decomposizione — tools separati da tools-api, workspace separato dall'agente, la risoluzione dei subagenti come preoccupazione a sé — è l'asset trasferibile. Copiare il Rust da lì ti rende molto meno che copiarne la forma.
- Willison nota che le implementazioni dei tool mostrano segni di essere state adattate da prodotti concorrenti, tra cui Codex, Claude e Cursor. Questo rende il layer dei tool un riferimento di design convergente: dove tre o quattro agenti sono arrivati indipendentemente allo stesso contratto di tool, quel contratto è probabilmente giusto.
- Il valore di un albero pubblicato è che puoi controllare le affermazioni invece di crederci. Fai grep di client HTTP, URL di bucket, crate di telemetria e call site di upload. Qui xai-grok-telemetry e xai-mixpanel sono crate di prima classe — non è uno scandalo, ma è un fatto che puoi scoprire solo guardando.
- Niente PR, niente issue. Se forki, il tuo fork è tuo per sempre, e fai rebase sugli export del monorepo secondo i tempi di xAI. Mettilo a budget.
Se vuoi esplorare l'albero senza compilarlo:
Clona e mappa la struttura dei crate
git clone --depth 1 https://github.com/xai-org/grok-build cd grok-build # The inventory of what a production coding agent needs ls crates/codegen/ # Where does data leave the machine? Start here, not with the README. grep -rn "bucket_url\|/v1/storage\|upload_bytes" crates/ --include=*.rs | head -30 # Which internal revision was this cut from? cat SOURCE_REV
Dove si colloca rispetto a ciò che già conosci
Se usi Claude Code, Grok Build è lo stesso tipo di strumento con le viscere in vista — leggilo come una seconda opinione su problemi che hai già. CLI di agenti di coding a confronto lo colloca rispetto al campo, e Grok per utenti Claude copre l'ecosistema xAI attorno a esso.
Per le idee architetturali a cui la mappa dei crate accenna, vedi harness per agenti a lunga esecuzione e architetture di memoria degli agenti — xai-grok-memory e xai-grok-subagent-resolution sono le risposte di un team a esattamente quei problemi.
E leggi Cosa carica il tuo agente insieme a questa pagina. Quella ti mostra come intercettare un canale come questo sul filo con mitmproxy e un repository canarino. Questa ti mostra che aspetto ha nel sorgente. Le due tecniche insieme sono l'audit completo.
Fonti e approfondimenti
- xai-org/grok-build — il repository stesso:
README.md,CONTRIBUTING.md,SOURCE_REVe l'alberocrates/codegen/. La fonte primaria per tutto ciò che è strutturale in questa pagina. - xai-org/grok-build, now open source — la lettura di Simon Willison: i conteggi di righe, il confronto con Codex, il renderer Mermaid, le implementazioni dei tool adattate e lo stato del path di upload.
- Grok Build is Now Open Source — l'annuncio di xAI.
- Introducing Grok Build — il post di lancio originale della CLI.
- SpaceXAI Open-Sources Grok Build — la panoramica componente per componente di MarkTechPost su harness, layer dei tool e sistema di estensioni.
- Cosa carica il tuo agente — la copertura di AILmanac sulla cattura di traffico che questo rilascio del sorgente corrobora.