Добавить в корзинуПозвонить
Найти в Дзене
ТАМАРОВ/MiXAIT.ru

Minions — автономные агенты-программисты Stripe, решающие задачи за один подход (Часть 1)

Агентное программирование из новинки превратилось в стандарт индустрии. Модели становятся лучше, и автономные агенты-программисты — те, что работают без участия человека, — уже перешли из разряда возможного в разряд реального. Minions — собственные агенты-программисты Stripe. Они полностью автономны и рассчитаны на то, чтобы решать задачу за один подход. Каждую неделю в Stripe вливается больше тысячи пулл-реквестов, созданных целиком minion'ами: люди их ревьюят, но не пишут в них ни строчки кода. Разработчики по-прежнему планируют задачи и работают с агентами вроде Claude и Cursor. Но внимание инженера — один из самых дефицитных ресурсов, и автономные агенты позволяют распараллелить работу. Типичный запуск minion'а начинается с сообщения в Slack, а заканчивается пулл-реквестом, который прошёл CI и готов к ревью — без единого промежуточного взаимодействия с человеком. Инженеры нередко запускают несколько minion'ов параллельно, чтобы продвигать сразу несколько задач. Особенно это помогае
Оглавление

Агентное программирование из новинки превратилось в стандарт индустрии. Модели становятся лучше, и автономные агенты-программисты — те, что работают без участия человека, — уже перешли из разряда возможного в разряд реального.

Minions — собственные агенты-программисты Stripe. Они полностью автономны и рассчитаны на то, чтобы решать задачу за один подход. Каждую неделю в Stripe вливается больше тысячи пулл-реквестов, созданных целиком minion'ами: люди их ревьюят, но не пишут в них ни строчки кода.

Разработчики по-прежнему планируют задачи и работают с агентами вроде Claude и Cursor. Но внимание инженера — один из самых дефицитных ресурсов, и автономные агенты позволяют распараллелить работу.

Типичный запуск minion'а начинается с сообщения в Slack, а заканчивается пулл-реквестом, который прошёл CI и готов к ревью — без единого промежуточного взаимодействия с человеком. Инженеры нередко запускают несколько minion'ов параллельно, чтобы продвигать сразу несколько задач. Особенно это помогает на дежурстве, когда нужно разобраться с множеством мелких проблем.

Жизненный цикл minion'а

В первой части мини-серии расскажем, как инженеры Stripe используют minion'ов и на что они способны. Во второй части разберём внутреннее устройство и подходы к реализации.

Почему мы сделали это сами?

Вайб-кодинг прототипа с нуля — совершенно не то же самое, что работа с кодовой базой Stripe.

Кодовая база Stripe — сотни миллионов строк кода в нескольких крупных репозиториях. Бэкенд по большей части написан на Ruby (не Rails) с типизацией Sorbet — стек достаточно редкий. Повсюду используются внутренние библиотеки, которые LLM изначально не знают.

Ставки высоки: через этот код в продакшене проходит больше триллиона долларов платежей в год. При этом Stripe связан множеством обязательств перед финансовыми институтами, регуляторами и комплаенсом, которые код обязан соблюдать.

LLM-агенты отлично строят ПО с нуля, когда ограничений мало. Но работать с кодовой базой масштаба, сложности и зрелости Stripe — задача принципиально иная. Люди выстраивают сложные ментальные модели, чтобы вносить изменения в наши репозитории. Научить агентов вырабатывать верные интуиции и использовать правильные инструменты в рамках контекстного окна — задача нетривиальная.

За годы Stripe выстроил фундамент продуктивности разработчиков, который поддерживает уникальные ограничения на всех этапах цикла разработки — контроль исходного кода, среды, кодогенерация, CI и многое другое. Обвязка minion'ов тесно интегрирована с этим инструментарием. Minion'ы работают с теми же инструментами, что и живые инженеры Stripe: что хорошо для людей, то хорошо и для LLM.

Как выглядит работа с minion?

У minion'ов несколько точек входа, спроектированных так, чтобы вписаться в повседневную работу инженеров. Мы предоставляем CLI и веб-интерфейс, но чаще всего minion'а запускают прямо из Slack. Достаточно тегнуть наше Slack-приложение в треде, где обсуждается задача, — и minion получит доступ ко всей переписке и ссылкам в качестве контекста.

Если вы работаете над внутренними инструментами, запуск minion'а может выглядеть так:

-2

Сообщение в Slack, запускающее minion

Запустить minion'а можно и из других внутренних приложений Stripe. Внутренняя документация, платформа фича-флагов и система тикетов — все интегрированы с minion'ами. Например, когда CI обнаруживает нестабильные тесты, автоматически создаётся тикет с предложением исправить проблему через minion.

