Port du moteur de contexte du harnais Codex
Spécification de mise en œuvre de l’ébauche.
Objectif
Section intitulée « Objectif »Faire en sorte que le harnais intégré de l’application serveur Codex respecte le même contrat de cycle de vie du moteur de contexte OpenClaw que les tentatives intégrées OpenClaw respectent déjà.
Une session utilisant le provider/model agentRuntime.id: "codex" ou un modèle codex/*
devrait toujours permettre au plugin de moteur de contexte sélectionné, tel que
lossless-claw, de contrôler l’assemblage du contexte, l’ingestion post-tour, la maintenance et la
politique de compactation au niveau OpenClaw, dans la mesure où les limites de l’application serveur Codex le permettent.
Non-objectifs
Section intitulée « Non-objectifs »- Ne pas réimplémenter les internes du Codex app-server.
- Ne pas faire en sorte que la compaction du thread natif Codex produise un résumé lossless-claw.
- Ne pas exiger que les modèles non-Codex utilisent le harnais Codex.
- Ne pas modifier le comportement de session ACP/acpx. Cette spécification concerne uniquement le chemin du harnais d’agent intégré non-ACP.
- Ne pas faire en sorte que les plugins tiers enregistrent des fabriques d’extensions du serveur d’application Codex ; la limite de confiance des plugins groupés existants reste inchangée.
Architecture actuelle
Section intitulée « Architecture actuelle »La boucle d’exécution intégrée résout le moteur de contexte configuré une fois par exécution avant sélectionner un harnais de bas niveau concret :
src/agents/embedded-agent-runner/run.ts- initialise les plugins du moteur de contexte
- appelle
resolveContextEngine(params.config) - passe
contextEngineetcontextTokenBudgetdansrunEmbeddedAttemptWithBackend(...)
runEmbeddedAttemptWithBackend(...) délègue au harnais d’agent sélectionné :
src/agents/embedded-agent-runner/run/backend.tssrc/agents/harness/selection.ts
Le harnais Codex app-server est enregistré par le plugin Codex groupé :
extensions/codex/index.tsextensions/codex/harness.ts
L’implémentation du harnais Codex reçoit le même EmbeddedRunAttemptParams
que les tentatives intégrées OpenClaw :
extensions/codex/src/app-server/run-attempt.ts
Cela signifie que le point d’accroche requis se trouve dans le code contrôlé par OpenClaw. La frontière externe est le protocole du Codex app-server lui-même : OpenClaw peut contrôler ce qu’il envoie à thread/start, thread/resume et turn/start, et peut observer les notifications, mais il ne peut pas modifier le magasin de threads interne de Codex ni le compacteur natif.
Écart actuel
Section intitulée « Écart actuel »Les tentatives intégrées OpenClaw appellent directement le cycle de vie du moteur de contexte :
- amorçage/maintenance avant la tentative
- assembler avant l’appel au model
- afterTurn ou ingest après la tentative
- maintenance après un tour réussi
- compactage du context-engine pour les moteurs qui possèdent le compactage
Code OpenClaw pertinent :
src/agents/embedded-agent-runner/run/attempt.tssrc/agents/embedded-agent-runner/run/attempt.context-engine-helpers.tssrc/agents/embedded-agent-runner/context-engine-maintenance.ts
Les tentatives du Codex app-server exécutent actuellement des hooks génériques de agent-harness et reflètent la transcription, mais n’appellent pas params.contextEngine.bootstrap, params.contextEngine.assemble, params.contextEngine.afterTurn, params.contextEngine.ingestBatch, params.contextEngine.ingest ou params.contextEngine.maintain.
Code Codex pertinent :
extensions/codex/src/app-server/run-attempt.tsextensions/codex/src/app-server/thread-lifecycle.tsextensions/codex/src/app-server/event-projector.tsextensions/codex/src/app-server/compact.ts
Comportement souhaité
Section intitulée « Comportement souhaité »Pour les tours de harnais Codex, OpenClaw doit préserver ce cycle de vie :
- Lire la transcription de session OpenClaw en miroir.
- Initialiser le moteur de contexte actif lorsqu’un fichier de session précédent existe.
- Exécuter la maintenance de l’amorçage lorsque disponible.
- Assembler le contexte en utilisant le moteur de contexte actif.
- Convertir le contexte assemblé en entrées compatibles Codex.
- Démarrez ou reprenez le fil Codex avec des instructions de développeur incluant tout
systemPromptAdditiondu moteur de contexte. - Démarrez le tour Codex avec l’invite utilisateur assemblée.
- Réfléchissez le résultat Codex dans la transcription OpenClaw.
- Appelez
afterTurnsi implémenté, sinoningestBatch/ingest, en utilisant l’instantané de la transcription reflétée. - Exécuter la maintenance du tour après les tours réussis non abandonnés.
- Conserver les signaux de compactage natifs de Codex et les crochets de compactage OpenClaw.
Contraintes de conception
Section intitulée « Contraintes de conception »Le serveur d’application Codex reste la référence pour l’état du thread natif
Section intitulée « Le serveur d’application Codex reste la référence pour l’état du thread natif »Codex possède son thread natif et tout historique interne étendu. OpenClaw ne doit pas essayer de modifier l’historique interne du serveur d’application, sauf via des appels de protocole pris en charge.
Le miroir de transcription de OpenClaw reste la source pour les fonctionnalités OpenClaw :
- historique des discussions
- recherche
- tenue de livres
/newet/reset - changements futurs de modèle ou de harnais
- état du plugin context-engine
L’assemblage du moteur de contexte doit être projeté dans les entrées Codex
Section intitulée « L’assemblage du moteur de contexte doit être projeté dans les entrées Codex »L’interface du moteur de contexte renvoie OpenClaw AgentMessage[], et non un correctif de fil Codex. Le turn/start du serveur d’application Codex accepte une entrée utilisateur actuelle, tandis que thread/start et thread/resume acceptent des instructions de développeur.
Par conséquent, la mise en œuvre nécessite une couche de projection. La première version sûre devrait éviter de prétendre qu’elle peut remplacer l’historique interne de Codex. Elle devrait injecter le contexte assemblé sous forme de matériel de prompt/d’instruction de développeur déterministe autour du tour actuel.
La stabilité du cache de prompt compte
Section intitulée « La stabilité du cache de prompt compte »Pour les moteurs tels que lossless-claw, le contexte assemblé doit être déterministe pour des entrées inchangées. N’ajoutez pas d’horodatages, d’identifiants aléatoires ou d’ordre non déterministe au texte de contexte généré.
La sémantique de sélection à l’exécution ne change pas
Section intitulée « La sémantique de sélection à l’exécution ne change pas »La sélection du harnais reste telle quelle :
runtime: "openclaw"sélectionne le harnais intégré OpenClawruntime: "codex"sélectionne le harnais Codex enregistréruntime: "auto"permet aux harnais de plugins de revendiquer les fournisseurs pris en charge- les exécutions
autonon correspondantes utilisent le harnais intégré OpenClaw
Ce travail modifie ce qui se passe après la sélection du harnais Codex.
Plan de mise en œuvre
Section intitulée « Plan de mise en œuvre »1. Exporter ou déplacer les assistants de tentative de moteur de contexte réutilisables
Section intitulée « 1. Exporter ou déplacer les assistants de tentative de moteur de contexte réutilisables »Aujourd’hui, les assistants de cycle de vie réutilisables se trouvent sous le lanceur d’agent intégré :
src/agents/embedded-agent-runner/run/attempt.context-engine-helpers.tssrc/agents/embedded-agent-runner/run/attempt.prompt-helpers.tssrc/agents/embedded-agent-runner/context-engine-maintenance.ts
Codex devrait importer des assistants neutres par rapport au harnais plutôt que d’aller chercher dans les détails d’implémentation du lanceur.
Créez un module neutre par rapport au harnais, par exemple :
src/agents/harness/context-engine-lifecycle.ts
Déplacez ou ré-exportez :
runAttemptContextEngineBootstrapassembleAttemptContextEnginefinalizeAttemptContextEngineTurnbuildAfterTurnRuntimeContextbuildAfterTurnRuntimeContextFromUsage- un petit wrapper autour de
runContextEngineMaintenance
Mettre à jour les sites d’appel du harnais intégré dans la même PR.
Les noms des assistants neutres ne devraient pas mentionner le harnais intégré.
Noms suggérés :
bootstrapHarnessContextEngineassembleHarnessContextEnginefinalizeHarnessContextEngineTurnbuildHarnessContextEngineRuntimeContextrunHarnessContextEngineMaintenance
2. Ajouter un helper de projection de contexte Codex
Section intitulée « 2. Ajouter un helper de projection de contexte Codex »Ajouter un nouveau module :
extensions/codex/src/app-server/context-engine-projection.ts
Responsabilités :
- Accepter le
AgentMessage[]assemblé, l’historique miroir original et le prompt actuel. - Déterminer quel contexte appartient aux instructions du développeur par rapport à la saisie de l’utilisateur actuel.
- Conserver le prompt utilisateur actuel en tant que demande actionnable finale.
- Rendre les messages précédents dans un format stable et explicite.
- Éviter les métadonnées volatiles.
API proposée API :
export type CodexContextProjection = { developerInstructionAddition?: string; promptText: string; assembledMessages: AgentMessage[]; prePromptMessageCount: number;};
export function projectContextEngineAssemblyForCodex(params: { assembledMessages: AgentMessage[]; originalHistoryMessages: AgentMessage[]; prompt: string; systemPromptAddition?: string }): CodexContextProjection;Première projection recommandée :
- Mettre
systemPromptAdditiondans les instructions du développeur. - Mettre le contexte de la transcription assemblé avant l’invite actuelle dans
promptText. - L’étiqueter clairement comme contexte assemblé par OpenClaw.
- Garder l’invite actuelle en dernier.
- Exclure l’invite utilisateur actuelle en double si elle apparaît déjà à la fin.
Exemple de forme d’invite :
OpenClaw assembled context for this turn:
<conversation_context>[user]...
[assistant]...</conversation_context>
Current user request:...C’est moins élégant que la chirurgie de l’historique Codex native, mais c’est réalisable à l’intérieur de OpenClaw et préserve la sémantique du moteur de contexte.
Amélioration future : si Codex app-server expose un protocole pour remplacer ou compléter l’historique des fils, échanger cette couche de projection pour utiliser cette API.
3. Connecter l’amorçage avant le démarrage du fil Codex
Section intitulée « 3. Connecter l’amorçage avant le démarrage du fil Codex »Dans extensions/codex/src/app-server/run-attempt.ts :
- Lire l’historique de la session en miroir comme aujourd’hui.
- Déterminez si le fichier de session existait avant cette exécution. Préférez une aide
qui vérifie
fs.stat(params.sessionFile)avant de répercuter les écritures. - Ouvrez un
SessionManagerou utilisez un adaptateur étroit de gestionnaire de session si l’aide le requiert. - Appelez l’aide neutre d’amorçage lorsque
params.contextEngineexiste.
Pseudo-flux :
const hadSessionFile = await fileExists(params.sessionFile);const sessionManager = SessionManager.open(params.sessionFile);const historyMessages = sessionManager.buildSessionContext().messages;
await bootstrapHarnessContextEngine({ hadSessionFile, contextEngine: params.contextEngine, sessionId: params.sessionId, sessionKey: sandboxSessionKey, sessionFile: params.sessionFile, sessionManager, runtimeContext: buildHarnessContextEngineRuntimeContext(...), runMaintenance: runHarnessContextEngineMaintenance, warn,});Utilisez la même convention sessionKey que le pont d’outil Codex et le miroir de
transcription. Aujourd’hui, Codex calcule sandboxSessionKey à partir de params.sessionKey ou
params.sessionId ; utilisez cela de manière cohérente, sauf s’il y a une raison de préserver
le params.sessionKey brut.
4. Connectez l’assemblage avant thread/start / thread/resume et turn/start
Section intitulée « 4. Connectez l’assemblage avant thread/start / thread/resume et turn/start »Dans runCodexAppServerAttempt :
- Créez d’abord des outils dynamiques, afin que le moteur de contexte puisse voir les noms d’outils réellement disponibles.
- Lisez l’historique de la session mise en miroir.
- Exécutez
assemble(...)du moteur de contexte lorsqueparams.contextEngineexiste. - Projetez le résultat assemblé dans :
- ajout d’instructions au développeur
- texte d’invite pour
turn/start
L’appel de hook existant :
resolveAgentHarnessBeforePromptBuildResult({ prompt: params.prompt, developerInstructions: buildDeveloperInstructions(params), messages: historyMessages, ctx: hookContext,});doit devenir contextuel :
- calculer les instructions de base du développeur avec
buildDeveloperInstructions(params) - appliquer l’assemblage/projection du moteur de contexte
- exécuter
before_prompt_buildavec l’invite/instructions du développeur projetées
Cet ordre permet aux hooks de prompt génériques de voir le même prompt que Codex recevra. Si
nous avons besoin d’une parité stricte avec OpenClaw, exécutez l’assemblage du moteur de contexte avant la composition
des hooks, car le harnais intégré applique le systemPromptAddition du moteur de contexte
au prompt système final après son pipeline de prompt. L’invariant important est que le moteur de contexte et les hooks aient tous deux un ordre déterministe et documenté.
Ordre recommandé pour la première implémentation :
buildDeveloperInstructions(params)- context-engine
assemble() - ajouter/préfixer
systemPromptAdditionaux instructions développeur - projeter les messages assemblés dans le texte du prompt
resolveAgentHarnessBeforePromptBuildResult(...)- passer les instructions développeur finales à
startOrResumeThread(...) - passer le texte de prompt final à
buildTurnStartParams(...)
La spécification doit être encodée dans des tests afin que les modifications futures ne la réordonnent pas par accident.
5. Conserver un formatage stable pour le cache de prompt
Section intitulée « 5. Conserver un formatage stable pour le cache de prompt »L’assistant de projection doit produire une sortie stable en octets pour des entrées identiques :
- ordre des messages stable
- étiquettes de rôle stables
- pas d’horodatages générés
- pas de fuite de l’ordre des clés d’objet
- pas de délimiteurs aléatoires
- pas d’identifiants par exécution
Utilisez des délimiteurs fixes et des sections explicites.
6. Câbler post-turn après la mise en miroir de la transcription
Section intitulée « 6. Câbler post-turn après la mise en miroir de la transcription »Le CodexAppServerEventProjector de Codex construit un messagesSnapshot local pour
le tour actuel. mirrorTranscriptBestEffort(...) écrit cet instantané dans le
miroir de transcription OpenClaw.
Après que la mise en miroir a réussi ou échoué, appelez le finaliseur du moteur de contexte avec le meilleur instantané de message disponible :
- Privilégiez le contexte complet de la session mise en miroir après l’écriture, car
afterTurnattend l’instantané de la session, et pas seulement le tour actuel. - Revenez à
historyMessages + result.messagesSnapshotsi le fichier de session ne peut pas être rouvert.
Pseudo-flux :
const prePromptMessageCount = historyMessages.length;await mirrorTranscriptBestEffort(...);const finalMessages = readMirroredSessionHistoryMessages(params.sessionFile) ?? [...historyMessages, ...result.messagesSnapshot];
await finalizeHarnessContextEngineTurn({ contextEngine: params.contextEngine, promptError: Boolean(finalPromptError), aborted: finalAborted, yieldAborted, sessionIdUsed: params.sessionId, sessionKey: sandboxSessionKey, sessionFile: params.sessionFile, messagesSnapshot: finalMessages, prePromptMessageCount, tokenBudget: params.contextTokenBudget, runtimeContext: buildHarnessContextEngineRuntimeContextFromUsage({ attempt: params, workspaceDir: effectiveWorkspace, agentDir, tokenBudget: params.contextTokenBudget, lastCallUsage: result.attemptUsage, promptCache: result.promptCache, }), runMaintenance: runHarnessContextEngineMaintenance, sessionManager, warn,});Si la mise en miroir échoue, appelez tout de même afterTurn avec l’instantané de repli, mais journalisez
le fait que le moteur de contexte ingère des données de tour de repli.
7. Normaliser l’utilisation et le contexte d’exécution du cache de prompt
Section intitulée « 7. Normaliser l’utilisation et le contexte d’exécution du cache de prompt »Les résultats Codex incluent une utilisation normalisée issue des notifications de jetons du serveur d’application lorsque celles-ci sont disponibles. Transmettez cette utilisation dans le contexte d’exécution du moteur de contexte.
Si le serveur d’application Codex expose éventuellement les détails de lecture/écriture du cache, mappez-les dans
ContextEnginePromptCacheInfo. D’ici là, omettez promptCache plutôt que
d’inventer des zéros.
8. Politique de compactage
Section intitulée « 8. Politique de compactage »Il existe deux systèmes de compactage :
- OpenClaw du moteur de contexte
compact() thread/compact/startnatif du serveur d’application Codex
Ne les confondez pas silencieusement.
/compact et compactage explicite OpenClaw
Section intitulée « /compact et compactage explicite OpenClaw »Lorsque le moteur de contexte sélectionné a info.ownsCompaction === true, la compactage explicite OpenClaw devrait privilégier le résultat compact() du moteur de contexte pour
le miroir de transcription OpenClaw et l’état du plugin.
Lorsque le harnais Codex sélectionné a une liaison de thread native, nous pouvons également demander une compactage native Codex pour maintenir le thread app-server en bonne santé, mais cela doit être signalé comme une action backend distincte dans les détails.
Comportement recommandé :
- Si
contextEngine.info.ownsCompaction === true:- appeler d’abord le
compact()du moteur de contexte - puis appeler au mieux la compactage native Codex lorsqu’une liaison de thread existe
- renvoyer le résultat du moteur de contexte comme résultat principal
- inclure le statut de la compactage native Codex dans
details.codexNativeCompaction
- appeler d’abord le
- Si le moteur de contexte actif ne possède pas la compaction :
- préserver le comportement de compaction natif actuel de Codex
Cela nécessite probablement de modifier extensions/codex/src/app-server/compact.ts ou
de l’envelopper à partir du chemin de compaction générique, en fonction de l’endroit où
maybeCompactAgentHarnessSession(...) est appelé.
Événements de contexteCompaction natif Codex en cascade
Section intitulée « Événements de contexteCompaction natif Codex en cascade »Codex peut émettre des événements d’élément contextCompaction au cours d’un tour. Conservez l’émission du hook actuel avant/après compactage dans event-projector.ts, mais ne traitez pas cela comme un compactage du moteur de contexte terminé.
Pour les moteurs qui possèdent le compactage, émettez un diagnostic explicite lorsque Codex effectue tout de même un compactage natif :
- nom du flux/de l’événement : le flux
compactionexistant est acceptable - details:
{ backend: "codex-app-server", ownsCompaction: true }
Cela rend la division vérifiable.
9. Réinitialisation de session et comportement de liaison
Section intitulée « 9. Réinitialisation de session et comportement de liaison »Le harnais Codex existant reset(...) efface la liaison du serveur d’application Codex du
fichier de session OpenClaw. Conservez ce comportement.
Assurez-vous également que le nettoyage de l’état du moteur de contexte continue de se produire via les chemons de cycle de vie de session OpenClaw existants. N’ajoutez pas de nettoyage spécifique à Codex à moins que le cycle de vie du moteur de contexte ne manque actuellement des événements de réinitialisation/suppression pour tous les harnais.
10. Gestion des erreurs
Section intitulée « 10. Gestion des erreurs »Suivre la sémantique intégrée OpenClaw :
- les échecs de l’amorçage (bootstrap) avertissent et continuent
- les échecs de l’assemblage avertissent et reviennent aux messages/invites de pipeline non assemblés
- les échecs afterTurn/ingest avertissent et marquent la finalisation post-tour comme échouée
- la maintenance s’exécute uniquement après les tours réussis, non abandonnés et non cédés
- les erreurs de compactage ne doivent pas être réessayées comme de nouveaux invites
ajouts spécifiques à Codex :
- Si la projection du contexte échoue, avertir et revenir à l’invite originale.
- Si le miroir de transcription échoue, tenter quand même la finalisation du moteur de contexte avec des messages de repli.
- Si la compactage native Codex échoue après la réussite de la compactage du moteur de contexte, ne pas échouer toute la compactage OpenClaw lorsque le moteur de contexte est primaire.
Plan de test
Section intitulée « Plan de test »Tests unitaires
Section intitulée « Tests unitaires »Ajouter des tests sous extensions/codex/src/app-server :
-
run-attempt.context-engine.test.ts- Codex appelle
bootstraplorsqu’un fichier de session existe. - Codex appelle
assembleavec des messages en miroir, le budget de jetons, les noms d’outils, le mode de citations, l’identifiant du modèle et le prompt. systemPromptAdditionest inclus dans les instructions du développeur.- Les messages assemblés sont projetés dans le prompt avant la requête actuelle.
- Codex appelle
afterTurnaprès la mise en miroir de la transcription. - Sans
afterTurn, Codex appelleingestBatchouingestpar message. - La maintenance de tour s’exécute après les tours réussis.
- La maintenance de tour ne s’exécute pas en cas d’erreur de prompt, d’abandon ou d’abandon de cession.
- Codex appelle
-
context-engine-projection.test.ts- sortie stable pour des entrées identiques
- pas de prompt actuel en double lorsque l’historique assemblé l’inclut
- gère l’historique vide
- préserve l’ordre des rôles
- inclut l’ajout de l’invite système uniquement dans les instructions du développeur
-
compact.context-engine.test.ts- le résultat principal du moteur de contexte propriétaire l’emporte
- l’état de compactage natif de Codex apparaît dans les détails lorsqu’il est également tenté
- l’échec natif de Codex ne fait pas échouer le compactage du moteur de contexte propriétaire
- le moteur de contexte non propriétaire préserve le comportement actuel de compactage natif
Tests existants à mettre à jour
Section intitulée « Tests existants à mettre à jour »extensions/codex/src/app-server/run-attempt.test.tssi présent, sinon tests d’exécution Codex app-server les plus proches.extensions/codex/src/app-server/event-projector.test.tsuniquement si les détails de l’événement de compactage changent.src/agents/harness/selection.test.tsne devrait pas nécessiter de modifications sauf si le comportement de la configuration change ; il doit rester stable.- Les tests de moteur de contexte du harnais intégré doivent continuer à réussir sans modification.
Tests d’intégration / en direct
Section intitulée « Tests d’intégration / en direct »Ajouter ou étendre les tests de fumaison du harnais Codex en direct :
- configure
plugins.slots.contextEngineto a test engine - configure
agents.defaults.modelto acodex/*model - configurer le provider/model
agentRuntime.id = "codex" - assert test engine observed:
- bootstrap
- assemble
- afterTurn or ingest
- maintenance
Avoid requiring lossless-claw in OpenClaw core tests. Use a small in-repo fake context engine plugin.
Observability
Section intitulée « Observability »Ajoutez des journaux de débogage autour des appels du cycle de vie du moteur de contexte Codex :
codex context engine bootstrap started/completed/failedcodex context engine assemble appliedcodex context engine finalize completed/failedcodex context engine maintenance skippedavec motifcodex native compaction completed alongside context-engine compaction
Évitez de consigner les invites complètes ou le contenu des transcriptions.
Ajoutez des champs structurés lorsque cela est utile :
sessionIdsessionKeyrédigé ou omis conformément aux pratiques de journalisation existantesengineIdthreadIdturnIdassembledMessageCountestimatedTokenshasSystemPromptAddition
Migration / compatibilité
Section intitulée « Migration / compatibilité »Cela devrait être rétrocompatible :
- Si aucun moteur de contexte n’est configuré, le comportement du moteur de contexte hérité doit être équivalent au comportement actuel du harnais Codex.
- Si le
assembledu moteur de contexte échoue, Codex doit continuer avec le chemin d’invite d’origine. - Les liaisons de thread Codex existantes doivent rester valides.
- L’empreinte dynamique des outils ne doit pas inclure la sortie du moteur de contexte ; sinon, chaque changement de contexte pourrait forcer la création d’un nouveau fil Codex. Seul le catalogue d’outils doit affecter l’empreinte dynamique des outils.
Questions ouvertes
Section intitulée « Questions ouvertes »-
Le contexte assemblé doit-il être injecté entièrement dans l’invite utilisateur, entièrement dans les instructions du développeur, ou être partagé ?
Recommandation : diviser. Placer
systemPromptAdditiondans les instructions du développeur ; placer le contexte de la transcription assemblée dans le wrapper de l’invite utilisateur. Cela correspond le mieux au protocole Codex actuel sans modifier l’historique des fils natifs. -
La compaction native Codex doit-elle être désactivée lorsqu’un moteur de contexte possède la compaction ?
Recommandation : non, pas initialement. La compaction native de Codex peut encore être nécessaire pour garder le thread du serveur d’application en vie. Mais elle doit être signalée comme une compaction native de Codex, et non comme une compaction du moteur de contexte.
-
Est-ce que
before_prompt_builddoit s’exécuter avant ou après l’assemblage du moteur de contexte ?Recommandation : après la projection du moteur de contexte pour Codex, afin que les points d’ancrage génériques du harnais voient l’invite réelle et les instructions du développeur que Codex recevra. Si la parité du harnais intégré nécessite l’inverse, encodez l’ordre choisi dans les tests et documentez-le ici.
-
Le serveur d’application Codex peut-il accepter une future substitution structurée de contexte/historique ?
Inconnu. Si c’est possible, remplacez la couche de projection de texte par ce protocole et gardez les appels de cycle de vie inchangés.
Critères d’acceptation
Section intitulée « Critères d’acceptation »- Un tour de
codex/*harness intégré invoque le cycle de vie d’assemblage du moteur de contexte sélectionné. - Un
systemPromptAdditionde moteur de contexte affecte les instructions développeur de Codex. - Le contexte assemblé affecte l’entrée du tour Codex de manière déterministe.
- Les tours Codex réussis appellent
afterTurnou ingèrent le repli. - Les tours Codex réussis exécutent la maintenance de tour du moteur de contexte.
- Les tours échoués/avortés/abandonnés-yield n’exécutent pas la maintenance de tour.
- La compactage appartenant au moteur de contexte reste principal pour l’état OpenClaw/du plugin.
- Le compactage natif Codex reste auditable en tant que comportement natif de Codex.
- Le comportement existant du moteur de contexte pour le harnais intégré reste inchangé.
- Le comportement existant du harnais Codex est inchangé lorsqu’aucun moteur de contexte non hérité n’est sélectionné ou lorsque l’assemblage échoue.