Codex harness

Runtime dell'harness Codex

Contratto di runtime per i turni dell'harness Codex. Per la configurazione e l'instradamento, consulta Harness Codex. Per i campi di configurazione, consulta Riferimento dell'harness Codex.

Panoramica

Codex gestisce il ciclo nativo del modello, la ripresa nativa dei thread, la continuazione nativa degli strumenti e la Compaction nativa. OpenClaw gestisce l'instradamento dei canali, i file di sessione, la consegna visibile dei messaggi, gli strumenti dinamici di OpenClaw, le approvazioni, la consegna dei contenuti multimediali e una copia speculare della trascrizione attorno a tale confine.

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

OpenClaw avvia e riprende i thread Codex nativi con la personalità integrata di Codex disabilitata (personality: "none"), affinché i file della personalità dell'area di lavoro e l'identità dell'agente OpenClaw rimangano autorevoli. Per il resto, Codex nativo mantiene le istruzioni di base e del modello gestite da Codex, nonché il caricamento della documentazione del progetto. Le esecuzioni leggere di OpenClaw (ad esempio cron) continuano a impedire il caricamento della documentazione del progetto.

Le istruzioni per sviluppatori di OpenClaw riguardano gli aspetti del runtime OpenClaw: consegna al canale di origine, strumenti dinamici di OpenClaw, delega ACP, contesto dell'adattatore e file di profilo attivi dell'area di lavoro dell'agente. I cataloghi delle Skills e i riferimenti a MEMORY.md instradati tramite strumenti vengono proiettati come istruzioni per sviluppatori di collaborazione limitate al turno. Quando gli strumenti di memoria non sono disponibili, il contenuto attivo di BOOTSTRAP.md e l'intero MEMORY.md vengono invece forniti come normale contesto di input del turno.

La maggior parte degli strumenti dinamici di OpenClaw utilizza lo spazio dei nomi ricercabile openclaw. Gli strumenti contrassegnati con catalogMode: "direct-only" utilizzano openclaw_direct, che Codex mantiene direttamente visibile al modello come DirectModelOnly, anziché esporlo all'esecuzione annidata in modalità codice.

Associazioni dei thread e modifiche del modello

Quando una sessione OpenClaw è collegata a un thread Codex esistente, il turno successivo invia nuovamente all'app-server il modello attualmente selezionato, la politica di approvazione, la sandbox, il revisore delle approvazioni e il livello di servizio. Il passaggio da openai/gpt-5.5 a openai/gpt-5.2 mantiene l'associazione del thread, ma chiede a Codex di continuare con il nuovo modello selezionato.

Le associazioni supervisionate costituiscono l'eccezione. Il selettore del modello di OpenClaw rimane bloccato e le riprese omettono le sostituzioni di modello e provider, affinché Codex ripristini il modello e il provider persistenti del thread canonico. Un controllo Codex nativo separato può modificare questa coppia persistente e lo snapshot iniziale può generare il normale avviso di Codex relativo alla differenza di modello; il modello OpenClaw esterno e la catena di ripiego non sostituiscono mai nessuno dei due.

Supervisione e continuazione sicura

La supervisione Codex è una funzionalità facoltativa dello stesso Plugin codex. Rileva i thread nativi tramite una connessione separata e proietta nel catalogo del Gateway soltanto le sessioni non archiviate. In assenza di impostazioni di connessione appServer esplicite, tale connessione utilizza stdio gestito nella directory home dell'utente, mentre l'harness ordinario rimane circoscritto all'agente. L'elenco e le letture dei metadati sono passivi: non riprendono un thread, non iscrivono OpenClaw ai suoi eventi in tempo reale e non rispondono alle sue richieste di approvazione.

Per una sessione memorizzata o inattiva sul computer del Gateway, Continua come ramo crea una normale chat con modello bloccato e replica una cronologia limitata di utente e assistente fino all'ultimo turno terminale persistente dell'origine. Il primo turno della chat normale installa i gestori di approvazione effettivi e utilizza un fork nativo temporaneo per fissare lo snapshot senza sostituire il modello o il provider. Codex App Server utilizza la configurazione nativa corrente e restituisce la coppia selezionata; genera il normale avviso se tale modello differisce dall'ultimo modello registrato dell'origine. Sulla stessa connessione di supervisione, OpenClaw avvia il thread canonico dell'harness Codex con origine appServer, nella relativa directory di lavoro e con la relativa politica di runtime, usando esattamente il modello e il provider restituiti per tale avvio iniziale, inserisce la cronologia visibile limitata e archivia il fork temporaneo. L'origine non viene mai ripresa. Il thread canonico dispone dell'intera superficie degli strumenti dell'harness OpenClaw; il ragionamento, le chiamate agli strumenti e i relativi risultati dell'origine non vengono clonati al suo interno. L'ambito della connessione privata permane negli stati di associazione in sospeso e confermati, quindi ogni turno successivo rimane su tale connessione con l'autenticazione nativa e la configurazione del provider. La supervisione disabilitata o la divergenza dell'associazione o della connessione provocano un arresto sicuro anziché il passaggio al normale harness nella home dell'agente.

L'origine CLI o VS Code originale rimane idonea per entrambi i cataloghi. Il ramo canonico è un thread Codex nativo, ma il tipo della sua origine è appServer; i client nativi possono filtrare tale tipo di origine, pertanto la sua visualizzazione in Codex Desktop non è garantita.

Le origini attive non possono avviare un nuovo ramo né essere archiviate; una chat supervisionata esistente può comunque essere aperta. notLoaded indica che l'attività è sconosciuta, non che la sessione è inattiva; OpenClaw consente l'archiviazione di una riga locale idle o notLoaded soltanto dopo una conferma esplicita dell'assenza di altri processi esecutori e una nuova lettura dello stato locale al processo. Codex serializza le modifiche ai thread all'interno di un singolo processo App Server, ma non fornisce un lease esclusivo tra processi per l'esecutore o il titolare delle approvazioni, pertanto tale lettura non può dimostrare che un altro processo non stia utilizzando il thread. OpenClaw blocca un titolare noto dell'associazione attiva per la destinazione esatta o per qualsiasi discendente generato non archiviato restituito dalla query paginata dei discendenti di Codex. Gli errori di enumerazione, i cicli e l'esaurimento del limite di sicurezza provocano un arresto sicuro. L'archiviazione nativa può comunque entrare in conflitto con un nuovo turno in un altro processo, quindi la conferma copre i client sconosciuti e l'intervallo tra la lettura dello stato e l'archiviazione. Una chat supervisionata con modello bloccato non può essere eliminata mentre protegge l'associazione nativa.

Nella versione iniziale, i cataloghi dei nodi associati rimangono limitati ai metadati. L'attuale confine di invocazione del Node è di tipo richiesta/risposta e non può trasportare gli eventi di turno a lunga durata, le richieste di approvazione o l'output in streaming necessari per una vera associazione dell'harness Codex. Le operazioni remote Continua e Archivia rimangono pertanto non disponibili anche quando la riga è inattiva.

Consulta Supervisione Codex per la configurazione da parte dell'operatore e il comportamento visibile dell'interfaccia di controllo.

Risposte visibili e heartbeat

I turni di chat diretti o dall'origine tramite l'harness Codex utilizzano per impostazione predefinita la consegna automatica della risposta finale dell'assistente per le superfici WebChat interne, in conformità con il contratto dell'harness Pi: l'agente risponde normalmente e OpenClaw pubblica il testo finale nella conversazione di origine. Imposta messages.visibleReplies: "message_tool" per mantenere privato il testo finale dell'assistente, a meno che l'agente non chiami message(action="send").

Per impostazione predefinita, i turni Heartbeat di Codex ricevono heartbeat_respond nel catalogo ricercabile degli strumenti OpenClaw, affinché l'agente possa registrare se il risveglio debba rimanere silenzioso o inviare una notifica. Le indicazioni sull'iniziativa dell'Heartbeat vengono inviate come istruzione per sviluppatori della modalità di collaborazione Codex, limitata al turno Heartbeat; i normali turni di chat rimangono nella modalità predefinita di Codex. Quando HEARTBEAT.md non è vuoto, le istruzioni dell'Heartbeat indicano a Codex il file anziché includerne direttamente il contenuto.

Confini degli hook

Livello Titolare Scopo
Hook dei Plugin OpenClaw OpenClaw Compatibilità di prodotto e Plugin tra gli harness OpenClaw e Codex.
Middleware di estensione dell'app-server Codex Plugin inclusi in OpenClaw Comportamento dell'adattatore per turno attorno agli strumenti dinamici di OpenClaw.
Hook nativi di Codex Codex Ciclo di vita Codex di basso livello e politica degli strumenti nativi dalla configurazione Codex.

OpenClaw non utilizza i file hooks.json di progetto o globali di Codex per instradare il comportamento dei Plugin. Per il ponte degli strumenti nativi e delle autorizzazioni, OpenClaw inserisce una configurazione Codex per thread per PreToolUse, PostToolUse, PermissionRequest e Stop.

Quando le approvazioni dell'app-server Codex sono abilitate (approvalPolicy non è "never"), la configurazione predefinita degli hook nativi inserita omette PermissionRequest, affinché il revisore dell'app-server Codex e il ponte di approvazione di OpenClaw gestiscano le effettive richieste di escalation dopo la revisione. Aggiungi permission_request a nativeHookRelay.events per forzare comunque il relay di compatibilità. Gli altri hook Codex, come SessionStart e UserPromptSubmit, rimangono controlli a livello di Codex; nel contratto v1 non vengono esposti come hook dei Plugin OpenClaw.

Per gli strumenti dinamici di OpenClaw, OpenClaw esegue lo strumento dopo che Codex ne richiede la chiamata, quindi il comportamento dei Plugin e del middleware viene eseguito nell'adattatore dell'harness. Per gli strumenti nativi di Codex, Codex gestisce il record canonico dello strumento; OpenClaw può replicare eventi selezionati, ma non può riscrivere il thread nativo a meno che Codex non esponga tale possibilità tramite callback dell'app-server o degli hook nativi.

Gli eventi PreToolUse in modalità di segnalazione dell'app-server Codex rimandano l'approvazione del Plugin alla corrispondente approvazione dell'app-server. Se un hook OpenClaw before_tool_call restituisce requireApproval mentre il payload nativo imposta openclaw_approval_mode: "report", il relay degli hook nativi registra il requisito di approvazione del Plugin e non restituisce alcuna decisione nativa. Quando Codex invia in seguito la richiesta di approvazione dell'app-server per lo stesso utilizzo dello strumento, OpenClaw apre la richiesta di approvazione del Plugin e riconduce la decisione a Codex. Gli eventi Codex PermissionRequest costituiscono un percorso di approvazione separato e possono comunque essere instradati tramite le approvazioni OpenClaw quando configurati per tale ponte.

Le notifiche degli elementi dell'app-server Codex forniscono inoltre osservazioni asincrone after_tool_call per i completamenti degli strumenti nativi non già coperti dal relay nativo PostToolUse. Queste servono soltanto per telemetria e compatibilità; non possono bloccare, ritardare o modificare la chiamata nativa allo strumento.

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

Le notifiche dell'app-server Codex native hook/started e hook/completed vengono proiettate come eventi dell'agente codex_app_server.hook per la traiettoria e il debug. Non richiamano gli hook dei Plugin OpenClaw.

Contratto di supporto v1

Supportato nel runtime Codex v1:

Ambito Supporto Motivazione
Ciclo del modello OpenAI tramite Codex Supportato Il server applicativo Codex gestisce il turno OpenAI, la ripresa nativa del thread e la continuazione nativa degli strumenti.
Instradamento e consegna dei canali OpenClaw Supportato Telegram, Discord, Slack, WhatsApp, iMessage e gli altri canali rimangono esterni al runtime del modello.
Strumenti dinamici di OpenClaw Supportato Codex chiede a OpenClaw di eseguire questi strumenti, quindi OpenClaw rimane nel percorso di esecuzione.
Plugin di prompt e contesto Supportato OpenClaw proietta nel turno Codex il prompt e il contesto specifici di OpenClaw, lasciando nel percorso nativo di Codex i prompt di base, del modello e dei documenti di progetto configurati, gestiti da Codex. OpenClaw disabilita la personalità integrata di Codex per i thread nativi, affinché i file della personalità dell'area di lavoro dell'agente rimangano autorevoli. Le istruzioni native per sviluppatori di Codex accettano solo indicazioni sui comandi esplicitamente limitate a codex_app_server; i suggerimenti globali legacy sui comandi rimangono per le superfici di prompt non Codex.
Ciclo di vita del motore di contesto Supportato L'assemblaggio, l'acquisizione e la manutenzione successiva al turno vengono eseguiti attorno ai turni Codex. I motori di contesto non sostituiscono la Compaction 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 gestiti da OpenClaw.
Hook del ciclo di vita Supportato come osservazioni dell'adattatore llm_input, llm_output, agent_end, before_compaction e after_compaction vengono attivati con payload fedeli alla modalità Codex.
Punto di controllo per la revisione della risposta finale Supportato tramite inoltro degli hook nativi Il comando Stop di Codex viene inoltrato a before_agent_finalize; revise richiede a Codex un ulteriore passaggio del modello prima della finalizzazione.
Blocco o osservazione nativi di shell, patch e MCP Supportato tramite inoltro degli hook nativi PreToolUse e PostToolUse di Codex vengono inoltrati per le superfici degli strumenti nativi confermate, inclusi i payload MCP nel server applicativo Codex 0.142.0 o versioni successive. Il blocco è supportato; la riscrittura degli argomenti no.
Criteri delle autorizzazioni native Supportato tramite le approvazioni del server applicativo Codex e l'inoltro compatibile degli hook nativi Le richieste di approvazione del server applicativo Codex vengono instradate tramite OpenClaw dopo la verifica di Codex. L'inoltro dell'hook nativo PermissionRequest è facoltativo per le modalità di approvazione native, poiché Codex lo emette prima della verifica del sistema di protezione.
Acquisizione della traiettoria del server applicativo Supportato OpenClaw registra la richiesta inviata al server applicativo e le notifiche ricevute da quest'ultimo.

Non supportato nel runtime Codex v1:

Ambito Limite della V1 Evoluzione futura
Modifica degli argomenti degli strumenti nativi Gli hook nativi pre-strumento di Codex possono bloccare, ma OpenClaw non riscrive gli argomenti degli strumenti nativi di Codex. Richiede il supporto degli hook o dello schema di Codex per sostituire l'input dello strumento.
Cronologia modificabile della trascrizione nativa di Codex Codex gestisce la cronologia canonica dei thread nativi. OpenClaw gestisce una copia e può proiettare il contesto futuro, ma non deve modificare componenti interni non supportati. Aggiungere API esplicite del server applicativo Codex se è necessario intervenire sui thread nativi.
tool_result_persist per i record degli strumenti nativi di Codex Questo hook trasforma le scritture della trascrizione gestite da OpenClaw, non i record degli strumenti nativi di Codex. È possibile replicare i record trasformati, ma la riscrittura canonica richiede il supporto di Codex.
Metadati avanzati della Compaction nativa OpenClaw può richiedere la Compaction nativa, ma non riceve un elenco stabile degli elementi mantenuti o eliminati, la variazione dei token, un riepilogo del completamento o il payload del riepilogo. Richiede eventi di Compaction Codex più dettagliati.
Intervento sulla Compaction OpenClaw non consente ai Plugin o ai motori di contesto di impedire, riscrivere o sostituire la Compaction nativa di Codex. Aggiungere hook Codex precedenti e successivi alla Compaction se i Plugin devono impedirla o riscriverla.
Acquisizione byte per byte della richiesta API del modello OpenClaw può acquisire le richieste e le notifiche del server applicativo, ma il nucleo di Codex crea internamente la richiesta API OpenAI finale. Richiede un evento di tracciamento delle richieste del modello Codex o un'API di debug.

Autorizzazioni native e richieste di informazioni MCP

Per PermissionRequest, OpenClaw restituisce decisioni esplicite di autorizzazione o rifiuto solo quando i criteri prendono una decisione. L'assenza di una decisione non equivale a un'autorizzazione: Codex la considera come l'assenza di una decisione dell'hook e passa al proprio sistema di protezione o al percorso di approvazione dell'utente.

Le modalità di approvazione del server applicativo Codex omettono per impostazione predefinita questo hook nativo. Ciò si applica a meno che permission_request non sia incluso esplicitamente in nativeHookRelay.events o che non venga installato da un runtime di compatibilità.

Quando un operatore sceglie allow-always per una richiesta di autorizzazione nativa di Codex, OpenClaw memorizza l'esatta impronta digitale di provider/sessione/input dello strumento/cwd per un intervallo limitato della sessione. La decisione memorizzata si applica intenzionalmente solo alle corrispondenze esatte: un comando, degli argomenti, un payload dello strumento o una directory cwd differenti generano una nuova approvazione.

Le richieste di approvazione degli strumenti MCP di Codex vengono instradate tramite il flusso di approvazione dei Plugin di OpenClaw quando Codex contrassegna _meta.codex_approval_kind come "mcp_tool_call". Le richieste request_user_input di Codex vengono inviate alla chat di origine e il successivo messaggio di follow-up in coda risponde a tale richiesta del server nativo, anziché essere indirizzato come contesto aggiuntivo. Le altre richieste di informazioni MCP vengono rifiutate per impostazione predefinita.

Per il flusso generale di approvazione dei Plugin che trasporta queste richieste, vedere Richieste di autorizzazione dei Plugin.

Indirizzamento della coda

L'indirizzamento della coda durante un'esecuzione attiva viene mappato su turn/steer del server applicativo Codex. Con l'impostazione predefinita messages.queue.mode: "steer", OpenClaw raggruppa i messaggi della chat in modalità steer per l'intervallo di inattività configurato e li invia come un'unica richiesta turn/steer nell'ordine di arrivo.

