Prompt système
OpenClaw construit un prompt système personnalisé pour chaque exécution d’agent. Le prompt appartient à OpenClaw et n’utilise pas le prompt par défaut de pi-coding-agent. Le prompt est assemblé par OpenClaw et injecté dans chaque exécution d’agent. Les plugins de fournisseur peuvent apporter des indications de prompt compatibles avec le cache sans remplacer l’intégralité du prompt détenu par OpenClaw. Le runtime du fournisseur peut :- remplacer un petit ensemble de sections cœur nommées (
interaction_style,tool_call_style,execution_bias) - injecter un préfixe stable au-dessus de la limite du cache de prompt
- injecter un suffixe dynamique en dessous de la limite du cache de prompt
before_prompt_build pour la compatibilité ou pour des changements de prompt réellement globaux, pas pour le comportement normal d’un fournisseur.
Structure
Le prompt est volontairement compact et utilise des sections fixes :- Tooling : rappel de la source de vérité des outils structurés, plus indications d’utilisation des outils au runtime.
- Safety : court rappel de garde-fous pour éviter les comportements de recherche de pouvoir ou de contournement de la supervision.
- Skills (lorsqu’ils sont disponibles) : indique au modèle comment charger à la demande les instructions des Skills.
- OpenClaw Self-Update : comment inspecter la configuration en toute sécurité avec
config.schema.lookup, corriger la configuration avecconfig.patch, remplacer la configuration complète avecconfig.apply, et exécuterupdate.rununiquement sur demande explicite de l’utilisateur. L’outilgateway, réservé au propriétaire, refuse également de réécriretools.exec.ask/tools.exec.security, y compris les alias héritéstools.bash.*qui se normalisent vers ces chemins exec protégés. - Workspace : répertoire de travail (
agents.defaults.workspace). - Documentation : chemin local vers la documentation OpenClaw (dépôt ou package npm) et quand la lire.
- Workspace Files (injected) : indique que les fichiers de bootstrap sont inclus ci-dessous.
- Sandbox (lorsqu’elle est activée) : indique le runtime sandboxé, les chemins de la sandbox et si l’exécution élevée est disponible.
- Current Date & Time : heure locale de l’utilisateur, fuseau horaire et format horaire.
- Reply Tags : syntaxe facultative des balises de réponse pour les fournisseurs pris en charge.
- Heartbeats : prompt de Heartbeat et comportement d’accusé de réception, lorsque les Heartbeats sont activés pour l’agent par défaut.
- Runtime : hôte, OS, node, modèle, racine du dépôt (lorsqu’elle est détectée), niveau de réflexion (une ligne).
- Reasoning : niveau de visibilité actuel + indication de bascule /reasoning.
- utiliser Cron pour un suivi ultérieur (
check back later, rappels, travail récurrent) au lieu de boucles de veilleexec, d’astuces de délaiyieldMsou de sondagesprocessrépétés - utiliser
exec/processuniquement pour des commandes qui démarrent maintenant et continuent à s’exécuter en arrière-plan - lorsque le réveil automatique à la fin est activé, démarrer la commande une seule fois et s’appuyer sur le mécanisme de réveil push lorsqu’elle produit une sortie ou échoue
- utiliser
processpour les journaux, l’état, l’entrée ou l’intervention lorsque vous devez inspecter une commande en cours d’exécution - si la tâche est plus importante, préférer
sessions_spawn; la fin des sous-agents est signalée par push et réannoncée automatiquement au demandeur - ne pas sonder
subagents list/sessions_listen boucle uniquement pour attendre la fin
update_plan est activé, Tooling indique également au
modèle de ne l’utiliser que pour un travail non trivial en plusieurs étapes, de conserver exactement une étape
in_progress, et d’éviter de répéter le plan entier après chaque mise à jour.
Les garde-fous de Safety dans le prompt système sont indicatifs. Ils guident le comportement du modèle mais n’appliquent pas la politique. Utilisez la politique des outils, les approbations exec, la sandbox et les listes d’autorisation des canaux pour une application stricte ; les opérateurs peuvent les désactiver par conception.
Sur les canaux disposant de cartes/boutons d’approbation natifs, le prompt runtime indique désormais à l’agent de s’appuyer d’abord sur cette interface d’approbation native. Il ne doit inclure une commande manuelle
/approve que lorsque le résultat de l’outil indique que les approbations dans le chat ne sont pas disponibles ou que l’approbation manuelle est la seule option.
Modes de prompt
OpenClaw peut générer des prompts système plus petits pour les sous-agents. Le runtime définit unpromptMode pour chaque exécution (pas une configuration destinée à l’utilisateur) :
full(par défaut) : inclut toutes les sections ci-dessus.minimal: utilisé pour les sous-agents ; omet Skills, Memory Recall, OpenClaw Self-Update, Model Aliases, User Identity, Reply Tags, Messaging, Silent Replies et Heartbeats. Tooling, Safety, Workspace, Sandbox, Current Date & Time (lorsqu’ils sont connus), Runtime et le contexte injecté restent disponibles.none: renvoie uniquement la ligne d’identité de base.
promptMode=minimal, les prompts injectés supplémentaires sont étiquetés Subagent
Context au lieu de Group Chat Context.
Injection du bootstrap de l’espace de travail
Les fichiers de bootstrap sont tronqués et ajoutés sous Project Context afin que le modèle voie le contexte d’identité et de profil sans avoir besoin de lectures explicites :AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(uniquement dans les espaces de travail tout neufs)MEMORY.mdlorsqu’il est présent, sinonmemory.mdcomme solution de repli en minuscules
HEARTBEAT.md est omis lors des exécutions normales lorsque
les Heartbeats sont désactivés pour l’agent par défaut ou que
agents.defaults.heartbeat.includeSystemPromptSection vaut false. Gardez les fichiers injectés concis —
en particulier MEMORY.md, qui peut grossir avec le temps et entraîner
une utilisation du contexte étonnamment élevée ainsi qu’une Compaction plus fréquente.
Remarque : les fichiers quotidiensLes fichiers volumineux sont tronqués avec un marqueur. La taille maximale par fichier est contrôlée parmemory/*.mdne font pas partie du Project Context de bootstrap normal. Lors des tours ordinaires, ils sont consultés à la demande via les outilsmemory_searchetmemory_get, de sorte qu’ils ne comptent pas dans la fenêtre de contexte sauf si le modèle les lit explicitement. Les tours/newet/resetseuls constituent l’exception : le runtime peut préfixer de la mémoire quotidienne récente comme bloc de contexte de démarrage à usage unique pour ce premier tour.
agents.defaults.bootstrapMaxChars (par défaut : 20000). Le contenu total du bootstrap injecté
sur l’ensemble des fichiers est plafonné par agents.defaults.bootstrapTotalMaxChars
(par défaut : 150000). Les fichiers manquants injectent un court marqueur de fichier manquant. En cas de troncature,
OpenClaw peut injecter un bloc d’avertissement dans Project Context ; contrôlez cela avec
agents.defaults.bootstrapPromptTruncationWarning (off, once, always ;
par défaut : once).
Les sessions de sous-agent n’injectent que AGENTS.md et TOOLS.md (les autres fichiers de bootstrap
sont filtrés pour garder le contexte du sous-agent réduit).
Les hooks internes peuvent intercepter cette étape via agent:bootstrap pour modifier ou remplacer
les fichiers de bootstrap injectés (par exemple en remplaçant SOUL.md par un persona alternatif).
Si vous souhaitez que l’agent paraisse moins générique, commencez par
Guide de personnalité SOUL.md.
Pour inspecter la contribution de chaque fichier injecté (brut vs injecté, troncature, plus surcharge de schéma d’outil), utilisez /context list ou /context detail. Voir Contexte.
Gestion du temps
Le prompt système inclut une section dédiée Current Date & Time lorsque le fuseau horaire de l’utilisateur est connu. Pour garder le cache de prompt stable, il n’inclut désormais que le fuseau horaire (sans horloge dynamique ni format horaire). Utilisezsession_status lorsque l’agent a besoin de l’heure actuelle ; la carte d’état
inclut une ligne d’horodatage. Le même outil peut aussi définir un remplacement de modèle par session
(model=default l’efface).
Configurez avec :
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Skills
Lorsque des Skills admissibles existent, OpenClaw injecte une liste compacte des Skills disponibles (formatSkillsForPrompt) qui inclut le chemin de fichier pour chaque Skill. Le
prompt indique au modèle d’utiliser read pour charger le SKILL.md à l’emplacement indiqué
(espace de travail, géré ou intégré). Si aucun Skill n’est admissible, la
section Skills est omise.
L’admissibilité inclut les conditions des métadonnées des Skills, les vérifications de l’environnement/configuration du runtime,
et la liste d’autorisation effective des Skills de l’agent lorsque agents.defaults.skills ou
agents.list[].skills est configuré.
- Valeur globale par défaut :
skills.limits.maxSkillsPromptChars - Remplacement par agent :
agents.list[].skillsLimits.maxSkillsPromptChars
agents.defaults.contextLimits.*agents.list[].contextLimits.*
memory_get, les résultats d’outil en direct et les actualisations de AGENTS.md après Compaction.
Documentation
Lorsqu’elle est disponible, le prompt système inclut une section Documentation qui pointe vers le répertoire local de la documentation OpenClaw (soitdocs/ dans l’espace de travail du dépôt, soit la documentation du
package npm intégré) et mentionne également le miroir public, le dépôt source, le Discord de la communauté et
ClawHub (https://clawhub.ai) pour la découverte des Skills. Le prompt indique au modèle de consulter d’abord la documentation locale
pour le comportement, les commandes, la configuration ou l’architecture d’OpenClaw, et d’exécuter
lui-même openclaw status lorsque c’est possible (en ne demandant à l’utilisateur que lorsqu’il n’y a pas accès).