-3

Тикет нестабильного теста с кнопкой запуска minion'а для исправления

Пока minion работает — или после завершения — инженер видит все решения и действия в веб-интерфейсе.

-4

Веб-интерфейс управления запусками minion'ов

Завершив задачу, minion создаёт ветку, отправляет её в CI и готовит пулл-реквест по шаблону Stripe. Если код в порядке, инженер открывает PR и отправляет на ревью коллеге. Если нет — можно дать minion'у дополнительные указания, и он запушит обновлённый код в ветку.

Инженер также может доработать результат вручную. Наша цель — пулл-реквест без единой строчки человеческого кода. Но даже неидеальный результат minion'а часто оказывается отличной отправной точкой.

Как устроены minion'ы?

В работе minion'а много этапов. Подробности — во второй части мини-серии. Многие детали специфичны для Stripe, но есть и универсальные уроки. Чтобы разжечь интерес — краткий обзор.

Запуск minion'а начинается в изолированной среде разработки — devbox. Это машины того же типа, на которых работают инженеры Stripe. Devbox'ы прогреты заранее: новый поднимается за 10 секунд с предзагруженным кодом и сервисами. Они изолированы от продакшена и интернета, поэтому minion'ов можно запускать без подтверждения человеком. Вдобавок это даёт параллелизацию без накладных расходов вроде git worktrees, которые при масштабах Stripe не работают.

Ядро агентского цикла — форк goose от Block, одного из первых широко используемых агентов-программистов, который мы форкнули на ранних этапах. Мы перестроили оркестрацию: агентские циклы чередуются с детерминированным кодом — для git-операций, линтеров, тестирования и т. д. Так minion сочетает творческую свободу агента с гарантией выполнения обязательных шагов вроде линтинга.

Minion'ы читают те же файлы правил для агентов, что и Cursor с Claude Code, поддерживая несколько форматов. Но при масштабах Stripe иметь множество безусловных правил непрактично, поэтому почти все правила привязаны к конкретным поддиректориям.

Minion'ы подключены к MCP — протоколу, который задаёт единый язык для сетевого вызова функций LLM. Через него они получают контекст: внутреннюю документацию, детали тикетов, статусы сборок, навигацию по коду через Sourcegraph и многое другое. Мы детерминированно вызываем релевантные MCP-инструменты по найденным ссылкам ещё до старта minion'а, чтобы заранее наполнить контекст.

MCP — общий язык для всех агентов Stripe, не только minion'ов. Поэтому мы построили центральный MCP-сервер Toolshed, в котором собрано более 400 инструментов для внутренних систем и SaaS-платформ. Minion'ы и другие агенты подключаются к настраиваемым, но тщательно отобранным подмножествам этих инструментов.

Minion'ы рассчитаны на решение задачи за один подход. Но если с первого раза не получилось, агенту важно дать обратную связь. Для этого мы используем несколько автоматических уровней тестирования, по которым minion итерирует. Первый рубеж — автоматический локальный запуск: эвристики отбирают нужные линтеры и прогоняют их при каждом git push. Занимает меньше пяти секунд.

В вопросах продуктивности мы придерживаемся принципа «shift left» — сдвигаем обратную связь как можно ближе к моменту написания кода. Любая проверка, которая упала бы в CI, должна срабатывать в IDE или при git push и показываться инженеру сразу.

Если локальные проверки ничего не нашли, при пуше CI выборочно запускает тесты из батареи Stripe — а в ней больше трёх миллионов. У многих тестов есть автоматические исправления, которые мы применяем сразу. Если автоисправления нет, ошибку отправляем обратно minion'у.

CI-прогоны стоят токенов, вычислительных ресурсов и времени, поэтому мы ограничиваемся максимум двумя раундами. Если тесты падают после первого пуша, minion пытается их исправить и пушит второй раз — на этом всё. У LLM убывающая отдача от множества раундов полного цикла CI. Правило «обычно один, максимум два прогона CI — и только после локального исправления всего, что можно» мы считаем хорошим компромиссом.

Итого: minion'ы работают с теми же инструментами, что и живые инженеры, и получают контекст для следования лучшим практикам Stripe. А инженеры запускают их легко и привычно — как часть повседневной работы.

Канал в телеграм:

Кожаный с AI-агентами — Vibe Manager (Claude, Cursor)

Что дальше?

Minion'ы уже изменили то, как пишется код в Stripe. Индустрия ещё ищет, каким будет будущее агентного программирования, но мы уверены: автономные агенты-программисты останутся одним из самых перспективных применений агентов.

Во второй части подробно разберём реализацию minion'ов.

Автор: Alistair Gray. Дата: 9 февраля 2026 года.

Оригинал статьи: https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents