Практика наблюдаемости OpenClaw в 2026 году:
панель токенов, карточка авторизации модели на шлюзе удалённого Mac и воспроизводимая цепочка сводки E2E-смоука
Аудитория: команды, которые гоняют OpenClaw на удалённом Mac с Playwright-смоуком, когда счётчики токенов двигаются, а карточка авторизации модели выглядит зависшей. Ниже — пять проводимых шагов, универсальный шаблон Webhook-сводки без входа в облачную консоль и поля, которые отделяют политику модели от флейков UI. Slug: 2026-openclaw-token-auth-e2e-summary-remote-mac.html. Рядом: смоук /v1/models, Vercel Deploy Hook, трейсы и HAR.
Трейсы и скриншоты закрывают DOM, но маскируют перегруз шлюза и устаревшие bearer-скоупы. Наблюдаемые поля OpenClaw по фазам показывают, росли ли токены из-за health-check или из-за зацикленных попыток авторизации до старта браузеров.
Типичные боли. Зелёные шарды при auth_state=degraded. Всплеск prompt_tokens до запуска webkit-проекта. Расхождение времени JWT и эмитента из-за дрейфа часов на арендованной сессии.
Матрица источников.
| Источник | Где силён | Слепая зона |
|---|---|---|
| Консоль расхода провайдера | Споры по биллингу за месяц. | Лаг минут и отсутствие OPENCLAW_RUN_ID в строке события. |
| NDJSON шлюза плюс универсальная сводка Webhook | Разбор каждого деплоя с идемпотентным дайджестом. | Нужна маскировка hostname и заголовков с секретами. |
Только report.json Playwright |
Селекторы, таймауты, ссылки на trace.zip. | Нет сигнала политики модели и квот на шлюзе. |
Пять шагов проводки артефактов.
- Экспортируйте
OPENCLAW_RUN_ID,GIT_SHA,BASE_URLи алиас модели, который ждёт профиль смоука. - Дописывайте по одной строке NDJSON в
.openclaw/reports/gateway.ndjsonс полямиphase,duration_ms,prompt_tokens,completion_tokens,auth_state,http_statusиз того же процесса, что бьёт в шлюз. - Запустите
npx playwright testс--reporter=jsonи положитеreport.jsonрядом с NDJSON. - Слейте оба файла небольшим jq или node-скриптом в
smoke_summary/v1, не печатая секреты в stdout CI. - Отправьте JSON на командный Webhook с
Idempotency-Key: ${GIT_SHA}:${OPENCLAW_RUN_ID}:smoke_summary, чтобы повторные hook не дублировали инциденты.
Универсальный шаблон сводки. Версионируйте schema, чтобы парсеры чатов не ломались при добавлении полей.
{
"schema": "smoke_summary/v1",
"openclaw_run_id": "run_…",
"git_sha": "abc123…",
"base_url": "https://staging.example",
"gateway": {
"auth_state": "ok|degraded|blocked",
"prompt_tokens": 0,
"completion_tokens": 0,
"last_http_status": 200,
"last_latency_ms": 0
},
"playwright": {
"status": "passed|failed|timedOut",
"failed_spec": "tests/smoke/checkout.spec.ts",
"shard": "webkit",
"exit_code": 1
},
"failed_phase": "gateway_preflight|playwright_smoke|summary_post"
}
01 Чек-лист на стороне шлюза
Выполняйте на удалённом Mac до обвинения Playwright. Пересекается с чек-листом /v1/models, но фокус на полях журнала, а не на кликах.
- Дрейф часов. Синхронизируйте время и логируйте смещение в миллисекундах рядом с
auth_state. - Объём токена. Сведите
OPENCLAW_GATEWAY_TOKENс минимальной ролью из runbook. - Липкие сессии. Пишите
upstream_podили отражённыйx-request-id, если воркеры шлюза расходятся. - Алиасы моделей. Дёрните
/v1/modelsчерез тот же ingress, что и смоук; сравните алиасы с конфигом приложения. - Семантика degraded. Зафиксируйте, разрешает ли
auth_state=degradedтолько read-only пробы.
Каждая строка шлюза должна нести OPENCLAW_RUN_ID, чтобы одним grep связать NDJSON и отчёт Playwright.
Раздельно храните prompt_tokens и completion_tokens: рост prompt при плоском completion часто означает префлайт-ретраи до ассертов.
В чат уводите не больше четырёх килобайт stderr; артефакты и ссылки на trace — отдельным вложением без секретов.
02 Сопоставление полей отчёта Playwright
Копируйте устойчивые ключи из report.json в сводку. Нормализатор можно позаимствовать из подхода к метрикам сборки в PR.
| Источник Playwright | Поле сводки | Зачем шлюзу |
|---|---|---|
stats.expected против stats.unexpected |
playwright.assertion_delta |
Отделяет флейки UI от инфраструктуры, когда токены всё ещё растут. |
suites[].specs[].tests[].results[].workerIndex |
playwright.worker_index |
Связывает шард с всплеском нагрузки на шлюзе. |
errors[].message |
playwright.first_error |
Человекочитаемая строка для чата плюс ссылка на trace. |
При timedOut добавляйте testTimeout и gateway.last_latency_ms. Низкая задержка при blocked чаще указывает на обновление учётных данных раньше, чем на поиск по DOM.
03 Пороговые оповещения
Срабатывайте, когда сигналы расходятся; одиночная метрика быстро усыпляет внимание к staging.
- Наклон токенов. Рост
prompt_tokensза пять минут выше удвоенной медианы профиля приplaywright.status=passed. - Дрожание auth. Более трёх смен
auth_stateна одинOPENCLAW_RUN_IDбез окна ротации ключей. - Стена времени. Длительность Playwright выше базовой более чем на половину при ровной задержке шлюза.
Базовые линии фиксируйте вместе с заметками из web-ops мониторинга.
04 FAQ
Почему панель токенов двигается, а Playwright падает?
Health-check и встраивания двигают счётчики до сценария checkout. Соединяйте фазы NDJSON с именами проектов Playwright, а не только суммарные токены.
Реально ли обойтись без облачной консоли?
Да, если ingress, шлюз и раннер отдают одинаковые поля в stdout и в Webhook. Не включайте ссылки, которые открываются только после SSO провайдера.
Какой Idempotency-Key безопасен для сводок?
Используйте ${GIT_SHA}:${OPENCLAW_RUN_ID}:${PROFILE}: повторные деплои схлопываются, второй профиль на том же коммите всё равно может отправить отдельную запись.
Читайте Web и OpenClaw без консоли провайдера
Откройте главную, тарифы и помощь без регистрации. Дальше по теме: преддеплойный web-смоук, триаж E2E-регрессий, каталог блога.