Strands Agents удобно показывать в демо и трудно везти в прод: каталоги инструментов растут быстрее ревью, структурированные ответы расходятся с теми схемами которые думает что задеплоил оператор, а зависшие шаги съедают unified memory на Apple Silicon. Здесь — воспроизводимый контур где OpenClaw остаётся границей доверия: белый список инструментов, JSON Schema с явным таймаутом, circuit breaker и failure summary обратно в рабочий процесс вместо непрозрачных трассировок.

Оглавление: болевые точки · сравнение с LangGraph и CrewAI · минимальные права · схема и предохранитель · шаги воспроизведения · разбор сбоев · цифры для слайдов · FAQ

Ещё по теме: PydanticAI, ретраи JSON Schema, Instructor. Без входа: главная, справка, тарифы, аренда узла.

Три класса отказов которые закрывает эта схема

1. Разрастание инструментов. Локальные добавления обходят шлюз если таблица имён в git не совпадает с маршрутами OpenClaw при старте.

2. Зависание валидатора. Большие ответы делают JSON Schema дорогой; без отдельного дедлайна сбой схемы неотличим от задержки модели.

3. Штормы повторов. Без circuit breaker пятисотые и сбои валидатора клинят память на том же удалённом Mac с инференсом и JSONL.

Чем Strands отличается от LangGraph и CrewAI в этой точке архитектуры

Шлюз везде единый choke point для токена и маршрутов; отличается только модель внутри цикла: Strands — шаги и узлы инструментов, LangGraph — чекпоинты графа, CrewAI — роли и задачи.

Фокус фреймворка Что движется внутри цикла агента Что остаётся на OpenClaw
Strands Agents Шаги рабочего процесса, явные узлы инструментов, передачи между стадиями. Область Bearer, разрешённые маршруты, схемы, таймауты, JSONL, конверты ошибок.
LangGraph Чекпоинты графа, прерываемое состояние, композиция в стеке LangChain. Тот же контракт шлюза; см. инструменты LangGraph за OpenClaw и песочницу чекпоинтов.
CrewAI Ролевые агенты, доски задач, иерархическая маршрутизация. Тот же токен и маршруты; см. роутинг CrewAI через шлюз.

Минимальные права и белый список как контракт RPC

Одна таблица в git: имя, версия схемы аргументов, область диска, владелец. Зеркало в Strands и OpenClaw, неизвестные имена — отказ до побочных эффектов. Только чтение на код, отдельный scratch на SSD, домашний каталог оператора не монтировать без тикета. Bearer только на маршруты инструментов; см. IDE bridge и пробы.

JSON Schema, таймаут валидации и circuit breaker

Каноническая JSON Schema на шлюзе до инференса; этапу валидации — отдельный потолок ниже HTTP таймаута Strands для класса schema_timeout.

Исполнение на шлюзе ниже клиентского дедлайна, очередь с капом, circuit breaker после трёх сбоев валидатора или пятисотых upstream, охлаждение около тридцати секунд. Повторы схемы — инцидент по JSON Pointer а не слепой retry.

# Иллюстративные переменные окружения — секреты вне git export OPENAI_BASE_URL="http://127.0.0.1:8742/v1" export STRANDS_HTTP_TIMEOUT_S=62 export OPENCLAW_GATEWAY_TIMEOUT_S=55 export OPENCLAW_JSON_SCHEMA_VALIDATE_TIMEOUT_S=8 export OPENCLAW_BREAKER_THRESHOLD=3 export OPENCLAW_BREAKER_COOLDOWN_S=30 export STRANDS_TOOL_ALLOWLIST_PATH="$HOME/openclaw-scratch/config/strands-tools.yaml" export STRUCTURED_LOG_PATH="$HOME/openclaw-scratch/logs/strands-workflow.jsonl"

Воспроизводимые шаги для инженерного журнала

  1. Среда. Node 22 LTS, venv Strands, зафиксированные клиенты, пути для launchd или systemd user.
  2. OpenClaw. gateway listen на 127.0.0.1, токен chmod 600, openclaw doctor --json в артефакты релиза.
  3. Доступ. SSH reverse tunnel или mesh, без публичного ingress, токены не в репозитории рабочего процесса.
  4. Списки. Фатальный старт при любом расхождении имён Strands и шлюза.
  5. Схемы. JSON Schema на маршрут, таймаут валидации, HTTP клиент Strands чуть выше предохранителя шлюза.
  6. Ошибки. Конверт correlation_id stage code pointer ремедиация для ветвления оркестратора.
  7. Дым. Успех, нарушение enum, заторможенный upstream — проверка breaker и JSONL.

Разбор типичных сбоев

  • Инструменты пропали после минорного обновления. Снова выполните openclaw doctor, сравните манифесты маршрутов шлюза и проверьте не ужесточились ли флаги видимости сессии в закреплённой версии.
  • Circuit breaker открывается пока модель ещё стримит текст. Невалидный структурированный JSON считается отказом; расширьте схему или ужесточите промпт, не отключайте валидацию в продакшене.
  • SSH туннель рвётся ночью. Включите TCP keepalive на клиенте и сервере, назначьте владельца runbook и алерт по проверке здоровья шлюза с тем же путём что и прод трафик.

Три цифры которые можно цитировать на ревью архитектуры

  • Держите таймаут валидации схемы восемь секунд или меньше когда внешний HTTP бюджет близок к минуте на загруженных хостах.
  • Открывайте circuit breaker после трёх последовательных отказов с охлаждением тридцать секунд и требуйте явного подтверждения человека перед автоматическим half-open.
  • Выравнивайте потолок шлюза на пять–семь секунд ниже клиентского дедлайна чтобы сеть и сериализация оставляли запас на JSON конверт ошибки без обрыва.
  • Ротируйте JSONL еженедельно и сжимайте файлы более двухсот мегабайт чтобы диск на Apple Silicon не деградировал при всплесках трафика и длительных ночных прогонах.

FAQ

Нужна ли локальная валидация JSON в Strands? Да для скорости разработки но шлюз остаётся авторитетным источником контракта чтобы все вызывающие стороны делили одну политику отказов.

Где размещать повторы? Рабочий процесс выполняет ограниченный ремонт структурированных полей; OpenClaw владеет транспортно-осознанным backoff после того как circuit breaker снова пропускает трафик.

Публично без входа: тарифы, оформление узла, центр помощи, главная LlmMac, блог.

Итог: зеркалируйте минимальный набор инструментов Strands на OpenClaw, валидируйте JSON Schema под отдельным таймаутом, выровняйте предохранители шлюза с клиентскими дедлайнами и возвращайте обезличенные failure summary чтобы рабочие процессы на удалённом Mac оставались аудируемыми и с минимальными привилегиями по умолчанию.