Codex harness

Runtime dell'harness Codex

Questa pagina documenta il contratto di runtime per i turni dell'harness Codex. Per la configurazione e il routing, inizia con harness Codex. Per i campi di configurazione, vedi riferimento dell'harness Codex.

Panoramica

La modalità Codex non è OpenClaw con sotto una diversa chiamata al modello. Codex possiede una parte maggiore del loop nativo del modello, e OpenClaw adatta le proprie superfici di Plugin, strumenti, sessione e diagnostica attorno a quel confine.

OpenClaw possiede ancora il routing dei canali, i file di sessione, la consegna dei messaggi visibili, gli strumenti dinamici OpenClaw, le approvazioni, la consegna dei media e un mirror della trascrizione. Codex possiede il thread nativo canonico, il loop nativo del modello, la continuazione nativa degli strumenti e la Compaction nativa.

Il routing dei prompt segue il runtime selezionato, non solo la stringa del provider. Un turno Codex nativo riceve le istruzioni per sviluppatori dell'app-server Codex, mentre una route esplicita di compatibilità OpenClaw mantiene il normale prompt di sistema OpenClaw anche quando usa autenticazione o trasporto OpenAI in stile Codex.

Codex nativo mantiene le istruzioni base/modello di proprietà di Codex e il comportamento dei documenti di progetto secondo la configurazione attiva del thread Codex. OpenClaw avvia e riprende i thread Codex nativi con la personalità integrata di Codex disabilitata, in modo che i file di personalità dello workspace e l'identità dell'agente OpenClaw restino autorevoli. Le esecuzioni leggere di OpenClaw preservano comunque la soppressione esistente dei documenti di progetto. Le istruzioni per sviluppatori OpenClaw coprono aspetti del runtime OpenClaw come la consegna del canale sorgente, gli strumenti dinamici OpenClaw, la delega ACP, il contesto dell'adapter e i file del profilo workspace dell'agente attivo. I cataloghi Skills di OpenClaw e i puntatori MEMORY.md instradati tramite strumenti vengono proiettati come istruzioni per sviluppatori di collaborazione con ambito di turno per Codex nativo. Il contenuto attivo di BOOTSTRAP.md e l'iniezione di fallback completa di MEMORY.md continuano a usare il contesto di riferimento dell'input del turno.

Binding dei thread e modifiche del modello

Quando una sessione OpenClaw è collegata a un thread Codex esistente, il turno successivo invia di nuovo all'app-server il modello OpenAI, la policy di approvazione, la sandbox e il livello di servizio attualmente selezionati. Passare da openai/gpt-5.5 a openai/gpt-5.2 mantiene il binding del thread ma chiede a Codex di continuare con il modello appena selezionato.

Risposte visibili e Heartbeat

Quando un turno di chat diretto/sorgente passa attraverso l'harness Codex, le risposte visibili usano per impostazione predefinita la consegna automatica dell'assistente finale per le superfici WebChat interne. Questo mantiene Codex allineato al contratto di prompt dell'harness Pi: gli agenti rispondono normalmente e OpenClaw pubblica il testo finale nella conversazione sorgente. Imposta messages.visibleReplies: "message_tool" quando una chat diretta/sorgente deve mantenere intenzionalmente privato il testo finale dell'assistente a meno che l'agente chiami message(action="send").

Anche i turni Heartbeat di Codex ricevono heartbeat_respond nel catalogo strumenti OpenClaw ricercabile per impostazione predefinita, così l'agente può registrare se il risveglio deve restare silenzioso o notificare senza codificare quel flusso di controllo nel testo finale.

La guida all'iniziativa specifica per Heartbeat viene inviata come istruzione per sviluppatori in modalità collaborazione Codex nel turno Heartbeat stesso. I normali turni di chat ripristinano la modalità Default di Codex invece di portare la filosofia Heartbeat nel loro normale prompt di runtime. Quando esiste un HEARTBEAT.md non vuoto, le istruzioni in modalità collaborazione Heartbeat indirizzano Codex al file invece di includerne inline i contenuti.

Confini degli hook

L'harness Codex ha tre livelli di hook:

Livello Proprietario Scopo
Hook Plugin OpenClaw OpenClaw Compatibilità prodotto/Plugin tra gli harness OpenClaw e Codex.
Middleware di estensione app-server Codex Plugin in bundle OpenClaw Comportamento dell'adapter per turno attorno agli strumenti dinamici OpenClaw.
Hook nativi Codex Codex Ciclo di vita Codex di basso livello e policy degli strumenti nativi dalla configurazione Codex.

