SanityHarness CLI

Стенд оценки кодинг-агентов: 26 компактных задач на 6 языках в контейнерах Docker, взвешенный балл и проверка целостности

  • 244 ★ репозитория
  • Последний коммит
CLI

Расширенный доступ

Почему такой уровень

  • Запускает выбранного агента в контейнерах Docker, а тот может выполнять любые команды внутри них
  • Прогон тратит токены и лимиты выбранного агента и модели
  • Агенты получают доступ к вашим ключам API, если вы передаете их контейнеру
Все причины и проверки

lemon07r/sanityharness

Установка

Ручная установка

git clone https://github.com/lemon07r/sanityharness.git
cd sanityharness
make tools
make build

Нужны Go 1.25 и Docker; bubblewrap по желанию для изоляции агента. Готовые бинарники лежат в релизах.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Запускает выбранного агента в контейнерах Docker, а тот может выполнять любые команды внутри них
  • Прогон тратит токены и лимиты выбранного агента и модели
  • Агенты получают доступ к вашим ключам API, если вы передаете их контейнеру

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

SanityHarness прогоняет кодинг-агента через 26 небольших, но трудных задач на Go, Rust, TypeScript, Kotlin, Dart и Zig. Каждая задача идет в отдельном Docker-контейнере: он запускается с `sleep infinity`, а команды исполняются через `docker exec`, поэтому контейнеры используются повторно. Баллы взвешены эмпирическими коэффициентами сложности, и результат сопровождается подробным отчетом. Встроено 19 агентов, среди них Gemini, Claude, OpenCode, Codex и Goose. Команда `sanity eval --agent gemini` запускает оценку, а флаги `--tier all`, `--parallel 4` и `--dry-run` задают набор задач, параллельность и предпросмотр. Скрытые тесты подключаются только при оценке, а проверка BLAKE3 подтверждает целостность присланных результатов. `sanity run` с `--watch` перезапускает тесты при изменении файлов, `sanity init` создает рабочее место с заготовками. При наличии bubblewrap агент изолируется в своем рабочем каталоге, а кэши сборки в `.sanity-cache/` ускоряют повторные запуски.

Для кого. Командам и исследователям, которые сравнивают кодинг-агентов и модели на одинаковых задачах и хотят воспроизводимую оценку с защитой от подгонки.

Подходит, если

  • Claude, Codex и Gemini надо сравнить на одинаковом наборе задач с весами сложности
  • Ведется свой список результатов, и подписи BLAKE3 защищают присланные данные
  • Четыре задачи идут параллельным прогоном с общим отчетом
  • Агент запускается в изоляции и видит только свой рабочий каталог
  • Перед запуском хочется увидеть план оценки командой с `--dry-run`

Не подходит, если

  • Нужна проверка на вашем кодовом репозитории: набор состоит из 26 учебных задач, а не из вашего кода
  • Docker недоступен: каждая задача выполняется только в контейнере
  • Нужна оценка на других языках: в наборе шесть языков

Пример запроса к агенту

Запусти `sanity eval` для агента claude на базовом наборе задач с --parallel 4 и покажи итоговый балл

Ограничения

Для работы нужны Go 1.25 и запущенный демон Docker, а bubblewrap по желанию добавляет изоляцию агента. Сборка идет из исходников через `make build`, готовые бинарники лежат в релизах. Набор небольшой, 26 задач на шесть языков, поэтому результат отражает только этот набор. Версия 1.8 доступна в релизах и на таблице результатов, а для сравнения со старыми данными автор советует версию 1.6.1 с флагом `--legacy`. Последний коммит сделан в октябре 2026 года.

Как отключить. Удалите собранный бинарник `sanity` и каталог репозитория, остановите и удалите контейнеры Docker командой docker rm, а кэш `.sanity-cache/` в рабочих папках удалите вручную.

Частые вопросы

Что входит в набор задач?

26 задач на Go, Rust, TypeScript, Kotlin, Dart и Zig, разделенных по уровням и сложности. Список смотрите командой `./sanity list` с фильтрами --language, --tier и --difficulty.

Какие агенты поддерживаются?

Встроены 19 агентов, среди них Gemini, Claude, OpenCode, Codex и Goose. Выбирается ключом --agent, модель задается ключом --model.

Для чего нужны скрытые тесты?

Они добавляются только при оценке, поэтому агент не может подогнать решение под известные проверки. Целостность присланных результатов подтверждается хешем BLAKE3.

Нужен ли Docker?

Да, каждая задача запускается в изолированном контейнере. Для дополнительной изоляции агента можно поставить bubblewrap.

Как решить одну задачу вручную?

Командой `./sanity init go/bank-account` создайте рабочее место с заготовками, затем `./sanity run go/bank-account` запускает тесты, с флагом --watch перезапускает при изменении файлов.

Обсуждение

Вопросов и отзывов пока нет.

Прогоняет Claude Code, Codex, Gemini и OpenCode по YAML-задачам в песочнице, оценивает результат и ставит проверку в CI

CLIШирокий доступ160Звезды репозитория

CLI оценивает зрелость обвязки ИИ-агента в репозитории от L0 до L4: 36 проверок по файлам, без вызовов моделей и сети.

CLIМинимальный доступ619Звезды репозитория

Форк Harbor для оценки кодовых агентов в песочницах: Claude Code, Codex и другие запускаются в задачах без интернета.

CLIРасширенный доступ231Звезды репозитория
Официальный

CLI Vercel для проверки кодинг-агентов на вашем фреймворке: запускает Claude Code, Codex и другие, считает долю успешных задач

CLIРасширенный доступ280Звезды репозитория

Бенчмарк проверяет браузерных агентов на 281 повседневной задаче на живых сайтах и записывает прогон в пять слоев.

CLIРасширенный доступ1,3 тыс.Звезды репозитория

Agent Reliability Analyzer статически проверяет код ИИ-агентов, находит пробелы надежности по 340 правилам и применяет исправления

ПлагинРасширенный доступ88Звезды репозитория

Коротко о README

Описание называет проект легким стендом оценки для кодинг-агентов, перечисляет возможности и быстрый старт: зависимости, сборка, глобальные флаги. Далее разобраны команды `list`, `init`, `run` и `eval`, доступные задачи, конфигурация, встроенные агенты и принцип работы контейнеров.

Бейдж для README

Сообщить о проблеме