Миграция с OpenClaw

hermes claw migrate импортирует вашу конфигурацию OpenClaw (или устаревших Clawdbot/Moldbot) в Hermes. Это руководство описывает, что именно переносится, сопоставление ключей конфигурации и что необходимо проверить после миграции.

Быстрый старт

# Preview then migrate (always shows a preview first, then asks to confirm)
hermes claw migrate

# Preview only, no changes
hermes claw migrate --dry-run

# Full migration including API keys, skip confirmation
hermes claw migrate --preset full --migrate-secrets --yes

Миграция всегда показывает полный предварительный просмотр того, что будет импортировано, прежде чем вносить какие-либо изменения. Просмотрите список, затем подтвердите для продолжения.

По умолчанию читает из ~/.openclaw/. Устаревшие директории ~/.clawdbot/ или ~/.moltbot/ обнаруживаются автоматически. А также устаревшие имена файлов конфигурации (clawdbot.json, moltbot.json).

Параметры

Параметр Описание
--dry-run Только предпросмотр — остановка после показа того, что будет перенесено.
--preset <name> full (все совместимые настройки) или user-data (исключает конфигурацию инфраструктуры). Ни один пресет не импортирует секреты по умолчанию — явно укажите --migrate-secrets.
--overwrite Перезаписывать существующие файлы Hermes при конфликтах (по умолчанию: отказываться от применения, если в плане есть конфликты).
--migrate-secrets Включает API-ключи. Требуется даже при --preset full — ни один пресет не импортирует секреты без явного указания.
--no-backup Пропустить zip-снимок ~/.hermes/ перед миграцией (по умолчанию один архив точки восстановления записывается перед применением в ~/.hermes/backups/pre-migration-*.zip; восстанавливается с помощью hermes import).
--source <path> Пользовательская директория OpenClaw.
--workspace-target <path> Куда поместить AGENTS.md.
--skill-conflict <mode> skip (по умолчанию), overwrite или rename.
--yes Пропустить запрос подтверждения после предпросмотра.

Что переносится

Персона, память и инструкции

