Alex ChernyshAlex ChernyshAgentic behaviorist · Тель-Авив
СтатьиАссистент
Назад к статьям

Статья

Я запустил 12 ИИ-агентов на 47 часов. Вот что выжило.

Открытый детерминированный оркестратор параллельных CLI-агентов для кодинга. Запускает Claude Code, Codex CLI, Gemini CLI параллельно — ноль координационных токенов, 37 адаптеров, верификация janitor, изоляция git worktree.

29 марта 2026 г.·6 мин чтения
Agents
На странице(7)
Потолок одного агентаЧто реально сломалосьОдна командаАрхитектураЛюбой агент, любая модельЦифрыТри команды

Обновление — май 2026

С момента публикации Bernstein вырос до 37 адаптеров агентов, облачного выполнения на Cloudflare и отдельного сайта. Эта статья остаётся как история происхождения — за обновлениями следите на bernstein.run и в блоге проекта.

Двенадцать ИИ-агентов. Одна кодовая база. Сорок семь часов. 737 закрытых тикетов, 826 коммитов. Всё, что могло сломаться, сломалось. Оркестратор, который я написал, чтобы можно было поспать, теперь в open source.

Что делает Bernstein

  • детерминированный планировщик, координация не тратит LLM-токены
  • без привязки к вендору: работает с Claude Code, Codex CLI, Gemini CLI, Qwen, Aider и любым CLI-агентом
  • короткоживущие агенты (минуты на задачу, контекст не уплывает)
  • встроенная верификация: janitor прогоняет тесты до коммита
  • self-evolution: анализирует метрики и предлагает изменения
TUI-дашборд
TUI-дашборд Bernstein с параллельными агентами
Управление задачами прямо в терминале — статус, агенты, прогресс, расходы.
Веб-дашборд
Веб-дашборд Bernstein
Браузерный мониторинг — агенты, стоимость, очередь мержей, лог активности.

Потолок одного агента

Обещание ИИ-ассистентов для кода звучит просто. Промпт, код, ревью, готово. На практике потолок ниже, чем в демо.

Нянчишь одного агента, одно контекстное окно, одну задачу. Через час модель плывёт. Галлюцинирует сигнатуры. Забывает ограничения. Объясняешь заново. Плывёт опять. Девять других задач стоят.

Дальше — привязка. CrewAI, Microsoft Agent Framework (бывший AG2), LangGraph — оркестрация всё равно привязана к одному API провайдера. Дешёвая модель на boilerplate и сильная на архитектуру в одном запуске? Не выйдет.

Разрыв между «ИИ пишет код» и «ИИ шипает протестированный код с чистой git-историей» — это та часть, которую не показывают в демо.

Что реально сломалось

Направил 12 агентов на реальный backlog, чтобы посмотреть, что будет.

Цифры

  • 12 агентов на одном ноутбуке, 47 часов непрерывно
  • 737 тикетов закрыто (15.7 в час)
  • 826 коммитов
  • несколько моделей в одном запуске

Что сломалось. Merge conflicts от двух агентов, редактирующих один файл. Port collisions от одновременных dev-серверов. Один агент сжёг $40 в цикле повторов. Агенты затирали работу друг друга, потому что не было файловых блокировок. Долгоживущие агенты плыли, пока их код не начинал противоречить их же собственному раннему коду. Где-то на тридцатом часу я поймал 30 orphan claude процессов за один час. Реальный балаган.

Каждое архитектурное решение в Bernstein — прямой фикс чего-то, что сломалось в том запуске. Это шрамы, переписанные как README.

Инструмент

Одна команда

pipx install bernstein
bernstein -g "Add JWT auth with refresh tokens, tests, and API docs"

Bernstein разбивает цель на задачи, назначает каждой агента с нужной моделью и ролью, запускает их в изолированных git worktree, проверяет, что тесты проходят, и коммитит выжившее. Возвращаешься к работающему коду или к отчёту, что сломалось.

Архитектура

Ближайшая аналогия — то, что Kubernetes сделал для контейнеров, но для CLI coding agents. Задаёшь цель. Control plane декомпозирует её в задачи. Короткоживущие агенты выполняют их в изолированных worktree как поды. Janitor проверяет результат до того, как что-то попадёт в код.

Оркестратор — детерминированный Python. Ноль токенов на координацию. Никакой LLM не решает, что делать дальше. Никакого недетерминизма в scheduling. Никакой рекурсии agent-manages-agents. Только начальная декомпозиция цели обращается к LLM. Дальше — код.