OpenClaw non usa file hooks.json di progetto o globali Codex per instradare il comportamento dei Plugin OpenClaw. Per il bridge supportato di strumenti nativi e permessi, OpenClaw inietta configurazione Codex per thread per PreToolUse, PostToolUse, PermissionRequest e Stop.

Quando le approvazioni dell'app-server Codex sono abilitate, cioè approvalPolicy non è "never", la configurazione hook nativa iniettata predefinita omette PermissionRequest così il revisore dell'app-server Codex e il bridge di approvazione di OpenClaw gestiscono le escalation reali dopo la revisione. Gli operatori possono aggiungere esplicitamente permission_request a nativeHookRelay.events quando hanno bisogno del relay di compatibilità.

Altri hook Codex come SessionStart e UserPromptSubmit restano controlli a livello Codex. Non sono esposti come hook Plugin OpenClaw nel contratto v1.

Per gli strumenti dinamici OpenClaw, OpenClaw esegue lo strumento dopo che Codex richiede la chiamata, quindi OpenClaw attiva il comportamento Plugin e middleware che possiede nell' adapter dell'harness. Per gli strumenti nativi Codex, Codex possiede il record canonico dello strumento. OpenClaw può riflettere eventi selezionati, ma non può riscrivere il thread Codex nativo a meno che Codex esponga quell'operazione tramite app-server o callback degli hook nativi.

Gli eventi PreToolUse in modalità report dell'app-server Codex rinviano le richieste di approvazione Plugin all'approvazione app-server corrispondente. Se un hook OpenClaw before_tool_call restituisce requireApproval mentre il payload nativo imposta la modalità di approvazione report (openclaw_approval_mode è "report"), il relay degli hook nativi registra il requisito di approvazione Plugin e non restituisce alcuna decisione nativa. Quando Codex invia la richiesta di approvazione app-server per lo stesso uso dello strumento, OpenClaw apre il prompt di approvazione Plugin e mappa la decisione di nuovo su Codex. Gli eventi Codex PermissionRequest sono un percorso di approvazione separato e possono comunque passare attraverso le approvazioni OpenClaw quando il runtime è configurato per quel bridge.

Le notifiche degli elementi dell'app-server Codex forniscono anche osservazioni asincrone after_tool_call per completamenti di strumenti nativi che non sono già coperti dal relay nativo PostToolUse. Queste osservazioni servono solo per telemetria e compatibilità Plugin; non possono bloccare, ritardare o mutare la chiamata nativa dello strumento.

Le proiezioni di Compaction e del ciclo di vita LLM provengono dalle notifiche dell'app-server Codex e dallo stato dell'adapter OpenClaw, non dai comandi degli hook nativi Codex. Gli eventi before_compaction, after_compaction, llm_input e llm_output di OpenClaw sono osservazioni a livello adapter, non acquisizioni byte per byte della richiesta interna o dei payload di Compaction di Codex.

Le notifiche app-server native Codex hook/started e hook/completed vengono proiettate come eventi agente codex_app_server.hook per traiettoria e debug. Non invocano hook Plugin OpenClaw.

Contratto di supporto V1

Supportato nel runtime Codex v1:

Superficie Supporto Perché
Ciclo del modello OpenAI tramite Codex Supportato L'app-server Codex possiede il turno OpenAI, la ripresa del thread nativo e la continuazione degli strumenti nativi.
Routing e consegna dei canali OpenClaw Supportato Telegram, Discord, Slack, WhatsApp, iMessage e altri canali restano fuori dal runtime del modello.
Strumenti dinamici OpenClaw Supportato Codex chiede a OpenClaw di eseguire questi strumenti, quindi OpenClaw resta nel percorso di esecuzione.
Plugin di prompt e contesto Supportato OpenClaw proietta prompt/contesto specifici di OpenClaw nel turno Codex lasciando i prompt di base, del modello e dei documenti di progetto configurati di proprietà di Codex nel percorso nativo Codex. OpenClaw disabilita la personalità integrata di Codex per i thread nativi, così i file di personalità dell'area di lavoro dell'agente restano autorevoli. Le istruzioni sviluppatore native di Codex accettano solo indicazioni di comando esplicitamente limitate a codex_app_server; i suggerimenti di comando globali legacy restano per le superfici di prompt non Codex.
Ciclo di vita del motore di contesto Supportato Assemblaggio, ingestione e manutenzione post-turno vengono eseguiti attorno ai turni Codex. I motori di contesto non sostituiscono la compattazione nativa di Codex.
Hook degli strumenti dinamici Supportato before_tool_call, after_tool_call e il middleware dei risultati degli strumenti vengono eseguiti attorno agli strumenti dinamici di proprietà di OpenClaw.
Hook del ciclo di vita Supportato come osservazioni dell'adattatore llm_input, llm_output, agent_end, before_compaction e after_compaction vengono emessi con payload sinceri in modalità Codex.
Gate di revisione della risposta finale Supportato tramite inoltro di hook nativi Stop di Codex viene inoltrato a before_agent_finalize; revise chiede a Codex un altro passaggio del modello prima della finalizzazione.
Shell, patch e MCP nativi: blocco o osservazione Supportato tramite inoltro di hook nativi PreToolUse e PostToolUse di Codex vengono inoltrati per le superfici di strumenti nativi impegnate, inclusi i payload MCP su app-server Codex 0.125.0 o successivo. Il blocco è supportato; la riscrittura degli argomenti no.
Policy di autorizzazione nativa Supportata tramite approvazioni dell'app-server Codex e inoltro compatibile di hook nativi Le richieste di approvazione dell'app-server Codex passano tramite OpenClaw dopo la revisione Codex. L'inoltro dell'hook nativo PermissionRequest è opt-in per le modalità di approvazione native perché Codex lo emette prima della revisione guardian.
Acquisizione della traiettoria dell'app-server Supportata OpenClaw registra la richiesta inviata all'app-server e le notifiche dell'app-server che riceve.

