Командам eval-driven development нужен повторяемый контур: OpenClaw как единая политика для модели и инструментов, Braintrust для прогонов, а JSON Schema — чтобы структурные баллы не ломали downstream до фиксации метрик; без бюджета токенов на шлюзе ночной прогон превращается в дорогой сюрприз.

Оглавление: ограничения · матрица Braintrust и Helicone · минимальные права · датасет · таймауты · отчёт · шаги · ориентиры · FAQ

Ниже — воспроизводимая схема для удалённого Mac mini M4 с Node 24. Параллельный материал про учёт и маршруты Heliconeотдельная статья; здесь фокус на оценке качества, а не на продакшен-прокси. Дополнительно полезны PydanticAI и схемы и Instructor с JSON Schema для сопоставления подходов к структурированному выводу. Так вы держите единый язык контрактов между командами данных и платформы.

Три узких места до первого прогона

  1. Смешение ролей токенов: один и тот же секрет нельзя совмещать для записи в Braintrust и для широкого доступа к шлюзу; иначе утечка логов раскрывает оба периметра сразу.
  2. Молчаливый провал валидации: если не ограничить Ajv по времени и размеру схемы, зависший compile съест весь слот eval, а агент продолжит галлюцинировать успех.
  3. Дрейф датасета: без read-only монтирования и хэша манифеста вы сравниваете разные корпуса между ночными билдами и теряете доверие к регрессии.

Матрица: Braintrust Eval против контура Helicone

Критерий Braintrust Eval за шлюзом Helicone за шлюзом (прод)
Цель Воспроизводимые прогоны, сравнение веток, структурные баллы по схеме Трассировка, бюджеты RPM/TPM, выравнивание /v1/models
Артефакт Эксперименты, таблицы метрик, вложенные JSON ошибок валидации Ленты запросов, счётчики, карты маршрутов к провайдеру
Строгий вывод Обязательная JSON Schema для баллов до записи Не заменяет семантическую проверку ответа модели
Риск Дорогой fan-out вызовов при широком allowlist инструментов Расхождение идентификаторов модели и клиентских ожиданий
Совместимость Обычно Node 24 и SDK Braintrust в раннере HTTP-прокси совместим с большинством OpenAI-клиентов

Минимальные права шлюза и белый список инструментов OpenClaw

Опишите политику в виде явного списка имён инструментов и HTTP-глаголов; всё остальное отклоняйте до входа в цепочку модели. Для каждого разрешённого инструмента задайте отдельный лимит токенов на вызов и глобальный дневной потолок на шлюзе, чтобы ночной eval не утащил квоту продакшена, если секреты случайно указывают на тот же кластер. Версионируйте файл политики строкой policy_version и передавайте её в заголовок отчёта Braintrust для корреляции.

Монтирование набора данных оценки и изоляция эталона

Смонтируйте JSONL с примерами как read-only; вычислите SHA-256 манифеста и сохраните рядом с конфигом CI. На удалённом Mac через SSH проверьте, что пользователь раннера не имеет прав записи в каталог эталона. Для больших корпусов используйте потоковое чтение в Node 24, чтобы не держать весь файл в памяти процесса оценки.

Таймауты валидации JSON Schema и предохранитель цепочки

Разведите три таймбута: сеть к модели через OpenClaw, выполнение инструмента и фазу validate. При превышении любого порога формируйте компактный failure summary с кодом, указателем на поле схемы и остатком бюджета токенов на шаг, без вставки сырого текста пользователя. Дополнительно ограничьте глубину вложенности объектов в схеме и отключите небезопасные расширения draft, чтобы злоумышленный ответ модели не раздувал CPU на парсинге.

// Node 24: пример разнесения таймаутов (псевдокод) const modelBudgetMs = 45_000; const toolBudgetMs = 12_000; const ajvBudgetMs = 800; // validate в отдельном таймере; при ошибке — summary в Braintrust

Отчёт Braintrust и обратная передача failure summary

После каждого кейса записывайте объект метаданных: длительность шагов, счётчик токенов на шлюзе, флаг успеха Ajv и хэш схемы. При сбое сериализации или несоответствии типов прерывайте цепочку и помечайте кейс как schema_reject, чтобы дашборд Braintrust не смешивал несравнимые результаты. Экспортируйте nightly CSV только из узла с зафиксированным образом macOS.

Шаги воспроизведения на удалённом Mac

Шаг 1. Установите Node 24 через официальный дистрибутив или менеджер версий и закрепите его в PATH раннера. Шаг 2. Разверните OpenClaw по актуальной документации 2026.5.x и проверьте health на loopback. Шаг 3. Подключите Braintrust SDK с отдельным project id и вынесите ключи в защищённый env. Шаг 4. Смонтируйте read-only датасет и пропишите хэш манифеста в конфиге прогона. Шаг 5. Включите allowlist инструментов и загрузите JSON Schema баллов в строгом режиме Ajv. Шаг 6. Запустите пилот на десяти кейсах, сравните burn rate токенов с порогом и только затем включайте полный корпус.

Цифры и контрактные ориентиры для слайда

  • Три бюджета: токены на шаг, секунды на validate, число разрешённых инструментов за кейс.
  • Два ключа: токен шлюза OpenClaw и ключ Braintrust в разных переменных окружения.
  • Один хэш: SHA-256 манифеста датасета в каждом отчёте для аудита воспроизводимости.

FAQ

Можно ли совместить Helicone и Braintrust в одной цепочке? Да, но разведите цели: Helicone оставьте для продакшен-трафика, а Braintrust и строгую схему — на изолированный eval-хост, чтобы счётчики не мешали друг другу.

Нужен ли отдельный Mac под eval? Рекомендуется арендованный узел с фиксированным железом, чтобы сравнение веток не зависело от фоновых процессов ноутбука.

Что логировать при ошибке Ajv? Только код ошибки, pointer, имя поля и длительность validate; не пишите содержимое промпта в открытый лог.

Навигация без входа: главная, технический блог, тарифы, покупка и аренда, документация.

Итог: отделите Braintrust Eval от продакшен-наблюдаемости Helicone, закрепите JSON Schema и таймауты на шлюзе OpenClaw, монтируйте датасет read-only и ведите компактные failure summary; тогда команда получит сопоставимые ночные метрики на удалённом Mac с Node 24.