openclaw config validate на общий удалённый Mac и хотят одинаково ловить invalid-key, уважать окно горячей перезагрузки шлюза и складывать контрольные tarball в артефакты. Связанные материалы: навыки и откат, Model Auth, Argo CD webhook. Страницы цены, покупка, помощь открываются без входа.
Три узких места до ворот CI
- Несогласованный Node: демон шлюза и job CI должны видеть одинаковую ветку рантайма не ниже 22.12, иначе валидатор и рантайм расходятся по поведению.
- Частичный hot reload: после смены секций конфигурации память воркера может держать старый снимок, пока вы не выполните документированный reload или короткий рестарт.
- Артефакты с секретами: tarball с «полным домом» легко утащит ключи в публичное хранилище артефактов; политика исключений обязательна.
Матрица: validate, doctor и рестарт шлюза
Короткая таблица помогает не смешивать задачи: статический разбор схемы, живое состояние процесса и операционный сброс после изменений маршрутов или токенов. На общих раннерах полезно явно разделить job «только validate» и job «интеграционный прогон шлюза», чтобы длинные перезапуски не блокировали быстрые проверки схемы в очереди merge.
| Задача | config validate | doctor / рестарт |
|---|---|---|
| Неизвестные ключи | Ловит несогласованные поля до merge, удобно как красный светофор. | Не заменяет validate; лишь подтверждает среду и версию пакета. |
| invalid-key в логе | Часто даёт путь вида a.b.c или файл и строку — стартуйте отсюда. |
Сверяйте launchd и интерактивную оболочку, если путь верный, а значение «пустое». |
| После правки gateway | Повторите validate дважды: до и после reload, зафиксируйте оба лога. | Короткий рестарт снимает залипание старых обработчиков на длинных вебхуках. |
Чеклист предпосылок
- Версия линии: зафиксируйте пакет
openclaw@2026.3.xв lockfile пайплайна или явномnpm install -gс тегом. - Node 22.12+: первой строкой job выведите
node -vи нормализованный тест мажор-минор как ниже в командах. - Пользователь: тот же UID, что у
launchdшлюза, иначе пути к данным разъедутся с CI. - Переменные: вынесите нестандартные каталоги в именованные переменные и документируйте их в README ветки.
- Политика секретов: запретите включение
*.pem,*.keyи сырогоexportв артефакты.
Пошаговые команды
Выполняйте сверху вниз в одном неинтерактивном шаге; сохраняйте единый файл лога для последующего grep и для прикрепления к тикету.
Ниже порога завершайте job кодом ошибки, чтобы не тратить минуты на заведомо несовместимый CLI.
node -v
node -e "const [a,b]=process.versions.node.split('.').map(Number);process.exit(a>22||a===22&&b>=12?0:1)"
Снимок каталога настроек без секретных файлов — основа воспроизводимого отката.
tar -czf openclaw-checkpoint-pre.tar.gz \
--exclude='*.pem' --exclude='*.key' \
"${OPENCLAW_CONFIG_DIR:-$HOME/.openclaw}" 2>/dev/null || true
Сохраните stdout и stderr; по провалу извлеките строки с ключевыми словами.
openclaw config validate 2>&1 | tee openclaw-ci.log openclaw doctor 2>&1 | tee -a openclaw-ci.log grep -Ei 'invalid[-_]?key|unknown.?key|schema' openclaw-ci.log || true
После изменения маршрутов или токенов выполните официальную процедуру reload, затем обязательно второй проход openclaw config validate и сравните diff логов.
Загрузите tarball, openclaw-ci.log и однострочный checksums.txt; в публичных аннотациях оставляйте только маскированные имена переменных.
Типичные сигнатуры ошибок и разбор
Сопоставьте путь с фактическим файлом и версией схемы 2026.3.x; удалите устаревшие поля из шаблонов старше линии релиза и прогоните validate локально на том же архиве.
Часто перепутаны ключ шлюза и ключ провайдера модели; вернитесь к разделу Model Auth и проверьте, что CI не подставляет заглушку из кеша переменных.
Если лог чередует старые и новые значения одного параметра, сделайте короткий рестарт демона и зафиксируйте uptime до повторной проверки.
Связка с артефактами CI
Привяжите tarball к номеру merge request и к хешу коммита; задайте TTL артефактов и отдельный «зелёный» шаблон для ветки релиза. На провал ворот прикладывайте не только лог, но и последний успешный tarball, чтобы откат был копированием, а не угадыванием. Для соседних тем по таймаутам исходящих вызовов смотрите матрицу GHCR — те же лестницы backoff 2/4/8 с уместны для повторных validate при нестабильном реестре npm. В GitHub Actions используйте отдельный шаг upload-artifact с if: always(), в GitLab — artifacts:when: on_failure рядом с дублирующим успехом, чтобы аудитор видел симметричную пару файлов.
Итоговый чеклист перед merge
- В логе есть доказательство Node 22.12+ и закреплённой версии 2026.3.x.
- Два файла validate: до и после любого reload шлюза на той же машине.
- grep по invalid-key выполнен; пути заведены в задачу трекера со ссылкой на строку.
- Артефакты проверены глазами: нет PEM, нет сырого токена, есть только маски.
- Есть ссылка на соседний runbook по откату навыков или Model Auth для эскалации.
Краткий итог
Сочетайте openclaw config validate как жёсткое CI-ворото, openclaw doctor как здравый смысл среды и дисциплину двойной проверки после горячей перезагрузки. Контрольные tarball и маскированные логи превращают расследование invalid-key из ночной охоты в воспроизводимый SOP.
Выделенный Apple Silicon для ворот и шлюза — цены, покупка, помощь; каталог статей — блог (чтение без входа).