Как Squad помогает собрать команду agentic coders вокруг GitHub Copilot
Как быстро исправлять код, если отчеты о багах приходят еще быстрее? Инструменты многoагентной оркестрации вроде Squad могут стать ответом.
Недавно на Kubecon Europe мейнтейнер ядра Linux Грег Кроа-Хартман сказал то, что меня удивило. После более чем года AI-ориентированных pull request и отчетов о безопасности, которые были бесполезны и заслужили прозвище «slop», примерно за последний месяц Кроа-Хартман вдруг обнаружил, что эти отчеты стали полезными. Тогда он еще не понимал почему, но предположил, что дело в улучшенных инструментах и в более глубоком понимании того, как ими пользоваться.
С тех пор мы, конечно, узнали об Anthropic Claude Mythos и увидели, как закрытые и open-source проекты в спешке исправляют серьезные баги и проблемы, которые Mythos выявил. Крупные проекты могут справляться с такими исправлениями благодаря своим большим командам, а также вкладу корпораций и добровольцев со всего мира. Но как небольшим проектам справляться с ростом числа сообщений о критических уязвимостях, если ими обычно занимаются один или два человека, часто в свободное время?
Это кризис продуктивности разработчиков. Нам нужен исправленный код, и нужен он сейчас, но у нас не хватает квалифицированных разработчиков, чтобы сделать эти исправления в отведенное время.
Могут ли агенты решить проблему?
Agent harnesses становятся все более мощными инструментами, предоставляя каркасы для оркестрации и управления командами агентов. Универсальные инструменты вроде OpenClaw оказались особенно популярны, хотя их запуск может быть дорогим: операции потребляют значительное число токенов в разных моделях и сервисах. Однако, как и у большинства универсальных AI-приложений на базе large language models (LLMs), на результаты могут влиять неточности и галлюцинации.
И все же такой подход, если он опирается одновременно на четкую методологию и на значительный корпус данных, может помочь нам справиться с внезапным ростом потребности в продуктивности разработчиков — используя структурную природу кода и API как основу и сочетание навыков, необходимых для работы современной команды разработки, а также для решения разных задач software development life cycle.
Нам нужен способ использовать эти инструменты, развивая такие подходы, как spec-driven development и agent harnesses, чтобы дать разработчикам собственную команду агентов. Вскоре агенты могут стать тем самым force multiplier, который поможет не отставать от AI red teams и одновременно разбирать большой объем technical debt.
Знакомьтесь: Squad
Один интересный пример такого подхода — Squad, open-source проект Брэди Гастера, Principal PM Architect в команде CoreAI Apps and Agents в Microsoft. Squad строит agent harness вокруг GitHub Copilot, оркестрируя команду агентов, которая работает над вашим кодом вместе с вами. Инструмент рассчитан на установку одной CLI-командой и создает агентов для задач разработки приложений: lead developer, front-end developer, back-end developer и test engineer. Squad может управлять и другими ролями, например документированием.
Идея состоит в том, чтобы воспроизвести структуру команды, которая создает веб-приложение, используя ввод на естественном языке для описания задачи, а затем поручить агентному каркасу координировать агентов Squad, чтобы собрать и протестировать нужный код. Гастер принял несколько интересных архитектурных решений, например требование, чтобы отдельный агент исправлял проблемы, обнаруженные тестами другого агента.
Такой подход должен не дать агенту зациклиться на одном и том же наборе статистически сгенерированных ответов. Вместо этого новый агент приносит новое context window и новый набор seeds, что позволяет ему генерировать разные решения для тех же входных данных. Только после этого Squad создаст pull request для человеческой проверки. Разработчик по-прежнему остается в loop, но теперь он senior developer и architect для команды junior engineers, которыми выступают агенты Squad.
Еще одно любопытное архитектурное решение — отказаться от привычки использовать agent-to-agent chats как инструмент согласования решений. Опыт Microsoft показал, что такой подход хрупок. Поэтому Squad рассматривает агентов как набор асинхронных распределенных вычислительных задач и использует внешнее persistent storage для хранения сведений об архитектурных и других решениях. Общее хранилище, основанное на строгом формате и доступное разным поколениям агентов Squad, позволяет переносить решения между проектами и сохранять context между сессиями.
Наличие определенного источника context также гарантирует, что когда любой участник команды клонирует репозиторий приложения, его агенты Squad получат доступ к той же «памяти» и смогут начать работу сразу после запуска Squad CLI или открытия из Visual Studio Code либо GitHub Copilot. Это эффективный подход, который экономит время и обеспечивает одинаковую стартовую точку для всех участников проекта и для всех, кто использует Squad.
Как начать работу с Squad
Чтобы начать работу с Squad, нужна актуальная установка Node.js на рабочей машине разработчика, а также Git-репозиторий для кода и Markdown-документов, которые Squad использует для хранения своего context. Если все это есть, одной командой npm устанавливается Squad CLI, готовый к работе.
Среда Squad настраивается командой init. Запускать Squad можно из его CLI или из Visual Studio Code и GitHub Copilot, где он доступен как агент. Также Squad можно использовать из GitHub Copilot CLI, что дает интерактивный просмотр того, как работают разные агенты Squad.
CLI Squad хорошо подходит для базовых проектов, но использование Squad вместе с Copilot также дает доступ к дополнительным ресурсам, включая Model Context Protocol (MCP) servers, которые помогают в более сложной разработке приложений и дают более полезный grounding для отдельных агентов Squad. При этом здесь достаточно гибкости, чтобы встроить Squad в существующий toolchain и сделать его частью вашего workflow, а не наоборот.
Есть и третий способ использовать Squad: работать с Squad SDK, чтобы построить собственный automation framework вокруг инструментов Squad. Здесь вы будете использовать TypeScript для управления созданием агентов, а также писать собственные routers и coordination services. Squad SDK — мощный инструмент, который можно применять в более формальных процессах разработки, например встраивая его в CI/CD pipeline для обработки большого потока pull request. Поскольку все три способа работы с Squad используют один и тот же back end, у них общая memory, поэтому они будут одинаково реагировать на входные данные.
Использование Squad для написания и исправления кода
Я использовал Squad из Copilot CLI, создавая базовое приложение Node Express с веб-фронтендом. Возможно, самым интересным в этом процессе было то, что harness Squad позволял ролевым агентам работать параллельно: агент, пишущий back-end код для service APIs, мог работать одновременно с агентом, который строил React-based user interface. Начальная команда агентов, которую создал Squad, включала architect, а также front-end и back-end developers.
По крайней мере в моих тестовых приложениях результат Squad был понятным и легким для восприятия, готовым стать основой для более сложного приложения. Он был сгенерирован быстро, с применением test-driven approach, чтобы убедиться, что код работает как задумано, без явных багов. Используя формальный подход к software development, Squad может снижать риски и объяснять свои действия человеку. Его также можно использовать для документирования кода, который он создает, привлекая другого специализированного агента для подготовки документации.
В процессе по-прежнему много человеческого контроля, хотя есть и возможность передать Squad повторяющиеся задачи. Со временем можно накопить достаточно доверия, чтобы не подтверждать каждый новый файл или каталог. Squad работает в контексте вашего Git-репозитория, но если вам нужна дополнительная безопасность, можно запускать его внутри dev container, изолируя среду.
Вот и искусственный junior developer
Мы все еще на самом начале использования AI-based tooling в наших рабочих процессах разработки, но доступные инструменты быстро взрослеют — и по мере улучшения моделей, и по мере того, как мы учимся строить длинные workflows, необходимые для реализации agent-based applications.
Подход Squad к разработке сочетает хорошо понятные software development methodologies с командной структурой, необходимой для выпуска приложений. Пока что, поскольку Squad находится в alpha code, это инструмент для экспериментов в ограниченных и хорошо понятных сценариях использования.
Но по мере того как наше понимание AI-powered development tools будет расти, легко представить, как AI coding эволюционирует во что-то вроде Squad — способ задействовать агентов так, чтобы они вели себя как карманная команда разработки, где человек остается в loop в роли development lead для команды искусственных junior developers. И, возможно, тогда мы сможем не отставать от Claude Mythos и его наследников.
Материал — перевод статьи с английского.