Configuration
OpenClaw lit une configuration facultative depuis~/.openclaw/openclaw.json.
Si le fichier est absent, OpenClaw utilise des valeurs par défaut sûres. Raisons courantes d’ajouter une configuration :
- Connecter des channels et contrôler qui peut envoyer des messages au bot
- Définir des modèles, des outils, le sandboxing ou l’automatisation (cron, hooks)
- Ajuster les sessions, les médias, le réseau ou l’interface utilisateur
Configuration minimale
Modifier la configuration
- Assistant interactif
- CLI (commandes en une ligne)
- Control UI
- Modification directe
Validation stricte
Remarques sur les outils de schéma :openclaw config schemaaffiche la même famille de schémas JSON que celle utilisée par la Control UI et la validation de configuration.- Traitez cette sortie de schéma comme le contrat canonique lisible par machine pour
openclaw.json; cette vue d’ensemble et la référence de configuration la résument. - Les valeurs de champ
titleetdescriptionsont reportées dans la sortie du schéma pour les éditeurs et les outils de formulaire. - Les entrées d’objet imbriqué, de joker (
*) et d’élément de tableau ([]) héritent des mêmes métadonnées de documentation là où la documentation du champ correspondant existe. - Les branches de composition
anyOf/oneOf/allOfhéritent également des mêmes métadonnées de documentation, afin que les variantes d’union/intersection conservent la même aide de champ. config.schema.lookuprenvoie un chemin de configuration normalisé avec un nœud de schéma superficiel (title,description,type,enum,const, limites communes, et champs de validation similaires), les métadonnées d’indication UI correspondantes et des résumés immédiats des enfants pour les outils d’exploration détaillée.- Les schémas de plugin/channel à l’exécution sont fusionnés lorsque la gateway peut charger le registre de manifestes actuel.
pnpm config:docs:checkdétecte les écarts entre les artefacts de référence de configuration destinés à la documentation et la surface actuelle du schéma.
- La Gateway ne démarre pas
- Seules les commandes de diagnostic fonctionnent (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Exécutez
openclaw doctorpour voir les problèmes exacts - Exécutez
openclaw doctor --fix(ou--yes) pour appliquer les réparations
Tâches courantes
Configurer un channel (WhatsApp, Telegram, Discord, etc.)
Configurer un channel (WhatsApp, Telegram, Discord, etc.)
channels.<provider>. Consultez la page dédiée au channel pour les étapes de configuration :- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Choisir et configurer les modèles
Choisir et configurer les modèles
agents.defaults.modelsdéfinit le catalogue de modèles et sert de liste d’autorisation pour/model.- Les références de modèle utilisent le format
provider/model(par exempleanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxcontrôle la réduction d’échelle des images de transcription/outils (valeur par défaut1200) ; des valeurs plus faibles réduisent généralement l’utilisation de jetons de vision dans les exécutions riches en captures d’écran.- Consultez Models CLI pour changer de modèles dans le chat et Model Failover pour le comportement de rotation d’authentification et de bascule.
- Pour les fournisseurs personnalisés/autohébergés, consultez Custom providers dans la référence.
Contrôler qui peut envoyer des messages au bot
Contrôler qui peut envoyer des messages au bot
dmPolicy :"pairing"(par défaut) : les expéditeurs inconnus reçoivent un code d’appairage à usage unique à approuver"allowlist": seuls les expéditeurs dansallowFrom(ou le magasin d’autorisations appairé)"open": autoriser tous les DM entrants (nécessiteallowFrom: ["*"])"disabled": ignorer tous les DM
groupPolicy + groupAllowFrom ou des listes d’autorisation spécifiques au channel.Consultez la référence complète pour les détails par channel.Configurer le filtrage par mention pour les discussions de groupe
Configurer le filtrage par mention pour les discussions de groupe
- Mentions de métadonnées : mentions @ natives (WhatsApp appuyer-pour-mentionner, Telegram @bot, etc.)
- Modèles de texte : modèles regex sûrs dans
mentionPatterns - Consultez la référence complète pour les remplacements par channel et le mode self-chat.
Restreindre les Skills par agent
Restreindre les Skills par agent
agents.defaults.skills pour une base partagée, puis remplacez des
agents spécifiques avec agents.list[].skills :- Omettez
agents.defaults.skillspour des Skills non restreintes par défaut. - Omettez
agents.list[].skillspour hériter des valeurs par défaut. - Définissez
agents.list[].skills: []pour aucune Skills. - Consultez Skills, Configuration des Skills, et la référence de configuration.
Ajuster la surveillance de santé des channels de la gateway
Ajuster la surveillance de santé des channels de la gateway
- Définissez
gateway.channelHealthCheckMinutes: 0pour désactiver globalement les redémarrages du moniteur de santé. channelStaleEventThresholdMinutesdoit être supérieur ou égal à l’intervalle de vérification.- Utilisez
channels.<provider>.healthMonitor.enabledouchannels.<provider>.accounts.<id>.healthMonitor.enabledpour désactiver les redémarrages automatiques pour un channel ou un compte sans désactiver le moniteur global. - Consultez Health Checks pour le débogage opérationnel et la référence complète pour tous les champs.
Configurer les sessions et les réinitialisations
Configurer les sessions et les réinitialisations
dmScope:main(partagé) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: valeurs globales par défaut pour le routage de session lié aux fils (Discord prend en charge/focus,/unfocus,/agents,/session idleet/session max-age).- Consultez Session Management pour la portée, les liens d’identité et la politique d’envoi.
- Consultez la référence complète pour tous les champs.
Activer le sandboxing
Activer le sandboxing
scripts/sandbox-setup.shConsultez Sandboxing pour le guide complet et la référence complète pour toutes les options.Activer le push via relais pour les builds iOS officiels
Activer le push via relais pour les builds iOS officiels
openclaw.json.Définissez ceci dans la configuration de la gateway :- Permet à la gateway d’envoyer
push.test, des impulsions de réveil et des réveils de reconnexion via le relais externe. - Utilise une autorisation d’envoi limitée à l’enregistrement et transmise par l’app iOS appairée. La gateway n’a pas besoin d’un jeton de relais à l’échelle du déploiement.
- Lie chaque enregistrement via relais à l’identité de gateway avec laquelle l’app iOS a été appairée, de sorte qu’une autre gateway ne puisse pas réutiliser l’enregistrement stocké.
- Conserve les builds iOS locaux/manuels sur APNs direct. Les envois via relais ne s’appliquent qu’aux builds officiels distribués qui se sont enregistrés via le relais.
- Doit correspondre à l’URL de base du relais intégrée au build iOS officiel/TestFlight, afin que l’enregistrement et le trafic d’envoi atteignent le même déploiement de relais.
- Installez un build iOS officiel/TestFlight compilé avec la même URL de base du relais.
- Configurez
gateway.push.apns.relay.baseUrlsur la gateway. - Appairez l’app iOS à la gateway et laissez les sessions de nœud et d’opérateur se connecter.
- L’app iOS récupère l’identité de la gateway, s’enregistre auprès du relais à l’aide d’App Attest et du reçu de l’app, puis publie la charge utile
push.apns.registervia relais vers la gateway appairée. - La gateway stocke le handle de relais et l’autorisation d’envoi, puis les utilise pour
push.test, les impulsions de réveil et les réveils de reconnexion.
- Si vous basculez l’app iOS vers une autre gateway, reconnectez l’app afin qu’elle puisse publier un nouvel enregistrement de relais lié à cette gateway.
- Si vous livrez un nouveau build iOS pointant vers un autre déploiement de relais, l’app actualise son enregistrement de relais en cache au lieu de réutiliser l’ancienne origine de relais.
OPENCLAW_APNS_RELAY_BASE_URLetOPENCLAW_APNS_RELAY_TIMEOUT_MSfonctionnent toujours comme surcharges d’environnement temporaires.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truereste une échappatoire de développement réservée au loopback ; ne conservez pas d’URL de relais HTTP dans la configuration.
Configurer heartbeat (vérifications périodiques)
Configurer heartbeat (vérifications périodiques)
every: chaîne de durée (30m,2h). Définissez0mpour désactiver.target:last|none|<channel-id>(par exemplediscord,matrix,telegramouwhatsapp)directPolicy:allow(par défaut) oublockpour les cibles heartbeat de type DM- Consultez Heartbeat pour le guide complet.
Configurer des tâches cron
Configurer des tâches cron
sessionRetention: supprime les sessions d’exécution isolées terminées desessions.json(par défaut24h; définissezfalsepour désactiver).runLog: purgecron/runs/<jobId>.jsonlselon la taille et le nombre de lignes conservées.- Consultez Cron jobs pour la vue d’ensemble de la fonctionnalité et des exemples CLI.
Configurer des webhooks (hooks)
Configurer des webhooks (hooks)
- Traitez tout le contenu des charges utiles hook/webhook comme une entrée non fiable.
- Utilisez un
hooks.tokendédié ; ne réutilisez pas le jeton partagé de la Gateway. - L’authentification hook se fait uniquement par en-tête (
Authorization: Bearer ...oux-openclaw-token) ; les jetons dans la chaîne de requête sont rejetés. hooks.pathne peut pas être/; conservez l’entrée webhook sur un sous-chemin dédié tel que/hooks.- Laissez les indicateurs de contournement de contenu non sûr désactivés (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) sauf pour un débogage strictement limité. - Si vous activez
hooks.allowRequestSessionKey, définissez égalementhooks.allowedSessionKeyPrefixespour limiter les clés de session choisies par l’appelant. - Pour les agents pilotés par hook, préférez des niveaux de modèle modernes robustes et une politique d’outils stricte (par exemple messagerie uniquement plus sandboxing lorsque c’est possible).
Configurer le routage multi-agent
Configurer le routage multi-agent
Fractionner la configuration en plusieurs fichiers ($include)
Fractionner la configuration en plusieurs fichiers ($include)
$include pour organiser les grandes configurations :- Fichier unique : remplace l’objet conteneur
- Tableau de fichiers : fusion profonde dans l’ordre (le dernier l’emporte)
- Clés sœurs : fusionnées après les inclusions (remplacent les valeurs incluses)
- Inclusions imbriquées : prises en charge jusqu’à 10 niveaux de profondeur
- Chemins relatifs : résolus par rapport au fichier incluant
- Gestion des erreurs : erreurs claires pour les fichiers manquants, les erreurs d’analyse et les inclusions circulaires
Rechargement à chaud de la configuration
La Gateway surveille~/.openclaw/openclaw.json et applique automatiquement les modifications — aucun redémarrage manuel n’est nécessaire pour la plupart des paramètres.
Modes de rechargement
| Mode | Comportement |
|---|---|
hybrid (par défaut) | Applique immédiatement à chaud les modifications sûres. Redémarre automatiquement pour les modifications critiques. |
hot | Applique uniquement à chaud les modifications sûres. Journalise un avertissement lorsqu’un redémarrage est nécessaire — à vous de le gérer. |
restart | Redémarre la Gateway à chaque modification de configuration, sûre ou non. |
off | Désactive la surveillance du fichier. Les modifications prennent effet au prochain redémarrage manuel. |
Ce qui s’applique à chaud et ce qui nécessite un redémarrage
La plupart des champs s’appliquent à chaud sans interruption. En modehybrid, les modifications nécessitant un redémarrage sont gérées automatiquement.
| Catégorie | Champs | Redémarrage nécessaire ? |
|---|---|---|
| Channels | channels.*, web (WhatsApp) — tous les channels intégrés et d’extension | Non |
| Agent et modèles | agent, agents, models, routing | Non |
| Automatisation | hooks, cron, agent.heartbeat | Non |
| Sessions et messages | session, messages | Non |
| Outils et médias | tools, browser, skills, audio, talk | Non |
| UI et divers | ui, logging, identity, bindings | Non |
| Serveur gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Oui |
| Infrastructure | discovery, canvasHost, plugins | Oui |
gateway.reload et gateway.remote sont des exceptions — les modifier ne déclenche pas de redémarrage.RPC de configuration (mises à jour programmatiques)
config.apply, config.patch, update.run) sont limités à 3 requêtes par 60 secondes par deviceId+clientIp. En cas de limitation, la RPC renvoie UNAVAILABLE avec retryAfterMs.config.schema.lookup: inspecter un sous-arbre de configuration limité à un chemin avec un nœud de schéma superficiel, les métadonnées d’indication correspondantes et les résumés immédiats des enfantsconfig.get: récupérer l’instantané actuel + le hashconfig.patch: chemin de mise à jour partielle préféréconfig.apply: remplacement complet de la configuration uniquementupdate.run: auto-mise à jour explicite + redémarrage
config.schema.lookup
puis config.patch.
config.apply (remplacement complet)
config.apply (remplacement complet)
raw(string) — charge utile JSON5 pour l’ensemble de la configurationbaseHash(facultatif) — hash de configuration deconfig.get(obligatoire lorsque la configuration existe)sessionKey(facultatif) — clé de session pour le ping de réveil après redémarragenote(facultatif) — note pour le sentinelle de redémarragerestartDelayMs(facultatif) — délai avant redémarrage (par défaut 2000)
config.patch (mise à jour partielle)
config.patch (mise à jour partielle)
- Les objets fusionnent récursivement
nullsupprime une clé- Les tableaux sont remplacés
raw(string) — JSON5 avec uniquement les clés à modifierbaseHash(obligatoire) — hash de configuration deconfig.getsessionKey,note,restartDelayMs— identiques àconfig.apply
config.apply : regroupement des redémarrages en attente plus un temps de recharge de 30 secondes entre les cycles de redémarrage.Variables d’environnement
OpenClaw lit les variables d’environnement depuis le processus parent ainsi que :.envdepuis le répertoire de travail actuel (si présent)~/.openclaw/.env(solution de secours globale)
Import des variables d'environnement du shell (facultatif)
Import des variables d'environnement du shell (facultatif)
OPENCLAW_LOAD_SHELL_ENV=1Substitution de variables d'environnement dans les valeurs de configuration
Substitution de variables d'environnement dans les valeurs de configuration
${VAR_NAME} :- Seuls les noms en majuscules sont reconnus :
[A-Z_][A-Z0-9_]* - Les variables manquantes/vides provoquent une erreur au chargement
- Échappez avec
$${VAR}pour une sortie littérale - Fonctionne dans les fichiers
$include - Substitution en ligne :
"${BASE}/v1"→"https://api.example.com/v1"
Références secrètes (env, file, exec)
Références secrètes (env, file, exec)
secrets.providers pour env/file/exec) se trouvent dans Secrets Management.
Les chemins d’identifiants pris en charge sont listés dans SecretRef Credential Surface.Référence complète
Pour la référence complète champ par champ, consultez Configuration Reference.Related: Configuration Examples · Configuration Reference · Doctor