"➡️ Небольшой практический пример параллельного запуска агентов Приведу простой пример как можно организовать агентный процесс и использовать возможность СС запускать процессы параллельно. Исходная задача: проект на TypeScript. Для него мы делаем typecheck и lint. Typecheck - это запусе typescript компилятора в режиме проверки кода (без генерации js бандла), lint - это запуск линтера, который используется в проекте. Часто это ESLint, для next.js это next lint, я последнее время для ts настраиваю biome. ➡️ Рассмотрим как тут можно кое-что ускорить за счёт параллельных задач. Первое: получить результаты компилирования и линтинга. Очевидно, что утилиты можно запустить параллельно, это мы пропишем ""ручную"". Для запуска будем использовать специализированного агента, назовём ""qa-agent"". В контексте агента указываем: - соберём из меморибанка сведения о тех стеке проекта, чтобы агент умел запускать утилиты, - знал про конфиги и в случае чего мог поправить конфиг. - знал какие папки нужно игнорировать (для ts это dist папки со сгенерированным компилятором js) - определитесь - lint для тестов в проекте вы делаете? а компиляцию? и пропишем это в агенте; - (на самом деле главная компетенция агента - умение запускать тесты, но чтобы не разводить слишком большую стаю агентов мы его и для компиляции с линтингом задействуем) Итак, запуск агентов параллельно нужно сопроводить фразой: ""запускай агенты `qa-agent` для выполнения Typecheck и lint проекта параллельно, для этого вызывай команду запуска двух агента в ОДНОМ своём сообщении."" Суть магии этой фразы - добиться чтобы модель сделала ""параллельный вызов"" tools. Технически это происходит когда модель в одном своём ответе запрашивает вызов нескольких инструментов. СС поддерживает такую штуку и запустит агентов параллельно. ➡️ Дальше интереснее: получив результаты компилятора и линтера можно поручить модели спланировать параллельную обработку результатов - мы будем фиксить проблемы параллельными агентами. ❓ Какие есть возможности параллельной обработки проекта? принципиально их всего две: - развести ""области работы"" и параллельно обрабатывать непересекающиеся части проекта; это самый простой и беспроблемный способ - если задача с понятной ""зоной изменения"", и мы знаем какие файлы будут изменяться, то можем поручить исправление разных файлов разным агентам. Этот способ позволяет избежать стадии решения конфликтов при ""вливании"" результатов работы в репозиторий. - если зоны работы агентов пересекаются - необходимо использовать изоляцию на уровне Git: локально мы можем использовать worktree для каждого агента, или классические branch. Детали зависят от схемы работы с git в вашем проекте. Это может быть стандартные бранчи main -> develop -> (feature branch). По завершении работы мы мержим worktree/branch обратно в develop - конечно, все это делают агенты. Для нашей задачи с исправлением ошибок компилятора / lint подходит первый вариант: ведь мы знаем списки проблемных файлов. Мы инcтруктируем оркестратора сгруппировать проблемы с компиляцией и линтом по файлам, и распределить их между 5-7 агентами таким образом, чтобы файлы не пересекались и агенты не мешали друг другу. Запускать агенты мы будем также, параллельно. Агент нужен будет для написания кода, ""code-writer"": - знает структуру кода в проекте - знает стандарты кодпирования - знает как оформлять jsdoc, какие кросс-ссылки проставлять Запускаем аналогично: даём инструкцию вызывать всех агентов в ОДНОМ сообщении оркестратора. ➡️ Итак - на верхнем уровне у оркестратора одна задача - запускать агентов, получать списки файлов и провести планирование работы так, чтобы разделить ""зоны"" между агентами, а в конце отчитаться о результатах. Все детали о запуске компилятора/линтера и требованиях к написанию кода будут внутри промптов субагентов. 🟢 Такая штука работает вполне надёжно и может быть запущена как отдельное агентское воркфлоу через claude code sdk/cli, можно даже по крону (ночью?). #post @deksden_notes"