Le revisioni di Codex e i turni di Compaction manuale possono rifiutare l'instradamento nello stesso turno. In tal caso, OpenClaw attende il completamento dell'esecuzione attiva prima di avviare il prompt. Usa /queue followup o /queue collect quando i messaggi devono essere accodati per impostazione predefinita anziché instradati. Vedi Coda di instradamento.

Caricamento del feedback di Codex

Quando /diagnostics [note] viene approvato per una sessione nell'harness Codex nativo, OpenClaw chiama anche feedback/upload dell'app-server Codex per i thread Codex pertinenti, includendo i log per ogni thread elencato e per i sottothread Codex generati, quando disponibili.

Il caricamento avviene tramite il normale percorso di feedback di Codex verso i server OpenAI. Se il feedback di Codex è disabilitato in tale app-server, il comando restituisce l'errore dell'app-server. La risposta di diagnostica completata elenca i canali, gli ID di sessione OpenClaw, gli ID dei thread Codex e i comandi locali codex resume <thread-id> per i thread inviati.

Se neghi o ignori l'approvazione, OpenClaw non visualizza tali ID Codex e non invia il feedback di Codex. Il caricamento non sostituisce l'esportazione locale della diagnostica del Gateway. Vedi Esportazione della diagnostica per informazioni sull'approvazione, sulla privacy, sul pacchetto locale e sul comportamento nelle chat di gruppo.

Usa /codex diagnostics [note] solo quando desideri caricare il feedback di Codex per il thread attualmente collegato senza il pacchetto diagnostico completo del Gateway.

Compaction e copia speculare della trascrizione

Quando il modello selezionato usa l'harness Codex, la Compaction nativa dei thread è di competenza dell'app-server Codex. OpenClaw non esegue la Compaction preliminare per i turni Codex, non sostituisce la Compaction di Codex con quella del motore di contesto e non ricorre alla riepilogazione di OpenClaw o pubblica di OpenAI quando non è possibile avviare la Compaction nativa. OpenClaw mantiene una copia speculare 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 nativa di Codex con thread/compact/start. OpenClaw mantiene aperti la richiesta e il lease del client condiviso finché Codex non emette l'elemento di completamento contextCompaction corrispondente, quindi segnala il turno di Compaction come completato. Se tale turno terminale supera il timeout di Compaction configurato, OpenClaw richiede un'interruzione nativa del turno. Il lease e il blocco di Compaction per thread rimangono attivi finché Codex non segnala lo stato terminale o non conferma l'RPC di interruzione. Se Codex non fornisce conferma entro il periodo di tolleranza dell'interruzione, OpenClaw dismette la connessione prima di rilasciare il blocco. Le connessioni remote scollegano anche l'associazione del thread corrispondente, affinché le attività successive non possano sovrapporsi a un turno remoto non confermato. Gli altri turni su una connessione dismessa non riescono e possono essere ritentati con un nuovo client. La chiusura del client, l'annullamento della richiesta o un turno di Compaction non riuscito restituiscono un'operazione non riuscita. La Compaction automatica dovuta alla pressione del contesto è compito di Codex; OpenClaw avvia la Compaction nativa solo per gli eventi attivatori richiesti manualmente.

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

La copia speculare include il prompt dell'utente, il testo finale dell'assistente e i record essenziali di ragionamento o pianificazione di Codex quando l'app-server li emette. OpenClaw registra l'avvio della Compaction nativa e lo stato terminale, ma non espone un riepilogo della Compaction leggibile dalle persone né un elenco verificabile delle voci mantenute da Codex dopo la Compaction.

Poiché Codex è responsabile del thread nativo canonico, tool_result_persist non riscrive i record dei risultati degli strumenti nativi di Codex. Si applica solo quando OpenClaw scrive il risultato di uno strumento nella trascrizione di una sessione di proprietà di OpenClaw.

Contenuti multimediali e consegna

OpenClaw continua a gestire la consegna dei contenuti multimediali e la selezione del relativo provider. Immagini, video, musica, PDF, TTS e comprensione dei contenuti multimediali usano le impostazioni del 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 a essere trasmessi attraverso il normale percorso di consegna di OpenClaw; la generazione di contenuti multimediali non richiede il runtime legacy. Quando Codex emette un elemento nativo di generazione delle immagini con un savedPath, OpenClaw inoltra esattamente quel file tramite il normale percorso dei contenuti multimediali di risposta, anche se il turno Codex non contiene testo dell'assistente.

Argomenti correlati

Was this useful?
On this page

On this page