Aller au contenu principal

Dans Grok Build : lire un harness d'agent ouvert

Avancé

Les 14–16 juillet 2026, xAI a publié Grok Build — l'agent de codage derrière sa CLI — comme dépôt public Apache 2.0 à xai-org/grok-build. Pas les poids. Le harness : la boucle d'agent, les implémentations d'outils, l'interface de terminal, le système d'extensions. Il est arrivé en une de Hacker News en quelques heures.

C'est un artefact rare. Presque tout agent de codage sérieux — Claude Code, Cursor, Codex — est livré comme binaire ou bundle. Ici, environ 800 000 lignes de Rust de production sont posées dans un dépôt que vous pouvez lire. Cela vaut davantage comme manuel que comme produit.

Cette page est la lecture pratique : ce qu'il y a vraiment dedans, ce que la structure enseigne sur la construction d'agents, et deux choses à propos de cette publication que la plupart des articles ont prises à l'envers.

What you'll learn
  • Comprendre ce qui a été publié et ce qui ne l'a pas été — le harness oui, les poids non, l'historique de développement non
  • Lire la carte des crates comme une checklist de ce dont un agent de codage de production a réellement besoin
  • Comprendre pourquoi Apache 2.0 signifie ici source-available, pas open-development — et pourquoi cette distinction est porteuse
  • Voir le code du collecteur de données encore présent dans l'arbre publié, et ce que ses constantes confirment sur l'incident d'exfiltration de juillet
  • Savoir ce qui est vraiment réutilisable de ce dépôt et ce qui est une impasse

Ce qui a réellement été publié

Le dépôt est à plus de 99 % du Rust, licencié Apache 2.0, et se décrit comme un harness d'agent de codage et une TUI — plein écran, interactive à la souris, extensible. Il se construit sur macOS et Linux avec une toolchain Rust épinglée.

Trois choses qu'il n'est pas :

  • Pas le modèle. Les poids de Grok 4.5 ne sont pas ici et ne sont pas ouverts. Le harness parle à un endpoint hébergé. Vous pouvez lire chaque ligne de la façon dont l'agent pense à votre codebase et quand même ne pas le faire tourner sans l'API de xAI.
  • Pas un historique de développement. Le dépôt a deux commits : Publish harness and TUI open-source, puis Synced from monorepo. Il y a un fichier SOURCE_REV à la racine contenant un seul hash de révision interne. C'est un export d'un monorepo privé, re-synchronisé périodiquement — pas un dépôt développé en public et pas un que vous puissiez archéologiser pour ses décisions de conception.
  • Pas ouvert pour vous. CONTRIBUTING.md déclare sans détour que le dépôt n'accepte pas de pull requests externes ni de patchs non sollicités, que xAI développe le logiciel en interne, et que l'arbre est publié « pour la transparence des sources et les builds locaux ». Les issues GitHub sont désactivées au niveau du dépôt.

La distinction qui compte : Apache 2.0 est une licence, et elle vous accorde de vrais droits — lire, forker, modifier, livrer des dérivés. Elle ne dit rien sur la gouvernance. Grok Build est source-available sous une licence open source avec un modèle de développement fermé. Vous pouvez le forker ; vous ne pouvez pas l'influencer. Lisez « open source » dans les titres comme « vous pouvez lire le source », car c'est exactement et seulement ce qui est offert.

La carte des crates est la vraie leçon

Ignorez le marketing. Le listing de répertoires sous crates/codegen/ est la chose la plus utile du dépôt, car c'est un inventaire honnête de ce dont un agent de codage livré a besoin. Une sélection :

CrateCe qu'il vous apprend
xai-grok-agent, xai-grok-shellLe runtime de l'agent et ses points d'entrée — interactif, stdio, headless
xai-grok-tools, xai-grok-tools-apiLes implémentations d'outils, séparées de l'interface d'outils — une vraie frontière
xai-grok-workspace, xai-fast-worktreeSystème de fichiers, contrôle de version, exécution, checkpoints — et worktrees git rapides
xai-codebase-graphCompréhension structurelle d'un dépôt, pas juste du grep
xai-grok-memoryLa mémoire est un sous-système, pas une astuce de prompt
xai-grok-mcpMCP est une surface d'intégration de première classe
xai-grok-hooks, xai-hooks-plugins-typesLes hooks et plugins ont leur propre couche de types
xai-grok-subagent-resolutionRésoudre quel subagent gère quoi est assez dur pour nécessiter sa propre crate
xai-token-estimationCompter les tokens avant de les dépenser
xai-hunk-trackerSuivre les hunks de diff au fil d'une session d'édition
xai-grok-pager, xai-ratatui-inlineLa TUI — scrollback, prompts, modales, rendu inline
xai-acp-libAgent Client Protocol — les éditeurs embarquent l'agent
xai-grok-telemetry, xai-mixpanelTélémétrie et analytics produit, comme crates de première classe
ptyctl, xai-tty-utils, xai-grok-crash-handlerLes terminaux sont hostiles et les processus plantent

Relisez cette liste comme un plan de build. Le modèle mental naïf d'un agent de codage est « une boucle qui appelle un modèle et lance des outils ». La décomposition réelle inclut un graphe de codebase, un sous-système de mémoire, du checkpointing, la gestion de worktrees, le suivi des hunks, la résolution de subagents, l'estimation de tokens, la gestion des plantages et une couche de contrôle PTY — avant d'écrire un seul prompt.

