Codex harness

Environnement d’exécution du harnais Codex

Cette page documente le contrat d’exécution pour les tours du harness Codex. Pour la configuration et le routage, commencez par harness Codex. Pour les champs de configuration, consultez la référence du harness Codex.

Vue d’ensemble

Le mode Codex n’est pas OpenClaw avec simplement un appel à un autre modèle en dessous. Codex possède une plus grande partie de la boucle native du modèle, et OpenClaw adapte ses surfaces de Plugin, d’outils, de session et de diagnostic autour de cette frontière.

OpenClaw possède toujours le routage des canaux, les fichiers de session, la livraison des messages visibles, les outils dynamiques OpenClaw, les approbations, la livraison des médias et un miroir de transcript. Codex possède le fil natif canonique, la boucle native du modèle, la continuation native des outils et la Compaction native.

Le routage des prompts suit le runtime sélectionné, pas seulement la chaîne de fournisseur. Un tour Codex natif reçoit les instructions développeur du serveur d’application Codex, tandis qu’une route explicite de compatibilité OpenClaw conserve le prompt système OpenClaw normal, même lorsqu’elle utilise une authentification ou un transport OpenAI au style Codex.

Codex natif conserve les instructions de base/modèle appartenant à Codex et le comportement des docs de projet selon la configuration active du fil Codex. OpenClaw démarre et reprend les fils Codex natifs avec la personnalité intégrée de Codex désactivée afin que les fichiers de personnalité de l’espace de travail et l’identité de l’agent OpenClaw restent l’autorité. Les exécutions OpenClaw légères préservent toujours leur suppression existante des docs de projet. Les instructions développeur OpenClaw couvrent les préoccupations du runtime OpenClaw telles que la livraison du canal source, les outils dynamiques OpenClaw, la délégation ACP, le contexte de l’adaptateur et les fichiers de profil de l’espace de travail de l’agent actif. Les catalogues de Skills OpenClaw et les pointeurs MEMORY.md routés par outil sont projetés comme instructions développeur de collaboration limitées au tour pour Codex natif. Le contenu actif de BOOTSTRAP.md et l’injection de secours complète de MEMORY.md utilisent toujours le contexte de référence d’entrée du tour.

Liaisons de fil et changements de modèle

Lorsqu’une session OpenClaw est attachée à un fil Codex existant, le tour suivant renvoie au serveur d’application le modèle OpenAI actuellement sélectionné, la politique d’approbation, le sandbox et le niveau de service. Passer de openai/gpt-5.5 à openai/gpt-5.2 conserve la liaison au fil, mais demande à Codex de continuer avec le modèle nouvellement sélectionné.

Réponses visibles et Heartbeats

Lorsqu’un tour de chat direct/source passe par le harness Codex, les réponses visibles utilisent par défaut la livraison automatique de l’assistant final pour les surfaces WebChat internes. Cela maintient Codex aligné sur le contrat de prompt du harness Pi : les agents répondent normalement, et OpenClaw publie le texte final dans la conversation source. Définissez messages.visibleReplies: "message_tool" lorsqu’un chat direct/source doit intentionnellement garder privé le texte final de l’assistant, sauf si l’agent appelle message(action="send").

Les tours Heartbeat Codex reçoivent également heartbeat_respond par défaut dans le catalogue d’outils OpenClaw consultable, afin que l’agent puisse enregistrer si le réveil doit rester silencieux ou notifier sans encoder ce flux de contrôle dans le texte final.

Les consignes d’initiative propres au Heartbeat sont envoyées comme instruction développeur du mode collaboration Codex sur le tour Heartbeat lui-même. Les tours de chat ordinaires restaurent le mode par défaut de Codex au lieu de porter la philosophie Heartbeat dans leur prompt de runtime normal. Lorsqu’un fichier HEARTBEAT.md non vide existe, les instructions du mode collaboration Heartbeat orientent Codex vers le fichier au lieu d’intégrer son contenu en ligne.

Frontières des hooks

Le harness Codex comporte trois couches de hooks :

Couche Propriétaire Objectif
Hooks de Plugin OpenClaw OpenClaw Compatibilité produit/Plugin entre les harnesses OpenClaw et Codex.
Middleware d’extension du serveur d’application Codex Plugins groupés OpenClaw Comportement d’adaptateur par tour autour des outils dynamiques OpenClaw.
Hooks natifs Codex Codex Cycle de vie Codex bas niveau et politique native des outils depuis la configuration Codex.

OpenClaw n’utilise pas les fichiers hooks.json de projet ou globaux Codex pour router le comportement des Plugins OpenClaw. Pour le pont pris en charge des outils natifs et des permissions, OpenClaw injecte une configuration Codex par fil pour PreToolUse, PostToolUse, PermissionRequest et Stop.

Lorsque les approbations du serveur d’application Codex sont activées, c’est-à-dire lorsque approvalPolicy n’est pas "never", la configuration de hook natif injectée par défaut omet PermissionRequest afin que le réviseur du serveur d’application Codex et le pont d’approbation d’OpenClaw gèrent les véritables escalades après examen. Les opérateurs peuvent ajouter explicitement permission_request à nativeHookRelay.events lorsqu’ils ont besoin du relais de compatibilité.

Les autres hooks Codex, tels que SessionStart et UserPromptSubmit, restent des contrôles au niveau Codex. Ils ne sont pas exposés comme hooks de Plugin OpenClaw dans le contrat v1.

Pour les outils dynamiques OpenClaw, OpenClaw exécute l’outil après que Codex demande l’appel, donc OpenClaw déclenche le comportement de Plugin et de middleware qu’il possède dans l’adaptateur de harness. Pour les outils natifs Codex, Codex possède l’enregistrement canonique de l’outil. OpenClaw peut dupliquer certains événements, mais il ne peut pas réécrire le fil Codex natif sauf si Codex expose cette opération via le serveur d’application ou les callbacks de hook natif.

Les événements PreToolUse du mode rapport du serveur d’application Codex reportent les demandes d’approbation de Plugin à l’approbation correspondante du serveur d’application. Si un hook OpenClaw before_tool_call renvoie requireApproval alors que la charge utile native définit le mode d’approbation rapport (openclaw_approval_mode vaut "report"), le relais de hook natif enregistre l’exigence d’approbation du Plugin et ne renvoie aucune décision native. Lorsque Codex envoie la demande d’approbation du serveur d’application pour la même utilisation d’outil, OpenClaw ouvre le prompt d’approbation du Plugin et associe la décision à Codex. Les événements Codex PermissionRequest constituent un chemin d’approbation séparé et peuvent toujours être routés via les approbations OpenClaw lorsque le runtime est configuré pour ce pont.

Les notifications d’élément du serveur d’application Codex fournissent également des observations asynchrones after_tool_call pour les achèvements d’outils natifs qui ne sont pas déjà couverts par le relais natif PostToolUse. Ces observations servent uniquement à la télémétrie et à la compatibilité des Plugins ; elles ne peuvent pas bloquer, retarder ou modifier l’appel d’outil natif.

Les projections de Compaction et de cycle de vie LLM proviennent des notifications du serveur d’application Codex et de l’état de l’adaptateur OpenClaw, pas des commandes de hook natives Codex. Les événements before_compaction, after_compaction, llm_input et llm_output d’OpenClaw sont des observations au niveau de l’adaptateur, et non des captures octet pour octet de la requête interne ou des charges utiles de Compaction de Codex.

Les notifications du serveur d’application Codex natives hook/started et hook/completed sont projetées comme événements d’agent codex_app_server.hook pour la trajectoire et le débogage. Elles n’invoquent pas les hooks de Plugin OpenClaw.

Contrat de prise en charge v1

Pris en charge dans le runtime Codex v1 :

Surface Prise en charge Pourquoi
Boucle du modèle OpenAI via Codex Pris en charge L’app-server Codex possède le tour OpenAI, la reprise de fil natif et la continuation d’outil natif.
Routage et livraison des canaux OpenClaw Pris en charge Telegram, Discord, Slack, WhatsApp, iMessage et les autres canaux restent en dehors du runtime du modèle.
Outils dynamiques OpenClaw Pris en charge Codex demande à OpenClaw d’exécuter ces outils, donc OpenClaw reste dans le chemin d’exécution.
Plugins de prompt et de contexte Pris en charge OpenClaw projette le prompt/contexte propre à OpenClaw dans le tour Codex, tout en laissant les prompts de base, de modèle et de documentation de projet configurés appartenant à Codex dans la voie native Codex. OpenClaw désactive la personnalité intégrée de Codex pour les fils natifs afin que les fichiers de personnalité de l’espace de travail de l’agent restent l’autorité. Les instructions développeur natives de Codex n’acceptent que les consignes de commande explicitement limitées à codex_app_server; les anciens indices de commande globaux restent pour les surfaces de prompt non Codex.
Cycle de vie du moteur de contexte Pris en charge L’assemblage, l’ingestion et la maintenance après tour s’exécutent autour des tours Codex. Les moteurs de contexte ne remplacent pas la Compaction native de Codex.
Hooks d’outils dynamiques Pris en charge before_tool_call, after_tool_call et le middleware de résultat d’outil s’exécutent autour des outils dynamiques appartenant à OpenClaw.
Hooks de cycle de vie Pris en charge comme observations de l’adaptateur llm_input, llm_output, agent_end, before_compaction et after_compaction se déclenchent avec des charges utiles honnêtes en mode Codex.
Porte de révision de réponse finale Pris en charge via le relais de hook natif Le Stop de Codex est relayé vers before_agent_finalize; revise demande à Codex un passage de modèle supplémentaire avant la finalisation.
Blocage ou observation du shell, du patch et de MCP natifs Pris en charge via le relais de hook natif Les PreToolUse et PostToolUse de Codex sont relayés pour les surfaces d’outils natives validées, y compris les charges utiles MCP sur Codex app-server 0.125.0 ou plus récent. Le blocage est pris en charge; la réécriture des arguments ne l’est pas.
Politique de permission native Pris en charge via les approbations Codex app-server et le relais de hook natif de compatibilité Les demandes d’approbation Codex app-server passent par OpenClaw après examen par Codex. Le relais de hook natif PermissionRequest est optionnel pour les modes d’approbation natifs, car Codex l’émet avant l’examen par guardian.
Capture de trajectoire app-server Pris en charge OpenClaw enregistre la requête qu’il a envoyée à app-server et les notifications app-server qu’il reçoit.

Non pris en charge dans le runtime Codex v1 :

Surface Limite V1 Chemin futur
Mutation des arguments d’outils natifs Les hooks natifs pré-outil de Codex peuvent bloquer, mais OpenClaw ne réécrit pas les arguments d’outils natifs de Codex. Nécessite la prise en charge par les hooks/schémas Codex du remplacement de l’entrée d’outil.
Historique de transcription natif Codex modifiable Codex possède l’historique canonique des fils natifs. OpenClaw possède un miroir et peut projeter un futur contexte, mais ne doit pas modifier des éléments internes non pris en charge. Ajouter des API Codex app-server explicites si une chirurgie de fil natif est nécessaire.
tool_result_persist pour les enregistrements d’outils natifs Codex Ce hook transforme les écritures de transcription appartenant à OpenClaw, pas les enregistrements d’outils natifs Codex. Des enregistrements transformés pourraient être mis en miroir, mais la réécriture canonique nécessite la prise en charge de Codex.
Métadonnées riches de Compaction native OpenClaw peut demander une Compaction native, mais ne reçoit pas de liste stable conservée/supprimée, de delta de jetons, de résumé d’achèvement ni de charge utile de résumé. Nécessite des événements de Compaction Codex plus riches.
Intervention sur la Compaction OpenClaw ne permet pas aux plugins ni aux moteurs de contexte d’opposer un veto, de réécrire ou de remplacer la Compaction native de Codex. Ajouter des hooks Codex pré/post-Compaction si les plugins doivent opposer un veto ou réécrire la Compaction native.
Capture octet pour octet de la requête d’API du modèle OpenClaw peut capturer les requêtes et notifications app-server, mais le cœur Codex construit en interne la requête finale à l’API OpenAI. Nécessite un événement de traçage de requête de modèle Codex ou une API de débogage.

Permissions natives et sollicitations MCP

Pour PermissionRequest, OpenClaw ne renvoie que des décisions explicites d’autorisation ou de refus lorsque la politique décide. Un résultat sans décision n’est pas une autorisation. Codex le traite comme une absence de décision de hook et bascule vers son propre chemin d’approbation guardian ou utilisateur.

Les modes d’approbation Codex app-server omettent ce hook natif par défaut. Ce comportement s’applique lorsque permission_request est explicitement inclus dans nativeHookRelay.events ou qu’un runtime de compatibilité l’installe.

Lorsqu’un opérateur choisit allow-always pour une demande de permission native Codex, OpenClaw mémorise l’empreinte exacte provider/session/entrée d’outil/cwd pour une fenêtre de session limitée. La décision mémorisée est volontairement limitée aux correspondances exactes : une commande, des arguments, une charge utile d’outil ou un cwd modifiés créent une nouvelle approbation.

Les sollicitations d’approbation d’outils MCP Codex sont routées via le flux d’approbation de Plugin d’OpenClaw lorsque Codex marque _meta.codex_approval_kind comme "mcp_tool_call". Les prompts Codex request_user_input sont renvoyés au chat d’origine, et le message de suivi suivant dans la file répond à cette requête serveur native au lieu d’être orienté comme contexte supplémentaire. Les autres demandes de sollicitation MCP échouent fermées.

Pour le flux général d’approbation de Plugin qui transporte ces prompts, consultez Demandes de permission de Plugin.

Pilotage de la file

Le pilotage de file d’exécution active correspond à turn/steer de Codex app-server. Avec le mode par défaut messages.queue.mode: "steer", OpenClaw regroupe les messages de chat en mode pilotage pendant la fenêtre de silence configurée et les envoie sous forme d’une seule requête turn/steer, dans leur ordre d’arrivée.

La revue Codex et les tours de Compaction manuelle peuvent rejeter le pilotage dans le même tour. Dans ce cas, OpenClaw attend que l’exécution active se termine avant de démarrer le prompt. Utilisez /queue followup ou /queue collect lorsque les messages doivent être mis en file d’attente par défaut au lieu d’être pilotés. Consultez File de pilotage.

Téléversement du feedback Codex

Lorsque /diagnostics [note] est approuvé pour une session utilisant le harnais Codex natif, OpenClaw appelle aussi feedback/upload de l’app-server Codex pour les threads Codex concernés. Le téléversement demande à l’app-server d’inclure les journaux pour chaque thread listé et les sous-threads Codex engendrés lorsqu’ils sont disponibles.

Le téléversement passe par le chemin normal de feedback de Codex vers les serveurs OpenAI. Si le feedback Codex est désactivé dans cet app-server, la commande renvoie l’erreur de l’app-server. La réponse de diagnostic terminée liste les canaux, les identifiants de session OpenClaw, les identifiants de thread Codex et les commandes locales codex resume <thread-id> pour les threads qui ont été envoyés.

Si vous refusez ou ignorez l’approbation, OpenClaw n’affiche pas ces identifiants Codex et n’envoie pas de feedback Codex. Le téléversement ne remplace pas l’export de diagnostics local du Gateway. Consultez Export de diagnostics pour le comportement relatif à l’approbation, à la confidentialité, au bundle local et aux discussions de groupe.

Utilisez /codex diagnostics [note] uniquement lorsque vous voulez spécifiquement le téléversement du feedback Codex pour le thread actuellement attaché, sans le bundle complet de diagnostics Gateway.

Compaction et miroir de transcription

Lorsque le modèle sélectionné utilise le harnais Codex, la Compaction native du thread appartient à l’app-server Codex. OpenClaw n’exécute pas de Compaction de prévol pour les tours Codex, ne remplace pas la Compaction Codex par la Compaction du moteur de contexte, et ne se rabat pas sur OpenClaw ou sur la synthèse OpenAI publique lorsque la Compaction Codex native ne peut pas être démarrée. OpenClaw conserve un miroir de transcription pour l’historique des canaux, la recherche, /new, /reset, et le changement futur de modèle ou de harnais.

Les demandes explicites de Compaction, comme /compact ou une opération de compactage manuel demandée par un Plugin, démarrent la Compaction Codex native avec thread/compact/start. OpenClaw rend la main après avoir démarré cette opération native. Il n’attend pas la fin, n’impose pas de délai d’expiration OpenClaw distinct, ne redémarre pas l’app-server Codex partagé et n’enregistre pas l’opération comme une Compaction terminée par OpenClaw.

Lorsqu’un moteur de contexte demande une projection d’amorçage de thread Codex, OpenClaw projette les noms et identifiants d’appels d’outil, les formes d’entrée et le contenu expurgé des résultats d’outil dans le nouveau thread Codex. Il ne copie pas les valeurs brutes des arguments d’appels d’outil dans cette projection.

Le miroir inclut le prompt utilisateur, le texte final de l’assistant et les enregistrements légers de raisonnement ou de plan Codex lorsque l’app-server les émet. Aujourd’hui, OpenClaw n’enregistre que les signaux explicites de démarrage de Compaction native lorsqu’il demande une Compaction. Il n’expose pas de résumé de Compaction lisible par un humain ni de liste auditable des entrées que Codex a conservées après la Compaction.

Comme Codex possède le thread natif canonique, tool_result_persist ne réécrit pas actuellement les enregistrements de résultats d’outil natifs Codex. Il s’applique uniquement lorsque OpenClaw écrit un résultat d’outil de transcription de session appartenant à OpenClaw.

Médias et livraison

OpenClaw continue de posséder la livraison des médias et la sélection des fournisseurs de médias. L’image, la vidéo, la musique, les PDF, le TTS et la compréhension des médias utilisent les paramètres fournisseur/modèle correspondants, tels que agents.defaults.imageGenerationModel, videoGenerationModel, pdfModel et messages.tts.

Le texte, les images, la vidéo, la musique, le TTS, les approbations et la sortie des outils de messagerie continuent de passer par le chemin de livraison OpenClaw normal. La génération de médias ne nécessite pas l’environnement d’exécution hérité. Lorsque Codex émet un élément natif de génération d’image avec un savedPath, OpenClaw transmet ce fichier exact via le chemin normal de réponse média, même si le tour Codex n’a pas de texte d’assistant.

Connexe

Was this useful?
On this page

On this page