Перейти к содержимому

Кейс: как ускорить кодинг-агента — уроки Bullet (95.8% SWE-bench Verified за 119 секунд)

13 августа 2026 года на Hacker News вышел Launch HN: Bullet (YC S26) — A Faster Coding Agent. Цифры из анонса: 479 из 500 задач SWE-bench Verified решены за одну попытку, 119 секунд среднее время на задачу, $0.73 за задачу, ноль пустых патчей. Сооснователи Ади и Алекс до этого месяцами ждали, пока Claude Code и Codex отработают над шестью их кодовыми базами, разозлились и написали собственную обвязку агента — слой между моделью и инструментами, который решает, что читать, что запускать и в каком порядке.

Сам Bullet — продукт двухнедельной давности: бенчмарк-пост опубликован 30.07.2026, Launch HN — 13.08.2026, все цифры ниже актуальны «на момент публикации». Копировать агента не нужно. Но пять приёмов, на которых он держится, переносятся на любой кодинг-агент: роутинг моделей, гигиена контекста, батчинг независимых действий, таргетированный поиск по коду вместо эмбеддингов всего репозитория и правило «скорость модели важна меньше, чем число round-trips». Разбор этих приёмов — ниже, цифры здесь работают как доказательство, а не как реклама.

Откуда взялись цифры: Bullet и его бенчмарк

Bullet — десктоп-приложение (macOS, Linux) и CLI-клиент, который работает поверх моделей OpenAI-совместимых API. На сайте проекта — «private beta, free access, no subscriptions», установка CLI в одну команду:

npm install -g @trybullet/cli
Скриншот официального бенчмарк-поста Bullet: 95.8% на SWE-bench Verified
Официальная страница результатов: 479/500 задач, 119 с среднее и 104 с медиана на задачу, $0.73 за задачу, 0 пустых патчей. Источник: codewithbullet.com/blog/benchmark-results.html, 30.07.2026.

Что такое SWE-bench Verified: 500 реальных GitHub-задач из популярных Python-репозиториев, отобранных людьми; агент должен предложить патч, который проходит официальный контейнерный прогон тестов проекта. Частичных баллов нет — патч либо проходит, либо нет. В прогоне Bullet: одна попытка на задачу (K=1), без ресемплинга и реранков, 500 из 500 задач выполнены без ошибок харнесса, две трети всех задач укладываются в две минуты, все 500 — в 7 минут 1 секунду. Полные логи и патчи всех 500 задач выложены на Hugging Face (daviddata1/bullet-swebench-verified).

Разбивка по репозиториям из того же поста: scikit-learn 32/32, pytest 19/19, Django 96.5% (самый большой срез — 231 задача), самый сложный репозиторий — astropy, 18/22. Всего 21 промах — «туда и спрятаны следующие очки».

Сравнительная диаграмма из бенчмарк-поста Bullet
Диаграмма «точность × время × стоимость» из бенчмарк-поста: Bullet на своём продакшн-харнессе против моделей Claude Opus 5, GPT-5.6 Sol и Claude Fable 5, прогнанных Vals на харнессе mini-swe-agent. Источник: codewithbullet.com/blog/benchmark-results.html.

Почему эти цифры нельзя читать буквально

Прежде чем разбирать приёмы, стоит очертить, что доказано, а что нет. Сравнение в посте не симметричное: строки Vals (Claude Opus 5 — 97.0%, GPT-5.6 Sol — 96.2%, Claude Fable 5 — 95.0%) получены одним харнессом mini-swe-agent, а результат Bullet — его собственным продакшн-харнессом. Сопоставлять напрямую нельзя — это два разных слоя, а не «Bullet быстрее Opus 5».

Второй момент всплыл прямо в комментариях к Launch HN. Пользователь seizurethecheese заявил, что результат «по сути бессмысленен»: на зрелом бенчмарке почти все топ-модели сидят у потолка ~95%, и 95.8% не отделяет харнесс от модели. Сооснователь alsima ответил, что в бенчмарке роутер вообще не участвовал:

The benchmark wasn’t evaluated with the router, we wanted an apples-to-apples comparison of our harness against other harnesses like mini-swe-agent on the same models.

Бенчмарк прогнан без роутера: мы хотели честно сравнить нашу обвязку с другими обвязками вроде mini-swe-agent на одних и тех же моделях.

комментарий alsima к Launch HN Bullet

То есть рекламируемая точность получена одной сильной моделью (GPT-5.6 Sol) на собственном харнессе, а роутер работает только в живой версии. Ценность бенчмарка — не «95.8%» само по себе, а скорость и стоимость: те же модели через mini-swe-agent, по замерам авторов, работают на 35–67% медленнее. Именно это и стоит переносить в свои проекты.

Урок 1. Роутинг моделей: не гонять Fable на задаче уровня Sonnet

Первый пункт из анонса сформулирован как вопрос к самому себе:

  1. Model routing. Do you regret giving a task to Fable when it could have literally been done by Sonnet?

  2. Роутинг моделей. Тебе не жалко отдавать задачу Fable, когда её можно было сделать на Sonnet?

Launch HN: Bullet

Смысл: разные шаги одной задачи требуют разной модели. «Поправить опечатку в README» и «спроектировать миграцию базы данных» — не один уровень сложности, и гонять на обоих самую дорогую модель значит платить в разы больше и ждать дольше. Bullet ставит между задачей и моделями роутер, который сам решает, кому отдать шаг, и повышает модель только если задача этого требует (на сайте это протокол «ROUTE / ESCALATE»).

Схема: роутинг моделей в Bullet
Схема автора статьи по материалам Launch HN и сайта Bullet: простая задача → быстрая модель, сложная → сильная; в бенчмарке роутер не участвовал.

Роутинг не требует покупки Bullet. В Claude Code это сабэдженты: можно завести быстрый сабагент для поиска по коду на лёгкой модели и отдельный — для правок на сильной, а главный агент оставляет за собой планирование. В OpenCode модели назначаются под каждый сабэдженту. Правило простое: если вы разово пишете промпт и ждёте ответа — модель не важна; если агент делает 50 вызовов за задачу — экономия на недорогих вызовах суммируется.

Урок 2. Гигиена контекста: мусор не должен заливать модель

Третий пункт анонса — про гигиену контекста:

  1. Aggressive context hygiene. Tool output is bounded, stale screenshots disappear, we don’t re-read files…the garbage never floods the model.

  2. Жёсткая гигиена контекста. Вывод тулзов ограничен, устаревшие скриншоты исчезают, файлы не перечитываются… мусор никогда не заливает модель.

Launch HN: Bullet

Три конкретных механизма, и каждый воспроизводится руками:

  • Ограничение вывода тулзов. grep -R по репозиторию может выдать десятки тысяч строк. Bullet обрезает вывод до рамок, иначе токены на «хвост» лога тратятся впустую, а модель начинает «видеть» шум. То же самое делает человек: вместо cat log.txttail -n 50, вместо dump всей таблицы — LIMIT 20.
  • Устаревшие скриншоты исчезают. В браузерных агентах скриншот — единственный источник правды о странице, но он устаревает после любого клика. Держать в контексте четыре старых скриншота и один свежий — значит давать модели противоречивые данные.
  • Файлы не перечитываются. Если файл не менялся между шагами, повторное чтение — это лишние токены и лишний round-trip. Харнесс должен помнить, что уже в контексте, и не дублировать.

Отдельный вопрос, который подняли в комментариях: удаление кусков истории инвалидирует KV-кеш, и компактная история иногда дороже длинной. На практике это значит, что гигиена — про не добавлять мусор, а не про агрессивно вырезать старое. Подробнее про механику контекста и его переполнение — в нашей статье про файлы-конвенции AGENTS.md и обзоре агентного кодинга.

Урок 3. Батчинг независимых действий: 16% меньше round-trips, 27% ниже стоимость

  1. Efficient turns. Batch independent investigation, make one surgical edit, then perform one focused verification. Internal measurement showed 16% fewer round trips and 27% lower cost.

  2. Эффективные ходы. Пакет независимого исследования, затем одна точечная правка, затем одна сфокусированная проверка. Внутренний замер: на 16% меньше round-trip’ов и на 27% ниже стоимость.

Launch HN: Bullet

Каждый round-trip — это минимум один сетевой запрос, один ход модели, одно ожидание. Четыре независимых поиска по коду можно отправить одним вызовом, и они отработают параллельно; правку нельзя делать, пока не получены результаты поиска, поэтому она стоит следом; проверка — после правки. Итоговая цепочка: «параллельное исследование → правка → проверка» вместо «поиск → поиск → поиск → правка → проверка».

