OpenClaw · наблюдаемость · токены · auth_state · E2E-смоук · удалённый Mac · 2026

Практика наблюдаемости OpenClaw в 2026 году:
панель токенов, карточка авторизации модели на шлюзе удалённого Mac и воспроизводимая цепочка сводки E2E-смоука

21.04.2026 Web-автоматизация / предрелизные ворота 11 мин чтения

Аудитория: команды, которые гоняют 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. Нет сигнала политики модели и квот на шлюзе.

Пять шагов проводки артефактов.

  1. Экспортируйте OPENCLAW_RUN_ID, GIT_SHA, BASE_URL и алиас модели, который ждёт профиль смоука.
  2. Дописывайте по одной строке NDJSON в .openclaw/reports/gateway.ndjson с полями phase, duration_ms, prompt_tokens, completion_tokens, auth_state, http_status из того же процесса, что бьёт в шлюз.
  3. Запустите npx playwright test с --reporter=json и положите report.json рядом с NDJSON.
  4. Слейте оба файла небольшим jq или node-скриптом в smoke_summary/v1, не печатая секреты в stdout CI.
  5. Отправьте 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}: повторные деплои схлопываются, второй профиль на том же коммите всё равно может отправить отдельную запись.

OpenClaw · Web-смоук · без входа

Читайте Web и OpenClaw без консоли провайдера

Откройте главную, тарифы и помощь без регистрации. Дальше по теме: преддеплойный web-смоук, триаж E2E-регрессий, каталог блога.

Наблюдаемость Авторизация модели Playwright
Аренда Mac — OpenClaw QA