openclaw gateway status в JSON, openclaw doctor и lsof на 18789 плюс короткий HTTP-зонд, без ложных зелёных статусов. Официальный ритм: JSON для диффов, doctor для среды, портовый отпечаток для гонок процессов; prefetch даёт тёплый шлюз и честную сводку. См. onboard CI, validate, prefetch RAG. Главная, цены, покупка, помощь — без входа.
Три типичных провала ворот до порта 18789
- JSON зелёный, HTTP мёртв: без
curlиlsofпропустите падение слушателя или другой loopback. - Конкуренция за 18789: старый job или продовый
launchd; PR-smoke и прод не делят один порт. - nvm vs системный Node: shim в SSH и бинарь в plist расходятся,
doctorдаёт флаппинг.
Матрица сигналов: status JSON, doctor, lsof на 18789
JSON — автоматизация и диффы между коммитами, doctor — версии Node и целостность CLI, lsof — гонки за портом и чужие процессы. Тяжёлый prefetch и длинные загрузки вынесите в отдельный шаг до ворот, чтобы очередь merge не простаивала.
| Вопрос | gateway status JSON | doctor + lsof 18789 |
|---|---|---|
| Жив ли слушатель | Даёт структурированное состояние для скриптов и вебхука сводки. | lsof -nP -iTCP:18789 -sTCP:LISTEN показывает PID и команду; doctor подтверждает CLI и пути. |
| Согласованность с демоном | Сравните поля версии и домашних каталогов между коммитами. | Сверьте PID с ожидаемым Label launchd или временным инстансом job. |
| После смены токена или маршрута | Повторите JSON и сохраните артефакт для диффа. | Повторите doctor; при подозрении на залипание сделайте короткий рестарт и снова снимите lsof. |
Чеклист предпосылок для launchd и CI
- Node без nvm: абсолютные
which nodeиwhich openclaw= как в plistProgramArguments. - OPENCLAW_HOME для PR отдельно от прода и порта по умолчанию.
CI=trueи флаги изopenclaw gateway status --helpбез браузера.- Prefetch npm и моделей до статуса, иначе таймауты врут.
- Артефакты без токенов и сырого
export.
Пошаговый сценарий ворот
Один неинтерактивный шаг, общий лог через tee для последующего grep и тикета команды целиком. Шесть позиций ниже.
Версии до установок; несовместимый Node — fail fast.
node -v command -v node command -v openclaw npm prefix -g
CI=true, при необходимости TERM=dumb.
export CI=true
Флаги JSON из --help; ниже пример файла и pretty-print если JSON.
openclaw gateway status > gateway-status.json python3 -m json.tool gateway-status.json 2>/dev/null | tee gateway-status.pretty.log || cp gateway-status.json gateway-status.pretty.log
validate — схема, doctor — среда.
openclaw doctor 2>&1 | tee -a openclaw-gate.log openclaw config validate 2>&1 | tee -a openclaw-gate.log
PID и команда против ожидаемого Label или smoke.
lsof -nP -iTCP:18789 -sTCP:LISTEN | tee lsof-18789.txt
curl с таймаутом; путь health по версии шлюза. Один пакет файлов для вебхука.
curl -fsS --max-time 5 http://127.0.0.1:18789/health | tee curl-health.txt
Критерии здоровья «зелёный прогон»
gateway-status.jsonвалиден; поля согласованы с CLI иOPENCLAW_HOMEjob.openclaw doctorиconfig validateс кодом ноль.lsof-18789.txtпуст или показывает ожидаемый smoke.curl-health.txtв таймауте с ожидаемым кодом; при fail приложите JSON и lsof вместе.
Типовые сообщения и что проверить
| Симптом / строка лога | Вероятная причина | Действие |
|---|---|---|
EADDRINUSE 18789 |
Чужой слушатель. | lsof, убрать smoke, не трогать прод Label в PR. |
JSON ок, curl fail |
HTTP умер или другой loopback. | Рестарт, один артефакт с JSON и curl. |
openclaw не найден в plist |
nvm PATH не у launchd. | Абсолютный путь и PATH в plist. |
| doctor и Node | Несовместимая ветка. | Системный Node, prefetch снова. |
FAQ
Дублируйте вопросы в JSON-LD FAQPage и шаги в HowTo внутри <head> для расширенных результатов поиска.
Кэш метаданных; добавьте HTTP-зонд и lsof рядом с JSON.
Нет — гонка за порт; отдельный OPENCLAW_HOME и smoke.
Абсолютный openclaw в plist и PATH в EnvironmentVariables.
Тёплый кеш снимает холодные таймауты; сводка вебхука честнее.
Prefetch и одна сводка для CI
Prefetch перед gateway status стабилизирует health и JSON между коммитами на удалённом Mac. Один каталог артефакта с JSON, логом doctor и validate, lsof и curl даёт короткую сводку вебхуку без повторного подъёма шлюза и ускоряет разбор инцидентов, потому что человек и автоматика смотрят на один и тот же набор файлов.
Итоговый чеклист перед merge
- Абсолютные пути
nodeиopenclawсогласованы с plist. - JSON, doctor, validate, lsof, curl — один архив с хешем коммита.
- Prefetch сделан или явно пропущен в MR.
- Нет секретов в артефактах.
- При конфликте 18789 указан Label или smoke.