Как собрать команду из разных AI кодеров в одном терминале
У многих из нас на рабочей машине уже скопился приличный зоопарк консольных утилит для генерации кода. У меня, к примеру, параллельно установлены Claude Code для архитектурных правок, Aider для точечной работы с локальными моделями через Ollama и Cursor CLI. Проблема в том, что все они существуют сами по себе. Приходится руками переключать вкладки, копировать контекст между терминалами и постоянно следить, чтобы очередной помощник молча не закоммитил мусор в git.
На днях я наткнулся на любопытный проект delegate-skills. Его автор предложил простую схему: превратить одного агента в главного дирижера, который раздает задачи специализированным консольным утилитам, а контроль за изменениями и коммиты оставляет человеку.
Что это за проект
Репозиторий представляет собой набор расширений для стандарта Skills CLI. Это скрипты, которые учат ведущую языковую модель находить установленные в системе кодинг-агенты, формировать для них изолированные задания и контролировать результат.
Вместо создания очередного тяжелого фреймворка с десятками зависимостей разработчик пошел по пути максимального упрощения. Внутри нет внешних npm-пакетов. Все реле написаны на стандартных библиотеках Node.js, не лезут в сеть за спиной пользователя и не собирают телеметрию.
Четыре жестких правила архитектуры
Проект держится на строгих принципах, которые автор называет инвариантами:
- Исполнитель всегда работает с реальным деревом файлов. Никаких виртуальных песочниц внутри памяти или промежуточных API-прослоек. Результатом работы всегда выступает честный
git diff. - Промежуточный скрипт никогда не делает коммит. Фиксация изменений в репозитории остается исключительно за разработчиком после ручной проверки.
- Полная автономность без внешних библиотек. Скрипты запускают только бинарник агента и системный
git. - Единый формат ответа
delegate-relay.result.v1. Независимо от того, какую утилиту вы вызвали, оркестратор получает структурированный JSON со статусом, кодом выхода, списком затронутых файлов и идентификатором сессии.
Как устроена работа с флотом агентов
В проекте есть два способа распределения работы. Первый вариант — прямая передача задачи конкретному инструменту через команду вида $codex-delegate. Второй путь интереснее: вы настраиваете так называемый флот, где разные типы задач привязаны к определенным дорожкам.
Например, дорожку feature можно отдать под OpenCode, дорожку tests поручить OpenAI Codex, а верстку в дорожке ui направить в Cursor.
Установка пакета выполняется одной командой:
npx skills add amElnagdy/delegate-skills
После установки ведущему агенту достаточно дать указание провести инвентаризацию:
Use $delegate-setup to discover my installed implementer CLIs and create a fleet for feature, tests, and UI work.
Утилита найдет все доступные бинарники, предложит конфигурацию и запишет ее в файл только после вашего прямого подтверждения. Конфигурация может быть глобальной или лежать внутри конкретного репозитория.
Если нужно отдать задачу напрямую, инструкция выглядит привычно:
Use $claude-delegate to have a separate Claude Code session implement the parser fix, then review and commit it.
Реальные тесты и шероховатости чужих CLI
Больше всего в репозитории подкупает честность. В таблице совместимости детально расписаны особенности поведения 16 разных инструментов: Aider, Claude Code, Cline, Cursor Agent, Grok Build, Kimi Code, Oh My Pi, Mistral Vibe, Qoder, Copilot CLI и других.
Автор не стал скрывать проблемы чужих утилит, а аккуратно обошел их в коде:
- Aider по умолчанию настроен автоматически коммитить любые правки, включая те файлы, которые уже были изменены до запуска. Реле принудительно передает флаги
--no-auto-commitsи--no-dirty-commits, блокируя такое поведение. - Утилита Command Code при завершении работы сбрасывает процесс и обрубает пайп вывода, из-за чего хвостовые события теряются. Скрипт переписали так, чтобы идентификаторы сессий и важные данные читались из самого начала потока, а не из хвоста.
- Консольный клиент ZCode поставляется внутри готового десктопного приложения и отсутствует в переменной PATH. Скрипт поиска умеет самостоятельно заглядывать внутрь установленных пакетов программ и доставать исполняемый файл оттуда.
- Для агентов без встроенного режима только для чтения внедрена проверка состояния git, которая сразу сообщает, если инструмент нарушил границы дозволенного и без спроса изменил файлы.
Типичный цикл решения задачи
Работа строится по прозрачному сценарию:
- Оркестратор формирует бриф. Это емкое, самодостаточное техническое задание в виде текста или файла. У исполнителя нет доступа к истории чата ведущей модели, поэтому контекст передается целиком.
- Скрипт-реле запускает нужный CLI в фоновом режиме, передавая бриф через аргументы или стандартный ввод.
- После завершения формируется отчет
result.json. Оркестратор или разработчик видит точный список затронутых файлов. - Вы запускаете тесты, линтеры, проверяете
git diffи сами делаетеgit commit.
Такой подход отлично разгружает голову при рутинных операциях вроде расстановки типов в TypeScript, написания шаблонных тестов или массового переименования методов в сервисах.
Кому проект будет полезен
Если вы пользуетесь одной нейросетью внутри редактора для мелких подсказок, городить такую конструкцию нет смысла.
Но если вы активно гоняете разные консольные утилиты, экспериментируете с локальными моделями через Aider и держите Claude Code для сложных задач, delegate-skills наводит порядок в этом хаосе. Вы получаете предсказуемый мост между инструментами без лишних прослоек, закрытых облаков и риска потерять контроль над кодовой базой. Лицензия у проекта MIT, так что его можно смело брать за основу собственных скриптов автоматизации.
