Alex ChernyshAlex ChernyshAI Systems Engineer · Тель-Авив
Статьи
Назад к статьям

Статья

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

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

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

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

Что делает Bernstein

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

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

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

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

Дальше - привязка. Каждый multi-agent фреймворк, что я пробовал (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