~/.codex/sessions/**/rollout-*.jsonl) pour reconstituer les spans. À la fin de chaque tour de conversation, un Stop hook lance un collecteur détaché : Codex n’attend donc jamais le réseau. Les tours d’une même session Codex partagent un identifiant de conversation, si bien qu’Agent Lens les affiche comme une seule conversation.
Prérequis
- macOS ou Linux. Windows n’est pas pris en charge.
- Node.js v20.6 ou version ultérieure.
- OpenAI Codex CLI, avec les hooks et la journalisation des enregistrements de session activés.
codex --ephemeraln’est pas pris en charge, car cette commande n’écrit aucun fichier d’enregistrement de session. - Un compte CoreWeave Forge et une clé API Forge.
- Un projet Agent Lens (
[YOUR-TEAM]/[YOUR-PROJECT]) destiné à recevoir les traces.
Installer le plugin
1
Installer le paquet
Ce plugin est distinct du plugin
weave-codex documenté dans le guide Weave. Son paquet est @coreweave/forge-agent-lens-for-codex, et sa commande, ses variables d’environnement et son répertoire de paramètres utilisent les noms forge-agent-lens-for-codex et FORGE_. Si vous avez installé weave-codex, exécutez weave-codex uninstall et npm uninstall -g weave-codex avant d’installer ce plugin, afin d’éviter que les deux n’envoient des traces en double. Attribuez à FORGE_TRACE_PROJECT la valeur que vous utilisiez pour WEAVE_PROJECT. Le plugin ne lit pas les paramètres de weave-codex.2
Définir votre projet et votre clé API
Remplacez Vous pouvez également exécuter
[YOUR-TEAM]/[YOUR-PROJECT] par votre projet Agent Lens et [YOUR-API-KEY] par votre clé API, puis exportez-les :wandb login au lieu de définir WANDB_API_KEY. Pour savoir comment le plugin détermine la valeur de chaque paramètre, consultez la Référence de configuration.3
Installer le Stop hook
~/.codex/hooks.json et sauvegarde une seule fois le fichier original dans hooks.json.bak. Elle ignore également vos sessions Codex existantes : seuls les tours de conversation exécutés après l’installation sont envoyés à Agent Lens. Pour envoyer délibérément cet historique, consultez Collecter les sessions passées.4
Approuver le hook dans Codex
Codex n’exécute pas les hooks nouvellement ajoutés tant que vous ne les avez pas approuvés :
-
Ouvrez un terminal et exécutez :
-
Dans l’écran interactif de Codex, et non dans votre shell, saisissez :
- Sous Stop Events, sélectionnez le hook Forge Agent Lens, puis activez-le ou marquez-le comme approuvé.
--dangerously-bypass-hook-trust.Exécutez forge-agent-lens-for-codex status pour vérifier que le hook est installé et que le plugin est ready.Afficher les traces Codex dans Agent Lens
Après avoir exécuté au moins une session Codex, ouvrez votre projet dans l’interface d’Agent Lens :- Accédez à CoreWeave Forge, sélectionnez Agent Lens dans le menu des produits, puis sélectionnez votre projet dans le sélecteur de projet, en haut du menu latéral.
- Dans le menu latéral, sélectionnez Conversations.
- Sélectionnez une conversation pour examiner la hiérarchie complète de ses tours de conversation.
Les horodatages des spans proviennent du fichier d’enregistrement de session : les durées reflètent donc le temps d’exécution réel. Chaque tour de conversation n’est envoyé qu’une seule fois. En cas d’échec d’un export, le plugin renvoie ce tour au prochain déclenchement du Stop hook.
Limitations connues
- Les commandes
codex(TUI interactive) etcodex execsont prises en charge. En revanche,codex mcp, les sessions passant directement par le serveur d’application ou l’API, ainsi que les tours de conversation interrompus qui ne déclenchent aucun événement Stop ne sont pas couverts. - Un sous-agent lancé n’apparaît que sous forme de span d’outil. Son fichier d’enregistrement de session distinct n’est pas reconstitué en trace imbriquée ; ses propres appels au modèle et exécutions d’outils ne sont donc pas capturés.
- Certains environnements
codex execn’exécutent pas le Stop hook. Voir Headless runs and explicit collection dans le README du plugin.
Référence de configuration
Cette section répertorie les paramètres disponibles pour personnaliser le comportement du plugin. L’état, les paramètres et le fichier journal se trouvent dans~/.forge-agent-lens-for-codex/, notamment settings.json et logs/collector.log. Ne définissez FORGE_CODEX_HOME que pour des environnements de développement ou de test isolés.
Définissez
FORGE_CODEX_PROVIDER_NAME si Codex envoie les requêtes via un proxy ou une passerelle vers un autre fournisseur de modèles. Le plugin enregistre cette valeur dans les spans de modèle.
Ordre de résolution des identifiants
Le plugin n’écrit jamais votre clé API danssettings.json. Il recherche une clé dans l’ordre suivant :
- La variable d’environnement
WANDB_API_KEY. - L’entrée
~/.netrcpourapi.wandb.ai, ou pour l’hôte défini dansWANDB_BASE_URLsi vous avez défini cette variable.
settings.json, lui-même prioritaire sur la valeur par défaut.
Le SDK Forge détermine le trace server et le transport. Pour un déploiement personnalisé, définissez WANDB_BASE_URL, ou définissez WF_TRACE_SERVER_URL pour remplacer explicitement le trace server.
Désactiver la capture du contenu
DéfinissezFORGE_CODEX_INCLUDE_CONTENT=false pour omettre les prompts, la sortie de l’assistant, le raisonnement, les arguments et résultats des outils, ainsi que le répertoire de travail. Les spans conservent les noms de modèles, l’utilisation des jetons, les durées, les noms d’outils, les ID d’appel et les noms des serveurs MCP.
Pour la collecte interactive via le Stop hook, définissez plutôt include_content sur false dans ~/.forge-agent-lens-for-codex/settings.json. Une variable définie uniquement sur la commande codex risque de ne pas être transmise aux hooks exécutés par un serveur d’application Codex déjà en cours d’exécution ; le paramètre défini dans le fichier est donc la méthode fiable. L’environnement du processus du hook est prioritaire sur le fichier de paramètres : assurez-vous donc que cet environnement ne définit pas FORGE_CODEX_INCLUDE_CONTENT=true. Si cette variable n’est pas définie, le plugin utilise la valeur de settings.json. La variable d’environnement est fiable pour les exécutions explicites de forge-agent-lens-for-codex collect.
Collecter les sessions passées
collect --all effectue un import rétroactif explicite. Cette commande envoie, depuis chaque enregistrement de session, les tours qui n’ont pas encore été exportés. Un enregistrement de session sans curseur est lu depuis le début. Cette commande peut donc envoyer un historique antérieur à l’installation du plugin :
--json pour envoyer les résultats au format JSON.
Vérifier le statut du plugin
Vous pouvez utiliser cette commande pour vérifier le statut du plugin ou diagnostiquer des problèmes :--json pour obtenir le même rapport au format JSON.
Si les tours de conversation n’apparaissent pas dans Agent Lens, consultez le journal du collecteur :
Dépannage
Les sections suivantes décrivent les problèmes courants et la manière de les résoudre. Le journal du collecteur, situé dans~/.forge-agent-lens-for-codex/logs/collector.log, constitue la principale source de diagnostic. Le plugin journalise toujours les erreurs, quelle que soit la valeur du paramètre debug.
Aucune trace n’apparaît après l’exécution de Codex
- Exécutez
forge-agent-lens-for-codex status. Si la dernière ligne indiquenot ready, corrigez le problème signalé. - Vérifiez que le hook est installé et activé. Si vous avez ignoré l’approbation, exécutez
codex, puis/hooks, et activez le hook. - Vérifiez que
FORGE_TRACE_PROJECTest défini sur un slugentity/projectvalide, contenant exactement un/.statusaffiche le projet résolu. - Vérifiez qu’une clé API a bien été résolue.
statusindique si c’est le cas, mais pas d’où provient la clé. Si le plugin lit la mauvaise clé, vérifiezWANDB_API_KEYet~/.netrc. - Vérifiez que Codex ne s’exécute pas avec
--ephemeral. Cette option empêche la création du fichier d’enregistrement de session que lit le plugin. - Si vous avez mis à niveau le paquet ou changé de version de Node.js, exécutez de nouveau
forge-agent-lens-for-codex install. Le hook conserve les chemins de Node.js et du paquet en vigueur lors de son installation.
Les tours de conversation s’affichent, mais le texte d’entrée et de sortie est vide
La capture du contenu est peut-être désactivée. Vérifiez queFORGE_CODEX_INCLUDE_CONTENT n’est pas défini sur false et que include_content n’est pas défini sur false dans ~/.forge-agent-lens-for-codex/settings.json. La commande status affiche la valeur résolue de include content.
Erreurs lors de l’envoi des traces vers Agent Lens
Si le plugin est actif et génère des spans qui n’apparaissent pas dans Agent Lens, recherchez une erreur d’exportation dans le journal du collecteur et reportez-vous au tableau ci-dessous.Mettre à niveau le plugin
Le hook enregistre les chemins de Node.js et du paquet utilisés lors de son installation. Pour effectuer une mise à niveau, ou après avoir changé de version de Node.js, réinstallez le paquet et exécutez à nouveauinstall :