Схема: батчинг независимых действий
Схема автора статьи по материалам Launch HN: последовательные вызовы против одного параллельного пакета; зависимые правка и проверка остаются отдельными шагами.

В своих проектах батчинг включается тем же способом: не задавать агенту вопросы по одному. Один промпт «посмотри, где определяется auth, как устроен роутер и какие тесты его покрывают» быстрее трёх отдельных. В связке с MCP и сабэджентами это же работает на уровне инструментов: независимые вызовы инструментов выполняются параллельно.

Урок 4. Таргетированный поиск по коду вместо эмбеддингов всего репозитория

  1. Targeted code + context search. We think embedding the whole repo is dumb. We also think sticking the whole context (or compressed context) in chat is dumb. So we do faster and better greps over both.

  2. Таргетированный поиск по коду и контексту. Эмбеддить весь репозиторий — глупо. И пихать в чат весь контекст (или сжатый контекст) — тоже глупо. Поэтому мы делаем более быстрые и точные grep по обоим.

Launch HN: Bullet

Два распространённых подхода Bullet сознательно не использует: векторные эмбеддинги всего репозитория и «давай я прочитаю проект целиком». Вместо этого — точечные запросы по коду и по уже собранному контексту, с ограниченным результатом. И отдельная деталь, которая дорого обошлась авторам на практике:

One surprising obstacle was code search, small issues like regex-dialect mismatches caused silent misses and sent agents down completely wrong paths, so we built targeted search with fallbacks and bounded context.

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

Launch HN: Bullet

Тихий промах поиска — страшнее медленного: агент уверенно работает с неверным фрагментом и генерирует патч в никуда. Отсюда правило для своих проектов: давать агенту стартовый каркас — сигнатуры функций, схему модулей, список файлов — и проверять, что найденное действительно то, что искали. Один из способов — файл-конвенция с описанием структуры проекта, как в нашем разборе AGENTS.md.

Урок 5. Model speed меньше, чем round-trips

Самый важный вывод авторы вынесли отдельным абзацем:

In our development, the biggest insight was that model speed matters less than reducing round trips. Independent searches, reads, and commands should happen in parallel, while dependent editing and verification stay sequential.

Главный инсайт: скорость модели значит меньше, чем сокращение round-trips. Независимые поиски, чтения и команды должны выполняться параллельно, а зависимые правки и проверки — последовательно.

Launch HN: Bullet

Контраргумент в комментариях привёл пользователь Terretta: Cerebras уже гоняет модели со скоростью 750 токенов в секунду, и при такой скорости обвязка перестаёт быть узким местом. Сооснователь согласился, но заметил, что более быстрый инференс ускоряет только генерацию: тесты, сборка и поиск по коду по-прежнему занимают большую часть реальных задач. Проверка тестами и сборка — это wall-clock время, которое модель не ускорит: пока пакет установлен и тест прогнан, 750 токенов/с ничего не меняют.

Практический вывод: если агент «думает» слишком долго, сначала считайте round-trips, а не меняйте модель. Двадцать последовательных мелких шагов почти всегда медленнее шести батчей, даже на более слабой модели.

Схема: три протокола ускорения Bullet — ROUTE, SEARCH, PARALLEL
Схема протоколов ROUTE / SEARCH / PARALLEL — те самые приёмы, которые разобраны в этой статье (по материалам codewithbullet.com).

Как перенести эти уроки на свой агент: чек-лист

Пять приёмов Bullet складываются в короткий список действий для любого инструмента — Claude Code, Codex CLI или самописной обвязки:

  1. Разделите модели по ролям: быстрый сабагент для поиска и чтения, сильная модель для правок и проверок. Экономию считайте в долларах на задачу, а не на токен.
  2. Ограничьте вывод: tail, LIMIT, --max-count. Всё, что не влезает в лимит, — шум.
  3. Собирайте несколько независимых вопросов в один промпт и проверяйте, что поиск вернул то, что нужно.
  4. Планируйте проверку заранее: тест, который должен пройти после правки, — до начала правки. Разбор этого подхода на реальном кейсе — в истории переписывания легаси с ИИ.
  5. Измеряйте round-trips: до и после изменений. Цифры Bullet — 16% меньше вызовов и 27% ниже стоимость — хороший ориентир, но на вашем проекте разница будет своя.

Российские реалии: Bullet, оплата и что доступно

