Doctor
openclaw doctor est l’outil de réparation + migration pour OpenClaw. Il corrige les
configurations/états obsolètes, vérifie l’état du système et fournit des étapes de réparation exploitables.
Démarrage rapide
Sans interface / automatisation
Ce que fait la commande (résumé)
- Mise à jour préalable facultative pour les installations git (interactif uniquement).
- Vérification de fraîcheur du protocole UI (reconstruit la Control UI lorsque le schéma de protocole est plus récent).
- Vérification d’état + invite de redémarrage.
- Résumé de l’état des Skills (éligibles/manquants/bloqués) et état des plugins.
- Normalisation de la configuration pour les valeurs héritées.
- Migration de la configuration Talk depuis les champs plats hérités
talk.*verstalk.provider+talk.providers.<provider>. - Vérifications de migration du navigateur pour les anciennes configurations d’extension Chrome et de préparation Chrome MCP.
- Avertissements sur les remplacements de fournisseur OpenCode (
models.providers.opencode/models.providers.opencode-go). - Avertissements de masquage OAuth Codex (
models.providers.openai-codex). - Vérification des prérequis TLS OAuth pour les profils OAuth OpenAI Codex.
- Migration d’état héritée sur disque (sessions/répertoire d’agent/authentification WhatsApp).
- Migration des anciennes clés de contrat de manifeste de plugin (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Migration de l’ancien magasin cron (
jobId,schedule.cron, champs delivery/payload de niveau supérieur,providerdans payload, tâches de secours webhook simplesnotify: true). - Inspection des fichiers de verrouillage de session et nettoyage des verrous obsolètes.
- Vérifications d’intégrité et de permissions de l’état (sessions, transcriptions, répertoire d’état).
- Vérifications des permissions du fichier de configuration (
chmod 600) lors d’une exécution en local. - État de l’authentification des modèles : vérifie l’expiration OAuth, peut rafraîchir les jetons proches de l’expiration et signale les états de délai d’attente/désactivation des profils d’authentification.
- Détection de répertoires d’espace de travail supplémentaires (
~/openclaw). - Réparation de l’image sandbox lorsque le sandboxing est activé.
- Migration des anciens services et détection de passerelles supplémentaires.
- Migration de l’état hérité du canal Matrix (en mode
--fix/--repair). - Vérifications d’exécution Gateway (service installé mais non démarré ; libellé launchd mis en cache).
- Avertissements sur l’état des canaux (testés depuis la passerelle en cours d’exécution).
- Audit de la configuration du superviseur (launchd/systemd/schtasks) avec réparation facultative.
- Vérifications de bonnes pratiques d’exécution Gateway (Node vs Bun, chemins de gestionnaires de versions).
- Diagnostic de collision de port Gateway (par défaut
18789). - Avertissements de sécurité pour les politiques DM ouvertes.
- Vérifications d’authentification Gateway pour le mode jeton local (propose la génération d’un jeton lorsqu’aucune source de jeton n’existe ; n’écrase pas les configurations
SecretRefde jeton). - Vérification de persistance systemd sur Linux.
- Vérification de la taille des fichiers bootstrap de l’espace de travail (avertissements de troncature/proximité de limite pour les fichiers de contexte).
- Vérification de l’état des complétions shell et installation/mise à niveau automatiques.
- Vérification de préparation du fournisseur d’embeddings pour la recherche mémoire (modèle local, clé API distante ou binaire QMD).
- Vérifications d’installation source (incohérence d’espace de travail pnpm, ressources UI manquantes, binaire tsx manquant).
- Écrit la configuration mise à jour + les métadonnées de l’assistant.
Dreams UI : backfill et réinitialisation
La scène Dreams de la Control UI inclut des actions Backfill, Reset et Clear Grounded pour le flux de travail de grounded dreaming. Ces actions utilisent des méthodes RPC de style doctor de la passerelle, mais elles ne font pas partie de la réparation/migration CLI deopenclaw doctor.
Ce qu’elles font :
- Backfill analyse les fichiers historiques
memory/YYYY-MM-DD.mddans l’espace de travail actif, exécute le passage de journal REM grounded et écrit des entrées de backfill réversibles dansDREAMS.md. - Reset supprime uniquement ces entrées de journal de backfill marquées de
DREAMS.md. - Clear Grounded supprime uniquement les entrées à court terme staged, grounded-only, issues de la relecture historique et qui n’ont pas encore accumulé de rappel en direct ni de support quotidien.
- elles ne modifient pas
MEMORY.md - elles n’exécutent pas les migrations doctor complètes
- elles ne placent pas automatiquement les candidats grounded dans le magasin de promotion actif à court terme sauf si vous exécutez explicitement d’abord le chemin CLI staged
DREAMS.md comme surface de révision.
Comportement détaillé et justification
0) Mise à jour facultative (installations git)
S’il s’agit d’un checkout git et que doctor s’exécute en mode interactif, il propose de mettre à jour (fetch/rebase/build) avant d’exécuter doctor.1) Normalisation de la configuration
Si la configuration contient des formes de valeurs héritées (par exemplemessages.ackReaction
sans remplacement spécifique à un canal), doctor les normalise selon le schéma
actuel.
Cela inclut les champs plats Talk hérités. La configuration Talk publique actuelle est
talk.provider + talk.providers.<provider>. Doctor réécrit les anciennes formes
talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat /
talk.apiKey dans la map des fournisseurs.
2) Migrations des clés de configuration héritées
Lorsque la configuration contient des clés obsolètes, les autres commandes refusent de s’exécuter et demandent d’exécuteropenclaw doctor.
Doctor va :
- Expliquer quelles clés héritées ont été trouvées.
- Afficher la migration qu’il a appliquée.
- Réécrire
~/.openclaw/openclaw.jsonavec le schéma mis à jour.
openclaw doctor --fix.
Migrations actuelles :
routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternsrouting.queue→messages.queuerouting.bindings→bindingsau niveau supérieurrouting.agents/routing.defaultAgentId→agents.list+agents.list[].default- ancien
talk.voiceId/talk.voiceAliases/talk.modelId/talk.outputFormat/talk.apiKey→talk.provider+talk.providers.<provider> routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>channels.discord.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.voice.tts.providers.<provider>channels.discord.accounts.<id>.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.accounts.<id>.voice.tts.providers.<provider>plugins.entries.voice-call.config.tts.<provider>(openai/elevenlabs/microsoft/edge) →plugins.entries.voice-call.config.tts.providers.<provider>plugins.entries.voice-call.config.provider: "log"→"mock"plugins.entries.voice-call.config.twilio.from→plugins.entries.voice-call.config.fromNumberplugins.entries.voice-call.config.streaming.sttProvider→plugins.entries.voice-call.config.streaming.providerplugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold→plugins.entries.voice-call.config.streaming.providers.openai.*bindings[].match.accountID→bindings[].match.accountId- Pour les canaux avec des
accountsnommés mais avec encore des valeurs de canal de niveau supérieur à compte unique, déplacer ces valeurs liées au compte dans le compte promu choisi pour ce canal (accounts.defaultpour la plupart des canaux ; Matrix peut conserver une cible nommée/par défaut existante correspondante) identity→agents.list[].identityagent.*→agents.defaults+tools.*(tools/elevated/exec/sandbox/subagents)agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks→agents.defaults.models+agents.defaults.model.primary/fallbacks+agents.defaults.imageModel.primary/fallbacksbrowser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- supprimer
browser.relayBindHost(ancien paramètre de relais d’extension)
- Si deux entrées ou plus sont configurées dans
channels.<channel>.accountssanschannels.<channel>.defaultAccountniaccounts.default, doctor avertit que le routage de secours peut choisir un compte inattendu. - Si
channels.<channel>.defaultAccountest défini sur un identifiant de compte inconnu, doctor avertit et liste les identifiants de compte configurés.
2b) Remplacements de fournisseur OpenCode
Si vous avez ajoutémodels.providers.opencode, opencode-zen ou opencode-go
manuellement, cela remplace le catalogue OpenCode intégré issu de @mariozechner/pi-ai.
Cela peut forcer des modèles vers la mauvaise API ou remettre les coûts à zéro. Doctor avertit afin que vous
puissiez supprimer ce remplacement et restaurer le routage API + les coûts par modèle.
2c) Migration du navigateur et préparation Chrome MCP
Si la configuration de votre navigateur pointe encore vers le chemin supprimé de l’extension Chrome, doctor la normalise vers le modèle d’attachement Chrome MCP local à l’hôte actuel :browser.profiles.*.driver: "extension"devient"existing-session"browser.relayBindHostest supprimé
defaultProfile: "user" ou un profil existing-session configuré :
- vérifie si Google Chrome est installé sur le même hôte pour les profils d’auto-connexion par défaut
- vérifie la version Chrome détectée et avertit lorsqu’elle est inférieure à Chrome 144
- rappelle d’activer le débogage distant dans la page inspect du navigateur (par
exemple
chrome://inspect/#remote-debugging,brave://inspect/#remote-debugging, ouedge://inspect/#remote-debugging)
- un navigateur basé sur Chromium 144+ sur l’hôte gateway/node
- l’exécution locale du navigateur
- le débogage distant activé dans ce navigateur
- l’approbation de la première invite de consentement d’attachement dans le navigateur
responsebody, l’export PDF,
l’interception des téléchargements et les actions par lots requièrent toujours un
navigateur géré ou un profil CDP brut.
Cette vérification ne s’applique pas à Docker, sandbox, remote-browser ni aux autres
flux headless. Ceux-ci continuent d’utiliser CDP brut.
2d) Prérequis TLS OAuth
Lorsqu’un profil OAuth OpenAI Codex est configuré, doctor sonde le point de terminaison d’autorisation OpenAI pour vérifier que la pile TLS locale Node/OpenSSL peut valider la chaîne de certificats. Si la sonde échoue avec une erreur de certificat (par exempleUNABLE_TO_GET_ISSUER_CERT_LOCALLY, certificat expiré ou certificat autosigné),
doctor affiche des indications de correction spécifiques à la plateforme. Sur macOS avec un Node Homebrew, la
correction est généralement brew postinstall ca-certificates. Avec --deep, la sonde s’exécute
même si la passerelle est saine.
2c) Remplacements de fournisseur OAuth Codex
Si vous avez précédemment ajouté d’anciens paramètres de transport OpenAI sousmodels.providers.openai-codex, ils peuvent masquer le chemin de fournisseur
OAuth Codex intégré que les versions récentes utilisent automatiquement. Doctor avertit lorsqu’il voit
ces anciens paramètres de transport en même temps que Codex OAuth afin que vous puissiez supprimer ou réécrire
le remplacement de transport obsolète et retrouver le comportement intégré de routage/secours.
Les proxies personnalisés et les remplacements uniquement par en-têtes restent pris en charge et ne
déclenchent pas cet avertissement.
3) Migrations d’état héritées (organisation sur disque)
Doctor peut migrer d’anciennes organisations sur disque vers la structure actuelle :- Magasin de sessions + transcriptions :
- de
~/.openclaw/sessions/vers~/.openclaw/agents/<agentId>/sessions/
- de
- Répertoire d’agent :
- de
~/.openclaw/agent/vers~/.openclaw/agents/<agentId>/agent/
- de
- État d’authentification WhatsApp (Baileys) :
- depuis les anciens
~/.openclaw/credentials/*.json(saufoauth.json) - vers
~/.openclaw/credentials/whatsapp/<accountId>/...(identifiant de compte par défaut :default)
- depuis les anciens
openclaw doctor. La normalisation du fournisseur Talk/de la map de fournisseurs compare désormais
par égalité structurelle ; ainsi, les différences d’ordre des clés ne déclenchent plus de
modifications répétées et sans effet avec doctor --fix.
3a) Migrations héritées de manifeste de plugin
Doctor analyse tous les manifestes de plugins installés pour détecter les clés de capacité de niveau supérieur obsolètes (speechProviders, realtimeTranscriptionProviders,
realtimeVoiceProviders, mediaUnderstandingProviders,
imageGenerationProviders, videoGenerationProviders, webFetchProviders,
webSearchProviders). Lorsqu’elles sont trouvées, il propose de les déplacer dans l’objet contracts
et de réécrire le fichier manifeste en place. Cette migration est idempotente ;
si la clé contracts contient déjà les mêmes valeurs, la clé héritée est supprimée
sans dupliquer les données.
3b) Migrations héritées du magasin cron
Doctor vérifie aussi le magasin de tâches cron (~/.openclaw/cron/jobs.json par défaut,
ou cron.store en cas de remplacement) pour détecter d’anciennes formes de tâches que l’ordonnanceur accepte encore
pour compatibilité.
Nettoyages cron actuels :
jobId→idschedule.cron→schedule.expr- champs payload de niveau supérieur (
message,model,thinking, …) →payload - champs delivery de niveau supérieur (
deliver,channel,to,provider, …) →delivery - alias de delivery
providerdans payload →delivery.channelexplicite - tâches de secours webhook héritées simples
notify: true→delivery.mode="webhook"explicite avecdelivery.to=cron.webhook
notify: true que lorsqu’il peut le faire sans
modifier le comportement. Si une tâche combine le secours notify hérité avec un mode de
delivery existant non-webhook, doctor avertit et laisse cette tâche pour révision manuelle.
3c) Nettoyage des verrous de session
Doctor analyse chaque répertoire de session d’agent à la recherche de fichiers de verrouillage d’écriture obsolètes — des fichiers laissés derrière lorsqu’une session s’est terminée anormalement. Pour chaque fichier de verrouillage trouvé, il signale : le chemin, le PID, si le PID est encore actif, l’âge du verrou et s’il est considéré comme obsolète (PID mort ou plus ancien que 30 minutes). En mode--fix / --repair,
il supprime automatiquement les fichiers de verrouillage obsolètes ; sinon, il affiche une note et
vous demande de relancer avec --fix.
4) Vérifications d’intégrité de l’état (persistance des sessions, routage et sécurité)
Le répertoire d’état est le tronc cérébral opérationnel. S’il disparaît, vous perdez les sessions, les identifiants, les journaux et la configuration (sauf si vous avez des sauvegardes ailleurs). Doctor vérifie :- Répertoire d’état manquant : avertit d’une perte d’état catastrophique, propose de recréer le répertoire et rappelle qu’il ne peut pas récupérer les données manquantes.
- Permissions du répertoire d’état : vérifie l’inscriptibilité ; propose de réparer les permissions
(et affiche une indication
chownlorsqu’une incohérence propriétaire/groupe est détectée). - Répertoire d’état macOS synchronisé par le cloud : avertit lorsque l’état se résout sous iCloud Drive
(
~/Library/Mobile Documents/com~apple~CloudDocs/...) ou~/Library/CloudStorage/...car les chemins adossés à la synchronisation peuvent causer des E/S plus lentes et des courses de verrouillage/synchronisation. - Répertoire d’état Linux sur SD ou eMMC : avertit lorsque l’état se résout vers une source de montage
mmcblk*, car les E/S aléatoires adossées à une carte SD ou à eMMC peuvent être plus lentes et s’user plus vite sous les écritures de session et d’identifiants. - Répertoires de session manquants :
sessions/et le répertoire de stockage des sessions sont requis pour persister l’historique et éviter les plantagesENOENT. - Incohérence de transcription : avertit lorsque des entrées de session récentes ont des fichiers de transcription manquants.
- Session principale “JSONL sur 1 ligne” : signale lorsque la transcription principale n’a qu’une seule ligne (l’historique ne s’accumule pas).
- Répertoires d’état multiples : avertit lorsque plusieurs dossiers
~/.openclawexistent entre des répertoires personnels ou lorsqueOPENCLAW_STATE_DIRpointe ailleurs (l’historique peut se fragmenter entre les installations). - Rappel du mode distant : si
gateway.mode=remote, doctor rappelle de l’exécuter sur l’hôte distant (l’état s’y trouve). - Permissions du fichier de configuration : avertit si
~/.openclaw/openclaw.jsonest lisible par le groupe ou le monde et propose de le restreindre à600.
5) État de l’authentification des modèles (expiration OAuth)
Doctor inspecte les profils OAuth dans le magasin d’authentification, avertit lorsque les jetons sont proches de l’expiration ou expirés, et peut les rafraîchir lorsque c’est sûr. Si le profil OAuth/jeton Anthropic est obsolète, il suggère une clé API Anthropic ou le chemin de setup-token Anthropic. Les invites de rafraîchissement n’apparaissent qu’en mode interactif (TTY) ;--non-interactive
ignore les tentatives de rafraîchissement.
Lorsqu’un rafraîchissement OAuth échoue de manière permanente (par exemple refresh_token_reused,
invalid_grant, ou lorsqu’un fournisseur vous indique de vous reconnecter), doctor signale
qu’une réauthentification est requise et affiche la commande exacte openclaw models auth login --provider ...
à exécuter.
Doctor signale aussi les profils d’authentification temporairement inutilisables à cause de :
- courts délais d’attente (limites de débit/timeouts/échecs d’authentification)
- désactivations plus longues (échecs de facturation/crédit)
6) Validation du modèle Hooks
Sihooks.gmail.model est défini, doctor valide la référence de modèle par rapport au
catalogue et à la liste d’autorisation et avertit lorsqu’elle ne se résout pas ou n’est pas autorisée.
7) Réparation de l’image sandbox
Lorsque le sandboxing est activé, doctor vérifie les images Docker et propose de construire ou de basculer vers d’anciens noms si l’image actuelle est absente.7b) Dépendances d’exécution des plugins intégrés
Doctor vérifie que les dépendances d’exécution des plugins intégrés (par exemple les packages d’exécution du plugin Discord) sont présentes dans la racine d’installation OpenClaw. Si certaines sont manquantes, doctor signale les packages et les installe en modeopenclaw doctor --fix / openclaw doctor --repair.
8) Migrations des services Gateway et indications de nettoyage
Doctor détecte les anciens services Gateway (launchd/systemd/schtasks) et propose de les supprimer puis d’installer le service OpenClaw avec le port de passerelle actuel. Il peut aussi rechercher des services supplémentaires de type passerelle et afficher des indications de nettoyage. Les services de passerelle OpenClaw nommés par profil sont considérés comme de première classe et ne sont pas signalés comme « supplémentaires ».8b) Migration Matrix au démarrage
Lorsqu’un compte de canal Matrix a une migration d’état héritée en attente ou exploitable, doctor (en mode--fix / --repair) crée un instantané avant migration puis
exécute les étapes de migration au mieux : migration de l’état Matrix hérité et préparation héritée
de l’état chiffré. Les deux étapes ne sont pas fatales ; les erreurs sont journalisées et
le démarrage se poursuit. En mode lecture seule (openclaw doctor sans --fix), cette vérification
est entièrement ignorée.
9) Avertissements de sécurité
Doctor émet des avertissements lorsqu’un fournisseur est ouvert aux DM sans liste d’autorisation, ou lorsqu’une politique est configurée de manière dangereuse.10) Persistance systemd (Linux)
En cas d’exécution comme service utilisateur systemd, doctor s’assure que la persistance est activée afin que la passerelle reste active après la déconnexion.11) État de l’espace de travail (Skills, plugins et répertoires hérités)
Doctor affiche un résumé de l’état de l’espace de travail pour l’agent par défaut :- État des Skills : compte les Skills éligibles, à prérequis manquants et bloqués par la liste d’autorisation.
- Répertoires d’espace de travail hérités : avertit lorsque
~/openclawou d’autres anciens répertoires d’espace de travail existent à côté de l’espace de travail actuel. - État des plugins : compte les plugins chargés/désactivés/en erreur ; liste les identifiants de plugin pour les erreurs ; signale les capacités des plugins bundle.
- Avertissements de compatibilité de plugins : signale les plugins qui ont des problèmes de compatibilité avec l’exécution actuelle.
- Diagnostics des plugins : met en avant tous les avertissements ou erreurs de chargement émis par le registre des plugins.
11b) Taille du fichier bootstrap
Doctor vérifie si les fichiers bootstrap de l’espace de travail (par exempleAGENTS.md,
CLAUDE.md ou d’autres fichiers de contexte injectés) sont proches ou au-delà du budget
de caractères configuré. Il signale, fichier par fichier, le nombre brut de caractères vs. injectés, le pourcentage
de troncature, la cause de la troncature (max/file ou max/total) et le total des caractères injectés
en fraction du budget total. Lorsque des fichiers sont tronqués ou proches de la limite, doctor affiche des conseils pour ajuster agents.defaults.bootstrapMaxChars
et agents.defaults.bootstrapTotalMaxChars.
11c) Complétion shell
Doctor vérifie si la complétion par tabulation est installée pour le shell actuel (zsh, bash, fish ou PowerShell) :- Si le profil shell utilise un modèle de complétion dynamique lent
(
source <(openclaw completion ...)), doctor le met à niveau vers la variante plus rapide par fichier en cache. - Si la complétion est configurée dans le profil mais que le fichier de cache est manquant, doctor régénère automatiquement le cache.
- Si aucune complétion n’est configurée, doctor propose de l’installer
(mode interactif uniquement ; ignoré avec
--non-interactive).
openclaw completion --write-state pour régénérer le cache manuellement.
12) Vérifications d’authentification Gateway (jeton local)
Doctor vérifie l’état de préparation de l’authentification par jeton de la passerelle locale.- Si le mode jeton nécessite un jeton et qu’aucune source de jeton n’existe, doctor propose d’en générer un.
- Si
gateway.auth.tokenest géré parSecretRefmais indisponible, doctor avertit et ne l’écrase pas avec du texte brut. openclaw doctor --generate-gateway-tokenforce la génération uniquement lorsqu’aucunSecretRefde jeton n’est configuré.
12b) Réparations en lecture seule conscientes de SecretRef
Certains flux de réparation doivent inspecter les identifiants configurés sans affaiblir le comportement fail-fast à l’exécution.openclaw doctor --fixutilise désormais le même modèle de résuméSecretRefen lecture seule que les commandes de la famille status pour les réparations ciblées de configuration.- Exemple : la réparation Telegram
allowFrom/groupAllowFromavec@usernameessaie d’utiliser les identifiants du bot configurés lorsqu’ils sont disponibles. - Si le jeton du bot Telegram est configuré via
SecretRefmais indisponible dans le chemin de commande actuel, doctor signale que l’identifiant est configuré mais indisponible et ignore la résolution automatique au lieu de planter ou d’indiquer à tort que le jeton est manquant.
13) Vérification d’état Gateway + redémarrage
Doctor exécute une vérification d’état et propose de redémarrer la passerelle lorsqu’elle semble défaillante.13b) Préparation de la recherche mémoire
Doctor vérifie si le fournisseur d’embeddings configuré pour la recherche mémoire est prêt pour l’agent par défaut. Le comportement dépend du backend et du fournisseur configurés :- Backend QMD : vérifie si le binaire
qmdest disponible et peut démarrer. Sinon, affiche des indications de correction, y compris le package npm et une option de chemin binaire manuel. - Fournisseur local explicite : vérifie la présence d’un fichier de modèle local ou d’une URL de modèle distante/téléchargeable reconnue. S’il manque, suggère de passer à un fournisseur distant.
- Fournisseur distant explicite (
openai,voyage, etc.) : vérifie qu’une clé API est présente dans l’environnement ou dans le magasin d’authentification. Affiche des indications de correction exploitables si elle manque. - Fournisseur automatique : vérifie d’abord la disponibilité du modèle local, puis essaie chaque fournisseur distant dans l’ordre de sélection automatique.
openclaw memory status --deep pour vérifier la préparation des embeddings à l’exécution.
14) Avertissements sur l’état des canaux
Si la passerelle est saine, doctor exécute une sonde d’état des canaux et signale les avertissements avec des corrections suggérées.15) Audit de configuration du superviseur + réparation
Doctor vérifie la configuration de superviseur installée (launchd/systemd/schtasks) pour détecter les valeurs par défaut manquantes ou obsolètes (par ex. dépendances systemd network-online et délai de redémarrage). Lorsqu’il détecte une incohérence, il recommande une mise à jour et peut réécrire le fichier service/tâche selon les valeurs par défaut actuelles. Remarques :openclaw doctordemande une confirmation avant de réécrire la configuration du superviseur.openclaw doctor --yesaccepte les invites de réparation par défaut.openclaw doctor --repairapplique les corrections recommandées sans invite.openclaw doctor --repair --forceécrase les configurations de superviseur personnalisées.- Si l’authentification par jeton exige un jeton et que
gateway.auth.tokenest géré parSecretRef, la validation d’installation/réparation du service vérifie leSecretRefmais ne persiste pas les valeurs de jeton en texte brut résolues dans les métadonnées d’environnement du service superviseur. - Si l’authentification par jeton exige un jeton et que le
SecretRefde jeton configuré n’est pas résolu, doctor bloque le chemin d’installation/réparation avec des indications exploitables. - Si
gateway.auth.tokenetgateway.auth.passwordsont tous deux configurés et quegateway.auth.moden’est pas défini, doctor bloque l’installation/réparation jusqu’à ce que le mode soit explicitement défini. - Pour les unités user-systemd Linux, les vérifications d’écart de jeton de doctor incluent désormais à la fois les sources
Environment=etEnvironmentFile=lors de la comparaison des métadonnées d’authentification du service. - Vous pouvez toujours forcer une réécriture complète via
openclaw gateway install --force.
16) Diagnostics d’exécution Gateway + port
Doctor inspecte l’exécution du service (PID, dernier statut de sortie) et avertit lorsque le service est installé mais n’est pas réellement en cours d’exécution. Il vérifie aussi les collisions de port sur le port Gateway (par défaut18789) et signale les causes probables (passerelle déjà
en cours d’exécution, tunnel SSH).
17) Bonnes pratiques d’exécution Gateway
Doctor avertit lorsque le service Gateway s’exécute sur Bun ou sur un chemin Node géré par un gestionnaire de versions (nvm, fnm, volta, asdf, etc.). Les canaux WhatsApp + Telegram requièrent Node,
et les chemins de gestionnaire de versions peuvent casser après des mises à niveau car le service ne
charge pas l’initialisation de votre shell. Doctor propose de migrer vers une installation Node système lorsqu’elle
est disponible (Homebrew/apt/choco).