Миграция с OpenClaw
hermes Claw Migrate импортирует вашу конфигурацию OpenClaw (или виртуальный Clawdbot/Moldbot) в Hermes. В этом руководстве описывается, что это переносится, как ключевые конституции парламента, которые необходимо проверить после внесения в силу.
Быстрый старт
# Предпросмотр, затем миграция (всегда показывает предпросмотр, затем запрашивает подтверждение)
hermes claw migrate
# Только предпросмотр, без изменений
hermes claw migrate --dry-run
# Полная миграция, включая API-ключи, без запроса подтверждения
hermes claw migrate --preset full --migrate-secrets --yes
Миграция всегда показывает полный предпросмотр того, что будет импортировано, перед внесением каких-либо изменений. Просмотрите список, затем подтвердите для продолжения.
По умолчанию читает из ~/.openclaw/. Устаревшие директории ~/.clawdbot/ или ~/.moltbot/ обнаруживаются автоматически. То же самое касается устаревших имен файлов конфигурации (clawdbot.json, moltbot.json).
Параметры
| Параметр | Описание |
|---|---|
--dry-run |
Только предпросмотр — остановиться после отображения того, что будет перенесено. |
--preset <имя> |
full (все совместимые настройки) или user-data (исключает конфигурацию инфраструктуры). Ни один пресет не импортирует секреты по умолчанию — явно укажите --migrate-secrets. |
--overwrite |
Перезаписывать существующие файлы Hermes при конфликтах (по умолчанию: отказ от применения, если в плане есть конфликты). |
--migrate-secrets |
Включает API-ключи. Требуется даже при --preset full — ни один пресет не импортирует секреты молча. |
--no-backup |
Пропустить создание zip-снимка ~/.hermes/ до миграции (по умолчанию перед применением записывается один архив точки восстановления в ~/.hermes/backups/pre-migration-*.zip; можно восстановить с помощью hermes import). |
--source <путь> |
Пользовательская директория OpenClaw. |
--workspace-target <путь> |
Куда поместить AGENTS.md. |
--skill-conflict <режим> |
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.yaml → model |
Может быть строкой или объектом {primary, fallbacks} |
| Пользовательские провайдеры | models.providers.* |
config.yaml → custom_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 со следующим приоритетом:
messages.tts.providers.{provider}.*(каноническое расположение)talk.providers.{provider}.*верхнего уровня (запасной вариант)- Устаревшие плоские ключи
messages.tts.{provider}.*(самый старый формат)
| Что | Назначение Hermes |
|---|---|
| Имя провайдера | config.yaml → tts.provider |
| ID голоса ElevenLabs | config.yaml → tts.elevenlabs.voice_id |
| ID модели ElevenLabs | config.yaml → tts.elevenlabs.model_id |
| Модель OpenAI | config.yaml → tts.openai.model |
| Голос OpenAI | config.yaml → tts.openai.voice |
| Голос Edge TTS | config.yaml → tts.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 |
|
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.yaml → approvals.mode |
"auto"→"off", "always"→"manual", "smart"→"smart" |
| Белый список команд | exec-approvals.json |
config.yaml → command_allowlist |
Шаблоны объединяются и дедуплицируются |
| URL браузера CDP | browser.cdpUrl |
config.yaml → browser.cdp_url |
|
| Безголовый браузер | browser.headless |
config.yaml → browser.headless |
|
| Ключ поиска Brave | tools.web.search.brave.apiKey |
.env → BRAVE_API_KEY |
Требуется --migrate-secrets |
| Токен аутентификации шлюза | gateway.auth.token |
.env → HERMES_GATEWAY_TOKEN |
Требуется --migrate-secrets |
| Рабочая директория | agents.defaults.workspace |
.env → MESSAGING_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-ключи собираются из четырех источников в порядке приоритета:
- Значения конфига —
models.providers.*.apiKeyи ключи провайдеров TTS вopenclaw.json - Файл окружения —
~/.openclaw/.env(ключи типаOPENROUTER_API_KEY,ANTHROPIC_API_KEYи т.д.) - Подобъект env конфига —
openclaw.json→"env"или"env"."vars"(некоторые конфигурации хранят ключи здесь вместо отдельного файла.env) - Профили аутентификации —
~/.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
Значения конфига OpenClaw для токенов и API-ключей могут быть в трех форматах:
// Простая строка
"channels": { "telegram": { "botToken": "123456:ABC-DEF..." } }
// Шаблон окружения
"channels": { "telegram": { "botToken": "${TELEGRAM_BOT_TOKEN}" } }
// Объект SecretRef
"channels": { "telegram": { "botToken": { "source": "env", "id": "TELEGRAM_BOT_TOKEN" } } }
Миграция обрабатывается во всех трех формах. Для окружения шаблонов и объектов SecretRef с source: "env" она ищет значение в ~/.openclaw/.env и подобъект env в openclaw.json. Объекты SecretRef с source: "file" или source: "exec" не могут быть включены автоматически — миграция предупреждает о них, и эти значения необходимо добавить в Hermes вручную с помощью hermes config set.
После поступления
-
Проверьте отчет о результате — выводится по завершению с включением перенесенных, пропущенных и конфликтующих элементов.
-
Просмотрите архивные файлы — всё, что находится в
~/.hermes/migration/openclaw/<timestamp>/archive/, требует ручного внимания. -
Начните новую сессию — импортированные навыки и записи воспоминаний о том, как вы присутствовали на новых сессиях, а не в настоящее время.
-
Проверьте API-ключи — выполните
hermes status, чтобы проверить аутентификацию провайдера. -
Протестируйте обмен сообщениями — если вы перенесли платформу токенов, перезапустите шлюз:
systemctl --user restart hermes-gateway -
Проверьте политику сессий — убедитесь, что
hermes config get session_resetсоответствует вашим ожиданиям. -
Повторно свяжите WhatsApp — WhatsApp использует QR-сопряжение (Baileys), а не миграцию токенов. Выполните
hermes WhatsAppдля связи. -
Очистка архива — после подтверждения того, что все работает, выполните
hermes Claw Cleanup, чтобы переименовать структуру директории OpenClaw в.pre-migration/(предотвращает путаницу изменений).
Устранение неполадок
"Директория OpenClaw не найдена"
Миграция сначала ~/.openclaw/, затем ~/.clawdbot/, затем ~/.moltbot/. Если ваша установка находится в другом месте, используйте --source /путь/к/вашему/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, чтобы выбрать новую проверку, загруженную ими.
ТТС-голос не перенесен
OpenClaw хранит настройки TTS в двух местах: messages.tts.providers.* и конфиг talk верхнего уровня. Миграция вчера оба. Если ваш идентификатор голоса был установлен через пользовательский интерфейс OpenClaw (хранится в другом пути), вы можете позже установить его вручную: hermes config set tts.elevenlabs.voice_id YOUR_VOICE_ID.