Non supportato nel runtime Codex v1:

Superficie Confine V1 Percorso futuro
Mutazione degli argomenti degli strumenti nativi Gli hook pre-strumento nativi di Codex possono bloccare, ma OpenClaw non riscrive gli argomenti degli strumenti nativi Codex. Richiede supporto Codex di hook/schema per sostituire l'input dello strumento.
Cronologia della trascrizione nativa Codex modificabile Codex possiede la cronologia canonica dei thread nativi. OpenClaw possiede una copia e può proiettare contesto futuro, ma non dovrebbe mutare internals non supportati. Aggiungere API esplicite dell'app-server Codex se serve intervenire sui thread nativi.
tool_result_persist per record di strumenti nativi Codex Quell'hook trasforma le scritture di trascrizione di proprietà di OpenClaw, non i record di strumenti nativi Codex. Potrebbe rispecchiare record trasformati, ma la riscrittura canonica richiede supporto Codex.
Metadati ricchi di compattazione nativa OpenClaw può richiedere la compattazione nativa, ma non riceve un elenco stabile di elementi mantenuti/scartati, delta di token, riepilogo di completamento o payload di riepilogo. Servono eventi di compattazione Codex più ricchi.
Intervento sulla Compaction OpenClaw non consente a Plugin o motori di contesto di porre veto, riscrivere o sostituire la compattazione nativa Codex. Aggiungere hook Codex pre/post compattazione se i Plugin devono porre veto o riscrivere la compattazione nativa.
Acquisizione byte-per-byte della richiesta API del modello OpenClaw può acquisire richieste e notifiche dell'app-server, ma il core Codex costruisce internamente la richiesta finale all'API OpenAI. Serve un evento di tracciamento della richiesta del modello Codex o un'API di debug.

Autorizzazioni native ed elicitazioni MCP

Per PermissionRequest, OpenClaw restituisce solo decisioni esplicite di consenso o rifiuto quando la policy decide. Un risultato senza decisione non è un consenso. Codex lo tratta come assenza di decisione dell'hook e passa al proprio percorso guardian o di approvazione utente.

Le modalità di approvazione dell'app-server Codex omettono questo hook nativo per impostazione predefinita. Questo comportamento si applica quando permission_request è incluso esplicitamente in nativeHookRelay.events o quando un runtime di compatibilità lo installa.

Quando un operatore sceglie allow-always per una richiesta di autorizzazione nativa Codex, OpenClaw ricorda l'esatta impronta provider/sessione/input dello strumento/cwd per una finestra di sessione limitata. La decisione ricordata è intenzionalmente a corrispondenza esatta solo: un comando, argomenti, payload dello strumento o cwd modificati creano una nuova approvazione.

Le elicitazioni di approvazione degli strumenti MCP di Codex vengono instradate tramite il flusso di approvazione Plugin di OpenClaw quando Codex contrassegna _meta.codex_approval_kind come "mcp_tool_call". I prompt request_user_input di Codex vengono rimandati alla chat di origine, e il successivo messaggio di follow-up in coda risponde a quella richiesta del server nativo invece di essere indirizzato come contesto aggiuntivo. Le altre richieste di elicitazione MCP falliscono in modo chiuso.

Per il flusso generale di approvazione Plugin che trasporta questi prompt, vedere Richieste di autorizzazione Plugin.

Instradamento della coda

