Moteur de contexte
Un moteur de contexte contrôle la façon dont OpenClaw construit le contexte du modèle pour chaque exécution. Il décide quels messages inclure, comment résumer l’historique plus ancien et comment gérer le contexte au niveau des frontières entre sous-agents. OpenClaw est livré avec un moteur intégrélegacy. Les plugins peuvent enregistrer
des moteurs alternatifs qui remplacent le cycle de vie actif du moteur de contexte.
Démarrage rapide
Vérifiez quel moteur est actif :Installation d’un plugin de moteur de contexte
Les plugins de moteur de contexte s’installent comme n’importe quel autre plugin OpenClaw. Installez-le d’abord, puis sélectionnez le moteur dans l’emplacement :contextEngine sur "legacy" (ou
supprimez entièrement la clé — "legacy" est la valeur par défaut).
Fonctionnement
Chaque fois qu’OpenClaw exécute une invite de modèle, le moteur de contexte intervient à quatre points du cycle de vie :- Ingestion — appelée lorsqu’un nouveau message est ajouté à la session. Le moteur peut stocker ou indexer le message dans son propre magasin de données.
- Assemblage — appelée avant chaque exécution du modèle. Le moteur renvoie un
ensemble ordonné de messages (et un
systemPromptAdditionfacultatif) qui tiennent dans le budget de jetons. - Compactage — appelée lorsque la fenêtre de contexte est pleine, ou lorsque l’utilisateur exécute
/compact. Le moteur résume l’historique plus ancien pour libérer de l’espace. - Après tour — appelée une fois l’exécution terminée. Le moteur peut persister l’état, déclencher un compactage en arrière-plan ou mettre à jour des index.
Cycle de vie des sous-agents (facultatif)
OpenClaw appelle actuellement un hook de cycle de vie de sous-agent :- onSubagentEnded — nettoie lorsque la session d’un sous-agent se termine ou est balayée.
prepareSubagentSpawn fait partie de l’interface pour une utilisation future, mais
l’environnement d’exécution ne l’invoque pas encore.
Ajout à l’invite système
La méthodeassemble peut renvoyer une chaîne systemPromptAddition. OpenClaw
la préfixe à l’invite système de l’exécution. Cela permet aux moteurs d’injecter
des indications dynamiques de rappel, des instructions de récupération ou des conseils
sensibles au contexte, sans exiger de fichiers statiques dans l’espace de travail.
Le moteur hérité
Le moteur intégrélegacy préserve le comportement d’origine d’OpenClaw :
- Ingestion : no-op (le gestionnaire de session gère directement la persistance des messages).
- Assemblage : transmission directe (le pipeline sanitize → validate → limit existant dans l’environnement d’exécution gère l’assemblage du contexte).
- Compactage : délègue au compactage de résumé intégré, qui crée un résumé unique des anciens messages et conserve intacts les messages récents.
- Après tour : no-op.
systemPromptAddition.
Lorsqu’aucun plugins.slots.contextEngine n’est défini (ou qu’il est défini sur "legacy"), ce
moteur est utilisé automatiquement.
Moteurs de plugin
Un plugin peut enregistrer un moteur de contexte à l’aide de l’API de plugin :L’interface ContextEngine
Membres requis :| Member | Kind | Purpose |
|---|---|---|
info | Propriété | ID du moteur, nom, version et indication de possession du compactage |
ingest(params) | Méthode | Stocker un seul message |
assemble(params) | Méthode | Construire le contexte pour une exécution du modèle (renvoie AssembleResult) |
compact(params) | Méthode | Résumer/réduire le contexte |
assemble renvoie un AssembleResult avec :
messages— les messages ordonnés à envoyer au modèle.estimatedTokens(requis,number) — l’estimation par le moteur du nombre total de jetons dans le contexte assemblé. OpenClaw l’utilise pour les décisions de seuil de compactage et les rapports de diagnostic.systemPromptAddition(facultatif,string) — préfixé à l’invite système.
| Member | Kind | Purpose |
|---|---|---|
bootstrap(params) | Méthode | Initialiser l’état du moteur pour une session. Appelée une fois lorsque le moteur voit une session pour la première fois (par ex. importation de l’historique). |
ingestBatch(params) | Méthode | Ingérer un tour terminé sous forme de lot. Appelée après la fin d’une exécution, avec tous les messages de ce tour à la fois. |
afterTurn(params) | Méthode | Travail de cycle de vie après exécution (persister l’état, déclencher un compactage en arrière-plan). |
prepareSubagentSpawn(params) | Méthode | Mettre en place un état partagé pour une session enfant. |
onSubagentEnded(params) | Méthode | Nettoyer après la fin d’un sous-agent. |
dispose() | Méthode | Libérer les ressources. Appelée lors de l’arrêt de la passerelle ou du rechargement du plugin — pas par session. |
ownsCompaction
ownsCompaction contrôle si l’auto-compactage intégré de Pi pendant une tentative reste
activé pour l’exécution :
true— le moteur prend en charge le comportement de compactage. OpenClaw désactive l’auto-compactage intégré de Pi pour cette exécution, et l’implémentationcompact()du moteur est responsable de/compact, du compactage de récupération après dépassement, ainsi que de tout compactage proactif qu’il souhaite effectuer dansafterTurn().falseou non défini — l’auto-compactage intégré de Pi peut toujours s’exécuter pendant l’exécution de l’invite, mais la méthodecompact()du moteur actif est toujours appelée pour/compactet la récupération après dépassement.
ownsCompaction: false ne signifie pas qu’OpenClaw revient automatiquement
au chemin de compactage du moteur hérité.
Cela signifie qu’il existe deux modèles de plugin valides :
- Mode propriétaire — implémentez votre propre algorithme de compactage et définissez
ownsCompaction: true. - Mode de délégation — définissez
ownsCompaction: falseet faites en sorte quecompact()appelledelegateCompactionToRuntime(...)depuisopenclaw/plugin-sdk/corepour utiliser le comportement de compactage intégré d’OpenClaw.
compact() no-op n’est pas sûr pour un moteur actif non propriétaire, car il
désactive le chemin normal de compactage /compact et de récupération après dépassement pour cet
emplacement de moteur.
Référence de configuration
kind: "context-engine" activés peuvent toujours se charger et exécuter leur code
d’enregistrement ; plugins.slots.contextEngine sélectionne seulement quel ID de moteur enregistré
OpenClaw résout lorsqu’il a besoin d’un moteur de contexte.
Relation avec le compactage et la mémoire
- Le compactage est l’une des responsabilités du moteur de contexte. Le moteur hérité délègue au résumé intégré d’OpenClaw. Les moteurs de plugin peuvent implémenter n’importe quelle stratégie de compactage (résumés DAG, récupération vectorielle, etc.).
- Les plugins de mémoire (
plugins.slots.memory) sont distincts des moteurs de contexte. Les plugins de mémoire fournissent la recherche/récupération ; les moteurs de contexte contrôlent ce que le modèle voit. Ils peuvent fonctionner ensemble — un moteur de contexte peut utiliser des données du plugin de mémoire pendant l’assemblage. Les moteurs de plugin qui veulent le chemin actif d’invite mémoire devraient privilégierbuildMemorySystemPromptAddition(...)depuisopenclaw/plugin-sdk/core, qui convertit les sections actives de l’invite mémoire en unsystemPromptAdditionprêt à être préfixé. Si un moteur a besoin d’un contrôle de plus bas niveau, il peut toujours récupérer les lignes brutes depuisopenclaw/plugin-sdk/memory-host-coreviabuildActiveMemoryPromptSection(...). - L’élagage de session (suppression en mémoire des anciens résultats d’outils) continue de s’exécuter quel que soit le moteur de contexte actif.
Conseils
- Utilisez
openclaw doctorpour vérifier que votre moteur se charge correctement. - Si vous changez de moteur, les sessions existantes conservent leur historique actuel. Le nouveau moteur prend le relais pour les exécutions futures.
- Les erreurs de moteur sont consignées dans les journaux et affichées dans les diagnostics. Si un moteur de plugin
ne parvient pas à s’enregistrer ou si l’ID de moteur sélectionné ne peut pas être résolu, OpenClaw
ne bascule pas automatiquement ; les exécutions échouent jusqu’à ce que vous corrigiez le plugin ou
que vous redéfinissiez
plugins.slots.contextEnginesur"legacy". - Pour le développement, utilisez
openclaw plugins install -l ./my-enginepour lier un répertoire de plugin local sans le copier.
Lié
- Contexte — comment le contexte est construit pour les tours de l’agent
- Architecture des plugins — enregistrement de plugins de moteur de contexte
- Compactage — résumé des longues conversations