Доступность. Дистрибутивы Bullet лежат на GitHub (trybullet/bullet-releases — публичный репозиторий с релизами), CLI ставится из npm. GitHub и npm из России не блокируются, так что сама установка VPN не требует — это скорее исключение для продуктов YC. Нюанс: веб-версия и десктоп-приложение просят аккаунт, гостовой режим авторы обещали добавить «прямо сейчас» (обсуждение в комментариях). При регистрации по умолчанию включён пункт «share chats with Bullet» — обмен чатами с командой продукта для улучшения роутинга, его нужно отключать, если приватность важна.

Скриншот GitHub-репозитория trybullet/bullet-releases
Публичный репозиторий с релизами Bullet — «Public release downloads for Bullet desktop builds». Источник: github.com/trybullet/bullet-releases.

Оплата. На момент публикации Bullet — бесплатная приватная бета без подписок, то есть главной российской проблемы — оплаты зарубежной картой — сейчас нет. Когда (и если) появится платный тариф, он упрётся в те же схемы, что и все сервисы на Stripe: иностранная карта, UnionPay, посредники (разбор оплаты зарубежных AI-подписок на Хабре).

Модели. Бенчмарк Bullet прогнан на GPT-5.6 Sol от OpenAI, а OpenAI блокирует доступ с российских IP с декабря 2022 года (объяснение ограничений на Хабре). В CLI можно подключить любой OpenAI-совместимый endpoint — свой base URL и ID модели (ответ автора в комментариях), так что российский контур в теории заводится на локальные модели через Ollama (наш гайд) или на доступные из РФ провайдеры.

Сравнение с доступными в РФ агентами. Честно: русскоязычных материалов именно про Bullet нет — продукту две недели, поиск по Habr, vc.ru и Tproger на момент публикации ничего не отдаёт. Тема в рунете не освещена. По смежным темам живой опыт есть: сравнение CLI-агентов Claude Code, Codex и Kimi на одной задаче (август 2026), обзор Claude в России 2026 (гео-блокировка и способы оплаты) и опыт вайбкодинга без VPN и зарубежных карт. Прикинуть Bullet по шкале «точность/цена» среди привычных инструментов можно в нашем сравнении ИИ для кодинга.

Ограничения: что осталось за кадром

  • Один бенчмарк, один прогон. 479/500 — это один замер на одном наборе задач. Авторы сами признают, что 95.8% на зрелом бенчмарке не главное доказательство, и анонсируют прогоны на Terminal-Bench, CursorBench и SlopCodeBench — «менее насыщенных» бенчмарках.
  • Сравнение несимметрично. Строки Vals — это модели на mini-swe-agent, строка Bullet — модель на собственном харнессе. Разные харнессы, разная методология.
  • Роутер вне бенчмарка. Рекламируемая точность получена одной моделью, а не «умной» системой роутинга. Что даёт роутер на практике, цифрами не показано.
  • Продукту две недели. Репозиторий с релизами — один коммит, одна звезда. Авторы оперативно отвечают в комментариях и правили продукты за дни, но долгой истории нет.
  • Насыщенный бенчмарк. Критики справедливо указывают: разница между 95.8% и 97.0% на таком наборе может быть шумом, а не качеством харнесса. Ценность кейса — в скорости и стоимости, а не в «рекорде точности».
  • Приватность. Аккаунт, опция отправки чатов по умолчанию, отсутствие гостевого режима на старте — это надо учитывать, прежде чем гонять на Bullet рабочий код.

Вывод

Bullet — не открытие нового класса инструментов, а хорошо отлаженная комбинация пяти приёмов, каждый из которых воспроизводим в существующих агентах. Роутинг моделей экономит деньги, гигиена контекста — токены и внимание модели, батчинг — round-trips, таргетированный поиск — время на пустые блуждания по репозиторию. Главный инсайт — скорость модели вторична: пока есть тесты и сборка, узкое место — не генерация, а количество последовательных шагов.

Цифры 119 секунд и $0.73 за задачу — доказательство того, что обвязка, а не модель, часто определяет, сколько вы ждёте и платите. Проверять их на своих задачах нужно тем же способом, каким получили авторы: замером до и после. Если вы собираете агентов для своей команды или разбираете, какой ИИ-агент выбрать — эти пять приёмов и есть то, что отделяет «быстрый агент» от «агент, который долго думает».

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Adblock
detector