Как цель становится кодом
Только декомпозиция и работа агентов задействуют LLM. Остальное — детерминированный код.

Короткоживущие агенты. Спавн, работа в минутах, выход. Нет context drift. Если задача упала, retry со свежим агентом. Старого уже нет.

File-based state. Всё живёт в .sdd/, обычные файлы в репозитории. Смотри, диффай, версионируй. Ничего не прячется в памяти.

Janitor. Каждый результат проверяется. Тесты пройдены, файлы на месте, регрессий нет. Агенты сами себя не сертифицируют.

Open API. Локальный HTTP-сервер на порту 8052. Любой CI pipeline, Slack-бот или cron job может создавать задачи. Bernstein встраивается в workflow. Не заставляет перестраиваться вокруг себя.

Без привязки

Любой агент, любая модель

Bernstein работает с любыми установленными CLI-агентами. Claude Code на архитектуру, Codex на тесты, Gemini на документацию, в одном запуске. Добавить нового агента — это 50 строк Python-адаптера.

BernsteinCrewAIAG2 / Agent Framework1LangGraph
SchedulingДетерминированный кодLLM-basedLLM-basedGraph
Время жизни агентаКороткое (минуты)ДолгоеДолгоеДолгое
ВерификацияВстроенный janitorВручнуюВручнуюВручную
CLI agentsЛюбые установленныеТолько APIТолько APIТолько API
Model lock-inНетМягкийМягкийМягкий

Когда Claude Code выпускает новую версию, улучшение приходит бесплатно. Появляется новый CLI agent — присоединяется к пулу. Оркестрационный слой не знает, какой агент делает работу.

Цифры

Цифры

1.78x пропускная способность против single-agent baseline на том же наборе задач. Не маркетинговый 10x. Измеренный результат с overhead на координацию внутри.

23% ниже стоимость. Короткие контекстные окна тратят меньше input-токенов. Микширование моделей направляет дешёвые задачи на дешёвые модели.

4250+ тестов в самом репозитории Bernstein. Каждая задача, выполненная агентом, проходит верификацию по этому набору.

Budget caps. --budget 5.00 предупреждает на 80%, алертит на 95%, жёстко останавливает на 100%. Несущая инфраструктура, а не театр безопасности.

Self-evolution. bernstein --evolve анализирует метрики и предлагает изменения промптов и правил маршрутизации. Risk-gated. L0 применяется автоматически. L3 требует одобрения. Circuit breaker останавливает при регрессии тестов.

Когда self-evolution имеет смысл

Полезно после нескольких сотен завершённых задач — достаточно сигнала, чтобы понять, какие модели работают для каких типов задач. На свежем проекте с десятью задачами данных не хватит.

Начало работы

Три команды

pipx install bernstein
cd your-project && bernstein init
bernstein -g "Your goal here"

Для CI есть GitHub Action:

- uses: chernistry/bernstein-action@v1
  with:
    goal: "Fix all failing tests and update snapshots"
    budget: "5.00"

Инструмент молодой, шероховатостей хватает. Если на что-то наткнулись, откройте issue. Интересная задача — заставить много агентов не наступать друг другу на ноги, а не сделать одного агента умнее.

GitHubДокументацияПродуктовая страницаGitHub ActionProduct Hunt
Featured onBernstein - Spawn parallel AI agents. Ship tested code. | Product Hunt

Footnotes

  1. AutoGen перешёл в режим поддержки и был заменён Microsoft Agent Framework (апрель 2026). ↩

✓ Reading complete

Alex ChernyshAlex ChernyshApplied AI Systems & Platform Engineer

Ещё по теме Agents

Часть публичных заметок про AI-системы с опорой на источники: поиск, evals и поставку под реальными ограничениями.

  • →Как строить агентные AI-системы, которые держатся в проде2 мар. 2026 г.·4 мин чтения
  • →RightLayout: как я выпустил Mac AI-инструмент и отдал его сообществу8 мая 2026 г.·6 мин чтения
  • →Ищешь работу? Налей себе. Поищем за тебя.23 апр. 2026 г.·3 мин чтения
На странице
  • 01Потолок одного агента
  • 02Что реально сломалось1 min
  • 03Одна команда
  • 04Архитектура1 min
  • 05Любой агент, любая модель1 min
  • 06Цифры1 min
  • 07Три команды1 min