AI / Automation 27 апреля 2026

2026-04-27 OpenClaw, HTTP 429/503 upstream LLM, бюджеты повторов и форма запросов по организации на арендованном headless облачном Mac (HK / JP / KR / SG / US)

MacXCode Engineering Team 27 апреля 2026 ~19 мин чтения

Когда OpenClaw круглосуточно работает на арендованном Mac mini M4, который виден только по SSH или изредка через VNC, самые громкие симптомы «лимита скорости» похожи на сломанную модель: ответы дёргаются, вызовы инструментов рвутся посреди трассы, спрашивают про ротацию API-ключа. На самом деле HTTP 429 и HTTP 503 на исходящем пути к провайдеру LLM — другой класс инцидентов, чем 429, который вы сами отдаёте через nginx на входящем вебхуке, и не то же самое, что мёртвые маршруты в работе по egress / DNS / TLS. Этот материал 2026-04-27 для SRE: воспроизводимое разделение нашего перерасхода квот и их деградации, численные дефолты backoff, орг-уровневый бюджет повторов без молчаливого превышения, поля логов для структурированного JSON. Тот же узел собирает Xcode — см. несколько Xcode и DEVELOPER_DIR.

Две поверхности «429»: ваш nginx и их API-шлюз

В шумные дни—крупные релизы моделей, региональные сбои, демо-скрипт маркетинга с 40 параллельными skills—легко смешать: (A) намеренно дросселированный входящий вебхук, (B) upstream 429/503, (C) 401/403 из-за неверного или просроченного креденшла. Практический triage: исходный IP (loopback процесса 127.0.0.1:18789 против публичного края), user-agent или тег библиотеки от провайдера, величина retry-after в секундах или минутах. Операторы в Гонконге и Токио часто видят корпоративный прокси с 429 на бурст при здоровом вендоре — или наоборот. Помечайте строки edge=inbound|outbound в схеме логов.

Числовой ориентир: если доля исходящих 5xx или 429 превышает 2 % всех LLM-раундов дольше 5 минут, открывайте sev-2-мост — это сетевой инцидент, а не «дрейф качества ИИ».

401/403 против 429 против 503/529

Статус Практический смысл Позиция по умолчанию
401 / 403 Креденшл, allow-list или несовпадение org Остановить авто-retry после 0–1 зонда; проверить ключи и секреты launchd.
429 Дроссель провайдера или исчерпанный токен/запрос bucket Backoff с джиттером; уменьшить in-flight до обвинений «багов OpenClaw».
503 / 529 Перегруженный пул или регион Короткая первая задержка, меньше максимум попыток, при политике — запасная модель (allowlist triage).

Наивный клиент, вечно повторяющий 401, может заблокировать аккаунт. Цикл без backoff на 503 превращает мелкий сбой вендора в само-DDoS с Mac на NIC 10 Гбит/с.

Параллелизм, токен-окна, бюджеты по org

Большинство тикетов «нас зарейтлимили» — самонаведённый параллелизм: cron из launchd накладывается на всплески Discord/Slack. Сначала форма трафика:

  • Ограничить одновременные tool-turns, напр. 4 исходящих HTTP in-flight на процесс шлюза.
  • Суточные потолки токенов по организации в бизнес-терминах, не только глобальный MAX_TOKENS.
  • Сдвигать расписание, чтобы границы UTC не складывали US+EU с SG/JP.

Джиттер, экспоненциальный потолок, бюджет времени

  • Первый retry 429 через 0,4–1,2 с джиттера.
  • Потолок между попытками 32–64 с; дольше — эскалация людей.
  • Жёсткий стоп задачи после 180 с суммарного ожидания повторов для пользовательских ходов чата.

sleep $((2 + RANDOM % 3)) curl -sS -D - "https://api.example/v1/health" -o /dev/null | head -n1

Раздельные бюджеты: политика вебхук 429/503 и политика LLM — разные блоки YAML.

Runbook: шесть шагов при жёлтых графиках

  1. Заморозить релизы openclaw кроме отката; только config с 2-мин peer review.
  2. Классифицировать край по inbound/outbound; при outbound 429 — снимок concurrency и лимитов из живого конфига.
  3. Уменьшить масштаб: параллельные runner инструментов на 50 %; если p95 падает — голод очереди, не нехватка CPU.
  4. Сравнить с egress/DNS: одновременный рост TLS может маскироваться под 503.
  5. openclaw doctor в окружении демона — doctor/allowlist.
  6. Постмортем: пик in-flight, % 429, медиана токенов на вызов.

Логи для одного запроса в Grafana/Loki

Минимум ts, provider, route, attempt, status, request_id, ms; по возможности org, surface. Расширяет пробы готовности. Связывайте с npm-апгрейдами.

Добавьте при возможности счётчик оставшегося бюджета повторов на организацию или хотя бы флаг «последняя попытка» — в трассах сразу видно, упёрлись ли вы во внутренний предел или во внешний 429. Сохраняйте request_id от провайдера без изменений: саппорт без него часто отвечает формальными шаблонами. На инцидент выгружайте окно логов до первого всплеска, а не только после — иначе теряется связь с недавним деплоем или правкой конфигурации.

В метриках разделяйте клиентские 4xx (где повтор бессмысленен или запрещён политикой) и 5xx (где короткий backoff уместен). Смешанный счётчик заставляет команду ошибочно «винить вендора», когда на самом деле цикл бесконечно долбит 401. На безголовом Mac нет «второго мнения» из браузера с открытой status-страницей провайдера — дисциплина логов компенсирует это.

Раз в неделю после согласования с FinOps можно выполнять крошечный canary-запрос с минимальным расходом токенов, чтобы поймать регрессии маршрута или DNS до пользовательских жалоб. Держите QPS намеренно низким: цель — сигнал, а не нагрузочный тест.

FAQ

Вопрос Краткий ответ
По умолчанию «купить больше квоты API»? Иногда при росте, но сначала форма трафика — параллельный skill сжигает новую квоту за часы.
Второй физический Mac в регионе? При низком CPU и насыщенном HTTP часто дешевле — региональные планы.

Egress DNS/TLS, входящие вебхуки, субагенты и каналы, launchd и API-ключи.

Почему Mac mini M4 для bursty трафика моделей

OpenClaw смешивает всплески CPU (оркестрация инструментов, локальные эмбеддинги) и круглосуточный NIC (HTTP/2, TLS, heartbeat). Физический Mac mini M4 даёт честные таймеры для backoff и достаточно unified memory для больших JSON-буферов без постоянных OOM на 8-гигабайтных Linux-срезах. Если на том же хосте крутятся тяжёлые xcodebuild или индексация, смещайте ночные LLM-батчи из пиков интерактивного чата — справедливость важнее сырого CPU.

Совместное размещение с QA и фермой Xcode упрощает одного вендора для SSH, диска и SLA поддержки в Гонконге, Токио, Сеуле, Сингапуре и США. Масштабируйте до второго узла только если после снижения параллелизма p95 не улучшается — тогда не хватает канала или квоты, а не дисциплины клиента.

Шлюз на железе, переживающем повторы

1–2 ТБ · Apple Silicon · SSH и опционально VNC