Перейти к основному содержимому

Миграция с OpenClaw

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

подсказка

Если ваша конфигурация OpenClaw была мульти-провайдерной, vibeos setup --portal сворачивает её в единый OAuth — более 300 моделей плюс Tool Gateway в одном входе. См. Nous Portal.

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

# Предпросмотр, затем миграция (всегда показывает предпросмотр, затем запрашивает подтверждение)
vibeos claw migrate

# Только предпросмотр, без изменений
vibeos claw migrate --dry-run

# Полная миграция, включая API-ключи, без подтверждения
vibeos claw migrate --preset full --migrate-secrets --yes

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

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

Параметры​

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

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

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

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

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

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

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

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

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

ЧтоПуть конфига OpenClawНазначение VibeOSПримечания
Модель по умолчаниюagents.defaults.modelconfig.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~/.vibeos/.envТребуется --migrate-secrets. См. Разрешение API-ключей ниже.

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

ЧтоПуть конфига OpenClawПуть конфига VibeOSСопоставление
Макс. шаговagents.defaults.timeoutSecondsagent.max_turnstimeoutSeconds / 10, не более 200
Подробный режимagents.defaults.verboseDefaultagent.verbose"off" / "on" / "full"
Усилия рассужденияagents.defaults.thinkingDefaultagent.reasoning_effort"always"/"high"/"xhigh" → "high", "auto"/"medium"/"adaptive" → "medium", "off"/"low"/"none"/"minimal" → "low"
Сжатиеagents.defaults.compaction.modecompression.enabled"off" → false, всё остальное → true
Модель сжатияagents.defaults.compaction.modelcompression.summary_modelПрямое копирование строки
Задержка человекаagents.defaults.humanDelay.modehuman_delay.mode"natural" / "custom" / "off"
Время задержки человекаagents.defaults.humanDelay.minMs / .maxMshuman_delay.min_ms / .max_msПрямое копирование
Часовой поясagents.defaults.userTimezonetimezoneПрямое копирование строки
Тайм-аут выполненияtools.exec.timeoutSecterminal.timeoutПрямое копирование (поле — timeoutSec, не timeout)
Docker-песочницаagents.defaults.sandbox.backendterminal.backend"docker" → "docker"
Docker-образagents.defaults.sandbox.docker.imageterminal.docker_imageПрямое копирование

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

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

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

MCP-серверы​

Поле OpenClawПоле VibeOSПримечания
mcp.servers.*.commandmcp_servers.*.commandStdio-транспорт
mcp.servers.*.argsmcp_servers.*.args
mcp.servers.*.envmcp_servers.*.env
mcp.servers.*.cwdmcp_servers.*.cwd
mcp.servers.*.urlmcp_servers.*.urlHTTP/SSE-транспорт
mcp.servers.*.tools.includemcp_servers.*.tools.includeФильтрация инструментов
mcp.servers.*.tools.excludemcp_servers.*.tools.exclude

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

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

  1. messages.tts.providers.{provider}.* (каноническое расположение)
  2. talk.providers.{provider}.* верхнего уровня (запасной вариант)
  3. Устаревшие плоские ключи messages.tts.{provider}.* (самый старый формат)
ЧтоНазначение VibeOS
Имя провайдераconfig.yaml → tts.provider
ID голоса ElevenLabsconfig.yaml → tts.elevenlabs.voice_id
ID модели ElevenLabsconfig.yaml → tts.elevenlabs.model_id
Модель OpenAIconfig.yaml → tts.openai.model
Голос OpenAIconfig.yaml → tts.openai.voice
Голос Edge TTSconfig.yaml → tts.edge.voice (OpenClaw переименовал "edge" в "microsoft" — оба распознаются)
Ресурсы TTS~/.vibeos/tts/ (копирование файлов)

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

ПлатформаПуть конфига OpenClawПеременная .env VibeOSПримечания
Telegramchannels.telegram.botToken или .accounts.default.botTokenTELEGRAM_BOT_TOKENТокен может быть строкой или SecretRef. Поддерживаются как плоская, так и аккаунтная структуры.
Telegramcredentials/telegram-default-allowFrom.jsonTELEGRAM_ALLOWED_USERSОбъединены через запятую из массива allowFrom[]
Discordchannels.discord.token или .accounts.default.tokenDISCORD_BOT_TOKEN
Discordchannels.discord.allowFrom или .accounts.default.allowFromDISCORD_ALLOWED_USERS
Slackchannels.slack.botToken или .accounts.default.botTokenSLACK_BOT_TOKEN
Slackchannels.slack.appToken или .accounts.default.appTokenSLACK_APP_TOKEN
Slackchannels.slack.allowFrom или .accounts.default.allowFromSLACK_ALLOWED_USERS
WhatsAppchannels.whatsapp.allowFrom или .accounts.default.allowFromWHATSAPP_ALLOWED_USERSАутентификация через QR-сопряжение Baileys — требуется повторное сопряжение после миграции
Signalchannels.signal.account или .accounts.default.accountSIGNAL_ACCOUNT
Signalchannels.signal.httpUrl или .accounts.default.httpUrlSIGNAL_HTTP_URL
Signalchannels.signal.allowFrom или .accounts.default.allowFromSIGNAL_ALLOWED_USERS
Matrixchannels.matrix.accessToken или .accounts.default.accessTokenMATRIX_ACCESS_TOKENИспользует accessToken (не botToken)
Mattermostchannels.mattermost.botToken или .accounts.default.botTokenMATTERMOST_BOT_TOKEN

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

ЧтоПуть OpenClawПуть VibeOSПримечания
Режим одобренияapprovals.exec.modeconfig.yaml → approvals.mode"auto"→"off", "always"→"manual", "smart"→"smart"
Белый список командexec-approvals.jsonconfig.yaml → command_allowlistШаблоны объединяются и дедуплицируются
URL браузера CDPbrowser.cdpUrlconfig.yaml → browser.cdp_url
Безголовый браузерbrowser.headlessconfig.yaml → browser.headless
Ключ поиска Bravetools.web.search.brave.apiKey.env → BRAVE_API_KEYТребуется --migrate-secrets
Токен аутентификации шлюзаgateway.auth.token.env → VIBEOS_GATEWAY_TOKENТребуется --migrate-secrets
Рабочая директорияagents.defaults.workspaceconfig.yaml → terminal.cwdУстаревшие миграции могут по-прежнему записывать MESSAGING_CWD в качестве запасного варианта для совместимости

Архивировано (нет прямого аналога в VibeOS)​

Они сохраняются в ~/.vibeos/migration/openclaw/<timestamp>/archive/ для ручного просмотра:

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

// Простая строка
"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" не могут быть разрешены автоматически — миграция предупреждает о них, и эти значения необходимо добавить в VibeOS вручную через vibeos config set.

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

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

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

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

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

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

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

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

  8. Очистка архива — после подтверждения, что всё работает, выполните vibeos 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", они не могут быть разрешены автоматически — добавьте их через vibeos config set.

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

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

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

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