La vérification d'échelle. Simon Willison a compté 844 530 lignes de Rust dans l'arbre, seulement ~3 % de dépendances vendorisées, et a noté que le Codex d'OpenAI se situe à environ 950 933 lignes. Deux équipes indépendantes, convergeant près du million de lignes, pour « une boucle autour d'un LLM ». Si votre projet d'agent semble enfler, voici le calibrage : ce n'est pas vous, et la partie difficile n'a jamais été la boucle.

Il y a aussi une crate xai-grok-mermaid — un renderer de terminal qui dessine des diagrammes Mermaid avec des caractères Unicode de dessin de cases. Elle n'est pas importante. C'est un joli rappel que livrer du soin représente une grande fraction de tout vrai agent.

Le code du collecteur de données est encore dans l'arbre

C'est là où le dépôt cesse d'être un manuel et devient une preuve.

En juillet 2026, la capture réseau d'un chercheur a montré Grok Build téléversant des dépôts entiers — historique git complet, fichiers jamais lus, contenus de .env — vers un bucket Google Cloud Storage, par un canal sans rapport avec ce que le modèle lisait. AILmanac couvre cet incident et le mode de défaillance général dans Ce que votre agent téléverse. xAI a désactivé le comportement côté serveur et a dit que les données conservées seraient supprimées.

Le source publié contient cette machinerie. Vérifiable directement depuis le dépôt :

  • crates/codegen/xai-grok-shell/src/upload/gcs.rs existe.
  • crates/codegen/xai-file-utils/src/upload_config.rs définit DEDUP_GCS_PREFIX = "repo_changes_dedup".

Cette constante est celle qui est intéressante. Le téléversement intercepté par le chercheur allait vers des chemins d'objets de la forme gs://grok-code-session-traces/repo_changes_dedup/v2/…. Le préfixe de chemin capturé sur le réseau est une constante nommée dans le propre source publié de xAI. Le même fichier définit à la fois ARCHIVE_SCHEMA_VERSION (v2) et ARCHIVE_SCHEMA_VERSION_V3 — ce qui signifie que le format d'archive avait été itéré vers une troisième version. C'était une infrastructure maintenue, pas un chemin de debug égaré.

La documentation du module dans gcs.rs est plus directe que tout communiqué de presse. Elle qualifie les helpers de téléversement de « data-collector helpers », et la raison d'être entière du fichier est un correctif d'ingénierie : faire passer des credentials conscients du rafraîchissement pour que les tokens périmés cessent de causer des POST /v1/storage 401. Quelqu'un déboguait la fiabilité du chemin de téléversement de dépôt comme travail de production.

Simon Willison rapporte que le chemin de téléversement est désormais désactivé dans l'arbre publié, renvoyant une erreur codée en dur. C'est cohérent avec la position déclarée de xAI, et nous n'avons pas pu confirmer indépendamment le mécanisme précis par recherche de code — traitez-le comme rapporté plutôt que vérifié ici.

Ce qu'il faut en retenir. Pas « xAI est uniquement mauvais » — la leçon plus large de la page sécurité tient : cette classe de canal existe sous une forme ou une autre dans beaucoup d'agents, et lire le source est le seul moyen de savoir. Retenez plutôt le méta-point : c'est exactement à cela que sert la transparence des sources. Vous ne pouvez pas auditer les flux de données d'un binaire en une après-midi. Vous pouvez grep un arbre publié pour bucket_url en une dizaine de secondes. La publication est vraiment précieuse précisément parce qu'elle rend greppables les parties inconfortables.

Check yourself

0/4
  1. xai-org/grok-build est licencié Apache 2.0. Que vous dit cela sur le fait de contribuer un correctif en amont ?
  2. Le dépôt a deux commits et un fichier racine SOURCE_REV contenant un seul hash. Qu'est-ce que cela signifie ?
  3. Quelle est à peu près la taille du harness Grok Build, et quel est le chiffre comparable pour le Codex d'OpenAI ?
  4. Que confirme la constante DEDUP_GCS_PREFIX dans upload_config.rs ?

Ce qui est vraiment réutilisable

Soyez honnête sur les contraintes avant de forker :

Guided walkthrough1 of 4
  1. Les frontières entre crates sont le produit d'une équipe bien financée livrant à de vrais utilisateurs. Cette décomposition — tools séparé de tools-api, workspace de agent, résolution de subagent comme préoccupation propre — est l'actif transférable. Copier du Rust en sortant vous rapporte bien moins que copier la forme.

Si vous voulez explorer l'arbre sans le construire :

Cloner et cartographier la structure des crates

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

Où il se place par rapport à ce que vous connaissez

Si vous pilotez Claude Code, Grok Build est la même catégorie d'outil avec ses entrailles exposées — lisez-le comme un second avis sur des problèmes que vous avez déjà. Comparaison des CLI d'agents de codage le situe face au reste du champ, et Grok pour les utilisateurs de Claude couvre l'écosystème xAI autour de lui.

Pour les idées d'architecture que la carte des crates suggère, voir harnesses d'agents à longue durée et architectures de mémoire d'agentxai-grok-memory et xai-grok-subagent-resolution sont les réponses d'une équipe à exactement ces problèmes.

Et lisez Ce que votre agent téléverse à côté de cette page. Celle-là vous montre comment attraper un canal de ce genre sur le réseau avec mitmproxy et un dépôt canari. Celle-ci vous montre à quoi ça ressemble dans le source. Les deux techniques ensemble forment l'audit complet.

Sources & lectures complémentaires