Доктор
openclaw doctor — это инструмент восстановления и миграции для OpenClaw. Он исправляет устаревший
конфиг и состояние, проверяет здоровье системы и предоставляет конкретные шаги по исправлению.
Быстрый старт
Без интерфейса / автоматизация
Что делает (кратко)
- Необязательное предварительное обновление для git-установок (только интерактивно).
- Проверка актуальности UI-протокола (пересборка Control UI, когда схема протокола новее).
- Проверка здоровья + предложение перезапуска.
- Сводка статуса Skills (доступные/отсутствующие/заблокированные).
- Нормализация конфига для устаревших значений.
- Предупреждения о переопределениях провайдера OpenCode Zen (
models.providers.opencode). - Миграция устаревшего состояния на диске (сеансы/директория агента/авторизация WhatsApp).
- Проверки целостности состояния и прав доступа (сеансы, транскрипты, директория состояния).
- Проверки прав доступа к файлу конфига (chmod 600) при локальном запуске.
- Проверка здоровья аутентификации моделей: проверка истечения OAuth, возможность обновить истекающие токены, отчёт о cooldown/disabled состояниях профилей аутентификации.
- Обнаружение дополнительных директорий рабочего пространства (
~/openclaw). - Восстановление образов sandbox, когда sandboxing включён.
- Миграция устаревших сервисов и обнаружение дополнительных gateway.
- Проверки времени выполнения Gateway (сервис установлен, но не запущен; кэшированная метка launchd).
- Предупреждения о статусе каналов (зондирование запущенного gateway).
- Аудит конфига supervisor (launchd/systemd/schtasks) с возможным исправлением.
- Проверки лучших практик времени выполнения Gateway (Node vs Bun, пути version-manager).
- Диагностика конфликтов портов Gateway (по умолчанию
18789). - Предупреждения по безопасности для открытых политик личных сообщений.
- Предупреждения об аутентификации Gateway, когда не задан
gateway.auth.token(локальный режим; предлагается генерация токена). - Проверка systemd linger на Linux.
- Проверки установок из исходников (несоответствие pnpm workspace, отсутствующие UI-ассеты, отсутствующий бинарник tsx).
- Запись обновлённого конфига + метаданные мастера.
Подробное поведение и обоснование
0. Необязательное обновление (git-установки)
Если это git-чекаут и doctor запущен интерактивно, он предлагает обновиться (fetch/rebase/build) перед запуском doctor.1. Нормализация конфига
Если конфиг содержит устаревшие формы значений (напримерmessages.ackReaction
без переопределения для конкретного канала), doctor нормализует их в текущую
схему.
2. Миграции устаревших ключей конфига
Когда конфиг содержит устаревшие ключи, другие команды отказываются запускаться и просят выполнитьopenclaw doctor.
Doctor:
- Объясняет, какие устаревшие ключи были найдены.
- Показывает применённую миграцию.
- Перезаписывает
~/.openclaw/openclaw.jsonс обновлённой схемой.
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→ верхнеуровневыйbindingsrouting.agents/routing.defaultAgentId→agents.list+agents.list[].defaultrouting.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsbindings[].match.accountID→bindings[].match.accountIdidentity→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/fallbacks
2b) Переопределения провайдера OpenCode Zen
Если вы вручную добавилиmodels.providers.opencode (или opencode-zen), он
переопределяет встроенный каталог OpenCode Zen из @mariozechner/pi-ai. Это может
принудительно направить все модели на один API или обнулить стоимость. Doctor
выдаёт предупреждение, чтобы вы могли удалить переопределение и восстановить
маршрутизацию API и стоимость для каждой модели.
3. Миграции устаревшего состояния (расположение на диске)
Doctor может мигрировать старые структуры на диске в текущую структуру:- Хранилище сеансов + транскрипты:
- из
~/.openclaw/sessions/в~/.openclaw/agents/<agentId>/sessions/
- из
- Директория агента:
- из
~/.openclaw/agent/в~/.openclaw/agents/<agentId>/agent/
- из
- Состояние авторизации WhatsApp (Baileys):
- из устаревшего
~/.openclaw/credentials/*.json(кромеoauth.json) - в
~/.openclaw/credentials/whatsapp/<accountId>/...(id аккаунта по умолчанию:default)
- из устаревшего
openclaw doctor.
4. Проверки целостности состояния (сохранение сеансов, маршрутизация и безопасность)
Директория состояния — это операционный «ствол мозга». Если она исчезает, вы теряете сеансы, учётные данные, логи и конфиг (если у вас нет резервных копий в другом месте). Doctor проверяет:- Директория состояния отсутствует: предупреждает о катастрофической потере состояния, предлагает пересоздать директорию и напоминает, что восстановить отсутствующие данные невозможно.
- Права доступа к директории состояния: проверяет возможность записи; предлагает исправить права
(и выдаёт подсказку
chownпри обнаружении несоответствия owner/group). - Директории сеансов отсутствуют:
sessions/и директория хранилища сеансов необходимы для сохранения истории и предотвращения сбоевENOENT. - Несоответствие транскриптов: предупреждает, когда у недавних записей сеансов отсутствуют файлы транскриптов.
- Основной сеанс «1-строчный JSONL»: отмечает, когда основной транскрипт содержит только одну строку (история не накапливается).
- Несколько директорий состояния: предупреждает, когда существует несколько папок
~/.openclawв разных домашних директориях или когдаOPENCLAW_STATE_DIRуказывает в другое место (история может разделяться между установками). - Напоминание об удалённом режиме: если
gateway.mode=remote, doctor напоминает запускать его на удалённом хосте (там хранится состояние). - Права доступа к файлу конфига: предупреждает, если
~/.openclaw/openclaw.jsonдоступен для чтения группе/всем, и предлагает ужесточить до600.
5. Проверка здоровья аутентификации моделей (истечение OAuth)
Doctor проверяет OAuth-профили в хранилище аутентификации, предупреждает о истекающих/истёкших токенах и может обновить их, когда это безопасно. Если профиль Anthropic Claude Code устарел, он предлагает выполнитьclaude setup-token (или вставить setup-token).
Запросы на обновление появляются только при интерактивном запуске (TTY); --non-interactive
пропускает попытки обновления.
Doctor также сообщает о профилях аутентификации, которые временно недоступны из‑за:
- коротких cooldown (rate limits/тайм-ауты/сбои аутентификации)
- более длительных отключений (ошибки биллинга/кредита)
6. Валидация модели хуков
Если заданhooks.gmail.model, doctor проверяет ссылку на модель по каталогу и списку разрешённых
и предупреждает, когда она не разрешается или запрещена.
7. Восстановление образов sandbox
Когда sandboxing включён, doctor проверяет Docker-образы и предлагает собрать или переключиться на устаревшие имена, если текущий образ отсутствует.8. Миграции сервисов Gateway и подсказки по очистке
Doctor обнаруживает устаревшие сервисы gateway (launchd/systemd/schtasks) и предлагает удалить их и установить сервис OpenClaw, используя текущий порт gateway. Он также может сканировать наличие дополнительных gateway-подобных сервисов и выводить подсказки по очистке. Сервисы gateway OpenClaw с именами профилей считаются первоклассными и не помечаются как «лишние».9. Предупреждения по безопасности
Doctor выдаёт предупреждения, когда провайдер открыт для личных сообщений без списка разрешённых, или когда политика настроена опасным образом.10. systemd linger (Linux)
При запуске как пользовательский сервис systemd doctor убеждается, что linger включён, чтобы gateway продолжал работать после выхода из системы.11. Статус Skills
Doctor выводит краткую сводку доступных/отсутствующих/заблокированных skills для текущего рабочего пространства.12. Проверки аутентификации Gateway (локальный токен)
Doctor предупреждает, когдаgateway.auth отсутствует на локальном gateway, и предлагает
сгенерировать токен. Используйте openclaw doctor --generate-gateway-token, чтобы принудительно создать токен
в автоматизации.
13. Проверка здоровья Gateway + перезапуск
Doctor выполняет проверку здоровья и предлагает перезапустить gateway, когда он выглядит нездоровым.14. Предупреждения о статусе каналов
Если gateway здоров, doctor выполняет зондирование статуса каналов и сообщает предупреждения с предлагаемыми исправлениями.15. Аудит и исправление конфига supervisor
Doctor проверяет установленный конфиг supervisor (launchd/systemd/schtasks) на наличие отсутствующих или устаревших значений по умолчанию (например, зависимости systemd network-online и задержку перезапуска). При обнаружении несоответствий он рекомендует обновление и может перезаписать файл сервиса/задачу до текущих значений по умолчанию. Примечания:openclaw doctorзапрашивает подтверждение перед перезаписью конфига supervisor.openclaw doctor --yesпринимает стандартные запросы на исправление.openclaw doctor --repairприменяет рекомендуемые исправления без запросов.openclaw doctor --repair --forceперезаписывает пользовательские конфиги supervisor.- Вы всегда можете принудительно выполнить полную перезапись через
openclaw gateway install --force.
16. Диагностика времени выполнения Gateway и портов
Doctor проверяет время выполнения сервиса (PID, последний статус выхода) и предупреждает, когда сервис установлен, но фактически не запущен. Он также проверяет конфликты портов на порту gateway (по умолчанию18789) и сообщает вероятные причины
( gateway уже запущен, SSH-туннель).
17. Лучшие практики времени выполнения Gateway
Doctor предупреждает, когда сервис gateway работает на Bun или на пути Node, управляемом version-manager (nvm, fnm, volta, asdf и т. д.). Каналы WhatsApp и Telegram требуют Node, а пути version-manager могут ломаться после обновлений,
поскольку сервис не загружает инициализацию вашей оболочки. Doctor предлагает миграцию
на системную установку Node, когда она доступна (Homebrew/apt/choco).