L'instradamento della coda durante un'esecuzione attiva si mappa su turn/steer dell'app-server Codex. Con la modalità predefinita messages.queue.mode: "steer", OpenClaw raggruppa i messaggi di chat in modalità steer per la finestra di quiete configurata e li invia come una singola richiesta turn/steer nell'ordine di arrivo.

I turni di revisione Codex e di Compaction manuale possono rifiutare l'indirizzamento nello stesso turno. In quel caso, OpenClaw attende che l'esecuzione attiva termini prima di avviare il prompt. Usa /queue followup o /queue collect quando i messaggi devono essere accodati per impostazione predefinita invece di indirizzare. Vedi Coda di indirizzamento.

Caricamento del feedback Codex

Quando /diagnostics [note] viene approvato per una sessione che usa l'harness Codex nativo, OpenClaw chiama anche feedback/upload dell'app-server Codex per i thread Codex pertinenti. Il caricamento chiede all'app-server di includere i log per ogni thread elencato e per i sottothread Codex generati, quando disponibili.

Il caricamento passa attraverso il normale percorso di feedback di Codex verso i server OpenAI. Se il feedback Codex è disabilitato in quell'app-server, il comando restituisce l'errore dell'app-server. La risposta diagnostica completata elenca i canali, gli ID delle sessioni OpenClaw, gli ID dei thread Codex e i comandi locali codex resume <thread-id> per i thread che sono stati inviati.

Se neghi o ignori l'approvazione, OpenClaw non stampa quegli ID Codex e non invia feedback Codex. Il caricamento non sostituisce l'esportazione diagnostica locale del Gateway. Vedi Esportazione diagnostica per il comportamento di approvazione, privacy, pacchetto locale e chat di gruppo.

Usa /codex diagnostics [note] solo quando vuoi specificamente il caricamento del feedback Codex per il thread attualmente collegato senza il pacchetto diagnostico Gateway completo.

Compaction e mirror della trascrizione

Quando il modello selezionato usa l'harness Codex, la Compaction nativa del thread appartiene all'app-server Codex. OpenClaw non esegue la Compaction preflight per i turni Codex, non sostituisce la Compaction Codex con la Compaction del motore di contesto e non ripiega sulla riepilogazione OpenClaw o pubblica di OpenAI quando non è possibile avviare la Compaction Codex nativa. OpenClaw mantiene un mirror della trascrizione per la cronologia dei canali, la ricerca, /new, /reset e il futuro cambio di modello o harness.

Le richieste esplicite di Compaction, come /compact o un'operazione di Compaction manuale richiesta da un Plugin, avviano la Compaction Codex nativa con thread/compact/start. OpenClaw ritorna dopo aver avviato quell'operazione nativa. Non attende il completamento, non impone un timeout OpenClaw separato, non riavvia l'app-server Codex condiviso e non registra l'operazione come Compaction completata da OpenClaw.

Quando un motore di contesto richiede la proiezione di bootstrap del thread Codex, OpenClaw proietta i nomi e gli ID delle chiamate agli strumenti, le forme di input e il contenuto oscurato dei risultati degli strumenti nel nuovo thread Codex. Non copia i valori grezzi degli argomenti delle chiamate agli strumenti in quella proiezione.

Il mirror include il prompt dell'utente, il testo finale dell'assistente e i record leggeri di ragionamento o piano Codex quando l'app-server li emette. Oggi, OpenClaw registra solo i segnali espliciti di avvio della Compaction nativa quando richiede la Compaction. Non espone un riepilogo della Compaction leggibile da una persona né un elenco verificabile delle voci che Codex ha mantenuto dopo la Compaction.

Poiché Codex possiede il thread nativo canonico, tool_result_persist attualmente non riscrive i record dei risultati degli strumenti nativi di Codex. Si applica solo quando OpenClaw sta scrivendo un risultato di strumento della trascrizione di una sessione di proprietà di OpenClaw.

Media e recapito

OpenClaw continua a possedere il recapito dei media e la selezione del provider di media. Immagini, video, musica, PDF, TTS e comprensione dei media usano impostazioni provider/modello corrispondenti, come agents.defaults.imageGenerationModel, videoGenerationModel, pdfModel e messages.tts.

Testo, immagini, video, musica, TTS, approvazioni e output degli strumenti di messaggistica continuano attraverso il normale percorso di recapito OpenClaw. La generazione di media non richiede il runtime legacy. Quando Codex emette un elemento nativo di generazione immagini con un savedPath, OpenClaw inoltra quel file esatto attraverso il normale percorso dei media di risposta anche se il turno Codex non contiene testo dell'assistente.

Correlati

Was this useful?
On this page

On this page