Что Источник в OpenClaw Назначение в Hermes Примечания
Персона workspace/SOUL.md ~/.hermes/SOUL.md Прямое копирование
Инструкции рабочей области workspace/AGENTS.md AGENTS.md в --workspace-target Требуется флаг --workspace-target
Долговременная память workspace/MEMORY.md ~/.hermes/memories/MEMORY.md Разбирается на записи, объединяется с существующими, удаляются дубликаты. Используется разделитель §.
Профиль пользователя workspace/USER.md ~/.hermes/memories/USER.md Та же логика слияния записей, что и для памяти.
Ежедневные файлы памяти workspace/memory/*.md ~/.hermes/memories/MEMORY.md Все ежедневные файлы объединяются в основную память.

Файлы рабочей области также проверяются в workspace.default/ и workspace-main/ в качестве запасных путей (OpenClaw переименовал workspace/ в workspace-main/ в последних версиях и использует workspace-{agentId} для многоконфигурационных установок).

Навыки (4 источника)

Источник Расположение в OpenClaw Назначение в Hermes
Навыки рабочей области workspace/skills/ ~/.hermes/skills/openclaw-imports/
Управляемые/общие навыки ~/.openclaw/skills/ ~/.hermes/skills/openclaw-imports/
Личные межпроектные ~/.agents/skills/ ~/.hermes/skills/openclaw-imports/
Общие на уровне проекта workspace/.agents/skills/ ~/.hermes/skills/openclaw-imports/

Конфликты навыков обрабатываются с помощью --skill-conflict: skip оставляет существующий навык Hermes, overwrite заменяет его, rename создаёт копию с суффиксом -imported.

Конфигурация моделей и провайдеров

Что Путь конфигурации OpenClaw Назначение в Hermes Примечания
Модель по умолчанию agents.defaults.model config.yamlmodel Может быть строкой или объектом {primary, fallbacks}
Пользовательские провайдеры models.providers.* config.yamlcustom_providers Сопоставляет baseUrl, apiType/api — обрабатывает как короткие ("openai", "anthropic"), так и составные ("openai-completions", "anthropic-messages", "google-generative-ai") значения
API-ключи провайдеров models.providers.*.apiKey ~/.hermes/.env Требуется --migrate-secrets. См. Разрешение API-ключей ниже.

Поведение агента

Что Путь конфигурации OpenClaw Путь конфигурации Hermes Сопоставление
Макс. количество шагов agents.defaults.timeoutSeconds agent.max_turns timeoutSeconds / 10, максимум 200
Подробный режим agents.defaults.verboseDefault agent.verbose "off" / "on" / "full"
Уровень рассуждений agents.defaults.thinkingDefault agent.reasoning_effort "always"/"high"/"xhigh" → "high", "auto"/"medium"/"adaptive" → "medium", "off"/"low"/"none"/"minimal" → "low"
Сжатие agents.defaults.compaction.mode compression.enabled "off" → false, всё остальное → true
Модель сжатия agents.defaults.compaction.model compression.summary_model Прямое копирование строки
Задержка перед ответом agents.defaults.humanDelay.mode human_delay.mode "natural" / "custom" / "off"
Тайминги задержки перед ответом agents.defaults.humanDelay.minMs / .maxMs human_delay.min_ms / .max_ms Прямое копирование
Часовой пояс agents.defaults.userTimezone timezone Прямое копирование строки
Таймаут выполнения tools.exec.timeoutSec terminal.timeout Прямое копирование (поле называется timeoutSec, а не timeout)
Песочница Docker agents.defaults.sandbox.backend terminal.backend "docker" → "docker"
Образ Docker agents.defaults.sandbox.docker.image terminal.docker_image Прямое копирование

Политики сброса сессий

Путь конфигурации OpenClaw Путь конфигурации Hermes Примечания
session.reset.mode session_reset.mode "daily", "idle" или оба
session.reset.atHour session_reset.at_hour Час (0–23) для ежедневного сброса
session.reset.idleMinutes session_reset.idle_minutes Минуты бездействия

Примечание: OpenClaw также имеет session.resetTriggers (простой строковый массив, например ["daily", "idle"]). Если структурированный session.reset отсутствует, миграция определяет настройки из resetTriggers.

Серверы MCP

Поле OpenClaw Поле Hermes Примечания
mcp.servers.*.command mcp_servers.*.command Транспорт Stdio
mcp.servers.*.args mcp_servers.*.args
mcp.servers.*.env mcp_servers.*.env
mcp.servers.*.cwd mcp_servers.*.cwd
mcp.servers.*.url mcp_servers.*.url Транспорт HTTP/SSE
mcp.servers.*.tools.include mcp_servers.*.tools.include Фильтрация инструментов
mcp.servers.*.tools.exclude mcp_servers.*.tools.exclude

TTS (текст-в-речь)

Настройки TTS читаются из двух мест конфигурации OpenClaw в следующем порядке приоритета:

  1. messages.tts.providers.{provider}.* (каноническое расположение)

  2. Верхний уровень talk.providers.{provider}.* (запасной вариант)

  3. Устаревшие плоские ключи messages.tts.{provider}.* (самый старый формат)

Что Назначение в Hermes
Имя провайдера config.yamltts.provider
Идентификатор голоса ElevenLabs config.yamltts.elevenlabs.voice_id
Идентификатор модели ElevenLabs config.yamltts.elevenlabs.model_id
Модель OpenAI config.yamltts.openai.model
Голос OpenAI config.yamltts.openai.voice
Голос Edge TTS config.yamltts.edge.voice (OpenClaw переименовал "edge" в "microsoft" — оба распознаются)
Активы TTS ~/.hermes/tts/ (копирование файлов)

Платформы обмена сообщениями

Платформа Путь конфигурации OpenClaw Переменная .env в Hermes Примечания
Telegram channels.telegram.botToken или .accounts.default.botToken TELEGRAM_BOT_TOKEN Токен может быть строкой или SecretRef. Поддерживаются как плоская структура, так и структура с аккаунтами.
Telegram credentials/telegram-default-allowFrom.json TELEGRAM_ALLOWED_USERS Объединено запятыми из массива allowFrom[]
Discord channels.discord.token или .accounts.default.token DISCORD_BOT_TOKEN
Discord channels.discord.allowFrom или .accounts.default.allowFrom DISCORD_ALLOWED_USERS
Slack channels.slack.botToken или .accounts.default.botToken SLACK_BOT_TOKEN
Slack channels.slack.appToken или .accounts.default.appToken SLACK_APP_TOKEN
Slack channels.slack.allowFrom или .accounts.default.allowFrom SLACK_ALLOWED_USERS
WhatsApp channels.whatsapp.allowFrom или .accounts.default.allowFrom WHATSAPP_ALLOWED_USERS Авторизация через QR-пару Baileys — требуется повторное сопряжение после миграции
Signal channels.signal.account или .accounts.default.account SIGNAL_ACCOUNT
Signal channels.signal.httpUrl или .accounts.default.httpUrl SIGNAL_HTTP_URL
Signal channels.signal.allowFrom или .accounts.default.allowFrom SIGNAL_ALLOWED_USERS
Matrix channels.matrix.accessToken или .accounts.default.accessToken MATRIX_ACCESS_TOKEN Используется accessToken (не botToken)
Mattermost channels.mattermost.botToken или .accounts.default.botToken MATTERMOST_BOT_TOKEN

Прочие настройки

Что Путь OpenClaw Путь Hermes Примечания
Режим одобрения approvals.exec.mode config.yamlapprovals.mode "auto"→"off", "always"→"manual", "smart"→"smart"
Белый список команд exec-approvals.json config.yamlcommand_allowlist Шаблоны объединены и дедуплицированы
URL браузера CDP browser.cdpUrl config.yamlbrowser.cdp_url
Безголовый браузер browser.headless config.yamlbrowser.headless
Ключ поиска Brave tools.web.search.brave.apiKey .envBRAVE_API_KEY Требуется --migrate-secrets
Токен авторизации шлюза gateway.auth.token .envHERMES_GATEWAY_TOKEN Требуется --migrate-secrets
Рабочая директория agents.defaults.workspace .envMESSAGING_CWD

В архиве (нет прямого аналога в Hermes)

Эти файлы сохраняются в ~/.hermes/migration/openclaw/<timestamp>/archive/ для ручной проверки:

Что Файл архива Как воссоздать в Hermes
IDENTITY.md archive/workspace/IDENTITY.md Объединить с SOUL.md
TOOLS.md archive/workspace/TOOLS.md В Hermes есть встроенные инструкции для инструментов
HEARTBEAT.md archive/workspace/HEARTBEAT.md Используйте cron-задачи для периодических операций
BOOTSTRAP.md archive/workspace/BOOTSTRAP.md Используйте файлы контекста или навыки
Cron-задачи archive/cron-config.json Воссоздайте с помощью hermes cron create
Плагины archive/plugins-config.json См. руководство по плагинам
Хуки/вебхуки archive/hooks-config.json Используйте hermes webhook или хуки шлюза
Бэкенд памяти archive/memory-backend-config.json Настройте через hermes honcho
Реестр навыков archive/skills-registry-config.json Используйте hermes skills config
UI/идентичность archive/ui-identity-config.json Используйте команду /skin
Логирование archive/logging-diagnostics-config.json Укажите в разделе логирования config.yaml
Список агентов archive/agents-list.json Используйте профили Hermes
Привязки каналов archive/bindings.json Ручная настройка для каждой платформы
Сложные каналы archive/channels-deep-config.json Ручная конфигурация платформы

Разрешение API-ключей

Когда --migrate-secrets включён, API-ключи собираются из четырёх источников в порядке приоритета:

  1. Значения конфигурацииmodels.providers.*.apiKey и ключи TTS-провайдеров в openclaw.json

  2. Файл окружения~/.openclaw/.env (ключи вроде OPENROUTER_API_KEY, ANTHROPIC_API_KEY и т.д.)

  3. Env-подобъект конфигурацииopenclaw.json"env" или "env"."vars" (некоторые конфигурации хранят ключи здесь вместо отдельного файла .env)

  4. Профили аутентификации~/.openclaw/agents/main/agent/auth-profiles.json (учётные данные для конкретного агента)

Значения из конфигурации имеют приоритет. Каждый последующий источник заполняет оставшиеся пробелы.

Поддерживаемые ключи

OPENROUTER_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY, GEMINI_API_KEY, ZAI_API_KEY, MINIMAX_API_KEY, ELEVENLABS_API_KEY, TELEGRAM_BOT_TOKEN, VOICE_TOOLS_OPENAI_KEY

Ключи, не входящие в этот список, никогда не копируются.

Обработка SecretRef

Значения токенов и API-ключей в конфигурации OpenClaw могут быть в трёх форматах:

// Plain string
"channels": { "telegram": { "botToken": "123456:ABC-DEF..." } }

// Environment template
"channels": { "telegram": { "botToken": "${TELEGRAM_BOT_TOKEN}" } }

// SecretRef object
"channels": { "telegram": { "botToken": { "source": "env", "id": "TELEGRAM_BOT_TOKEN" } } }

Миграция обрабатывает все три формата. Для env-шаблонов и объектов SecretRef с source: "env" она ищет значение в ~/.openclaw/.env и в env-подобъекте openclaw.json. Объекты SecretRef с source: "file" или source: "exec" не могут быть разрешены автоматически — миграция предупреждает о них, и эти значения необходимо добавить в Hermes вручную через hermes config set.

После миграции

  1. Проверьте отчёт миграции — выводится по завершении с количеством перенесённых, пропущенных и конфликтующих элементов.

  2. Просмотрите архивные файлы — всё в ~/.hermes/migration/openclaw/<timestamp>/archive/ требует ручного внимания.

  3. Начните новый сеанс — импортированные навыки и записи памяти вступают в силу в новых сеансах, а не в текущем.

  4. Проверьте API-ключи — выполните hermes status для проверки аутентификации провайдеров.

  5. Проверьте обмен сообщениями — если вы перенесли токены платформ, перезапустите шлюз: systemctl --user restart hermes-gateway

  6. Проверьте политики сессий — убедитесь, что hermes config get session_reset соответствует вашим ожиданиям.

  7. Повторное сопряжение WhatsApp — WhatsApp использует QR-код (Baileys), а не миграцию токенов. Выполните hermes whatsapp для сопряжения.

  8. Очистка архива — после подтверждения, что всё работает, выполните hermes claw cleanup для переименования остаточных директорий OpenClaw в .pre-migration/ (предотвращает путаницу состояний).

Устранение неполадок

«Директория OpenClaw не найдена»

Миграция проверяет ~/.openclaw/, затем ~/.clawdbot/, затем ~/.moltbot/. Если ваша установка находится в другом месте, используйте --source /path/to/your/openclaw.

«API-ключи провайдеров не найдены»

Ключи могут храниться в нескольких местах в зависимости от версии OpenClaw: в самом openclaw.json в models.providers.*.apiKey, в ~/.openclaw/.env, в "env"-подобъекте openclaw.json или в agents/main/agent/auth-profiles.json. Миграция проверяет все четыре. Если ключи используют SecretRef с source: "file" или source: "exec", они не могут быть разрешены автоматически — добавьте их через hermes config set.

Навыки не отображаются после миграции

Импортированные навыки помещаются в ~/.hermes/skills/openclaw-imports/. Начните новый сеанс, чтобы они вступили в силу, или выполните /skills для проверки их загрузки.

TTS голос не перенесён

OpenClaw хранит настройки TTS в двух местах: messages.tts.providers.* и на верхнем уровне конфигурации talk. Миграция проверяет оба. Если ваш идентификатор голоса был установлен через интерфейс OpenClaw (хранится в другом пути), вам может потребоваться установить его вручную: hermes config set tts.elevenlabs.voice_id YOUR_VOICE_ID.