Claude теперь сам пишет себе harness под задачу: гайд по dynamic workflows от инженера Anthropic
Самый авторитетный разбор по динамическим воркфлоу в Claude Code — от Thariq Shihipar и Sid Bidasaria, инженеров команды Claude Code в Anthropic.
Workflows — самый большой апгрейд возможностей Claude Code со времён скиллов и субагентов. Теперь Claude сам пишет harness под каждую конкретную задачу прямо на лету: разбивает её на подзадачи, разводит работу по параллельным субагентам, гоняет состязательную верификацию между ними, и крутит, пока ответы не сойдутся. До тысячи агентов в одном запуске. Bun этим способом уже переписали с Zig на Rust.
Ниже — перевод гайда.
Подписывайтесь на мой канал Ночной Писаревский, где пишу про предпринимательство, AI и делюсь своим опытом.
На прошлой неделе мы выпустили динамические воркфлоу в Claude Code. Теперь Claude сам пишет себе harness на лету — кастомный под конкретную задачу.
Дефолтный harness Claude Code заточен под кодинг, но он же неплохо работает и на других задачах — потому что много дел в реальности похожи на кодинг. Однако есть классы задач, под которые нам приходилось строить отдельные кастомные harness'ы поверх Claude Code, чтобы выжать пиковую производительность: ресёрч, security-анализ, команды агентов, code review.
Workflows позволяют динамически создавать harness'ы, которые дают Claude решать всё это (и многое другое) — нативно внутри Claude Code. И этими воркфлоу потом можно делиться и переиспользовать.
В этой статье я разберу свой первый опыт и наблюдения, чтобы вы могли выжать из фичи максимум.
При этом: лучшие практики ещё только формируются. Динамические воркфлоу часто едят больше токенов — думайте, когда и как их использовать.
Примеры промптов
Прежде чем нырнуть в технику — несколько примеров, чтобы поймать вайб:
- «Этот тест падает примерно 1 раз из 50. Подними воркфлоу, который воспроизводит его, выдвигает гипотезы и состязательно тестирует их в worktree'ах. /goal не останавливаться, пока одна из гипотез не выстрелит.»
- «Через воркфлоу пройди по моим последним 50 сессиям и вытащи правки, которые я повторяю. Превращай повторяющиеся — в правила в CLAUDE.md.»
- «Через воркфлоу разбери канал #incidents в Slack за последние шесть месяцев и найди повторяющиеся root causes, на которые никто не завёл тикет.»
- «Возьми мой бизнес-план и запусти воркфлоу, где разные агенты рвут его — с позиции инвестора, клиента и конкурента.»
- «Вот папка с 80 резюме. Через воркфлоу проранжируй их под backend-роль и переподтверди топ-10. Допроси меня через AskUserQuestion, чтобы собрать рубрику.»
- «Мне нужно имя для CLI-инструмента. Через воркфлоу набрось вариантов и проведи турнир, чтобы выбрать топ-3.»
- «Через воркфлоу переименуй модель User в Account по всему кодбейзу.»
- «Пройдись по черновику моего блог-поста воркфлоу: проверь каждое техническое утверждение против кода. Ничего ошибочного выкладывать не хочу.»
Как работают динамические воркфлоу
Динамический воркфлоу исполняет JavaScript-файл с несколькими специальными функциями, которые помогают спавнить и координировать субагентов:
Внутри доступны и стандартные функции JS — JSON, Math, Array — чтобы обрабатывать данные.
Особенно полезно понимать: воркфлоу может сам решать, какие модели использует каждый агент и запускать ли субагент в собственном worktree. То есть Claude сам выбирает нужный уровень интеллекта и изоляции под подзадачу.
Если воркфлоу прерывается — например, пользователь его остановил или закрыл терминал — при возобновлении сессии он подхватывается с того места, где остановился.
Зачем вообще динамические воркфлоу
Когда вы просите дефолтный harness Claude Code что-то сделать, ему приходится одновременно и планировать, и исполнять в одном контекстном окне. Для большинства кодинговых задач это работает отлично, но ломается на долгих, массово-параллельных и/или сильно структурированных состязательных задачах.
Чем дольше Claude работает над сложной задачей в одном контекстном окне, тем более уязвим к нескольким типичным режимам отказа:
- Agentic laziness (лень агента). Claude останавливается до окончания сложной многосоставной задачи и объявляет работу сделанной после частичного прогресса. Например, разобрал 20 из 50 пунктов в security-ревью и закрыл сессию.
- Self-preferential bias (предпочтение собственных решений). Тенденция предпочитать собственные результаты, особенно когда его же просят их верифицировать или сверять с рубрикой.
- Goal drift (расхождение с целью). Постепенная потеря верности изначальной задаче на длинной дистанции — особенно после компакции. Каждый шаг суммаризации теряет данные, и детали вроде граничных случаев или ограничения «не делай X» отваливаются.
Воркфлоу борется со всем этим, оркестрируя отдельных Claude'ов с собственными контекстными окнами и сфокусированными изолированными целями.
Динамические vs статические воркфлоу
Раньше можно было собирать статические воркфлоу через Claude Agent SDK или claude -p, чтобы координировать несколько копий Claude Code.
Но статические воркфлоу пишутся «на все случаи жизни», поэтому обычно довольно общие. С Claude Opus 4.8 и динамическими воркфлоу Claude уже достаточно умён, чтобы написать кастомный harness ровно под твой кейс.
Полезные паттерны
Начать использовать динамические воркфлоу можно просто попросив Claude его сделать — или через триггерное слово «ultracode», которое гарантирует, что Claude Code соберёт воркфлоу.
Но чтобы лучше понимать, когда они нужны и как ими подталкивать через промпт, полезно собрать ментальную модель. Вот основные паттерны, которые Claude использует и комбинирует:
Classify-and-act
Агент-классификатор решает, какого типа задача, и роутит её на разных агентов или поведения. Или: классификатор на выходе решает, какой результат отдать.
Fan-out-and-synthesize
Разбить задачу на много мелких шагов, прогнать на каждом отдельного агента и синтезировать результаты. Особенно полезно, когда шагов много и каждый выигрывает от собственного чистого контекстного окна — чтобы не пересекались и не загрязняли друг друга. Шаг синтеза — барьер: ждёт всех fan-out агентов и сливает их структурированные выводы в один итог.
Adversarial verification
На каждый порождённый агент запускается отдельный второй агент, который состязательно верифицирует его вывод против рубрики или критерия.
Generate-and-filter
Нагенерировать N идей по теме, отфильтровать их по рубрике или через верификацию, дедуплицировать повторы, оставить только лучшие и проверенные.
Tournament
Вместо разделения работы — пусть агенты конкурируют. Спавнишь N агентов, каждый решает одну и ту же задачу разными подходами. Затем агент-судья сравнивает результаты попарно, пока не останется победитель.
Loop until done
Для задач с неизвестным объёмом работы — крутим, пока не выполнится условие останова (нет новых находок, нет новых ошибок в логах) — вместо фиксированного числа проходов.
Кейсы
Думай нешаблонно о том, когда просить Claude Code построить воркфлоу. Я обнаружил, что воркфлоу иногда даже полезнее на не-кодинговых задачах.
Миграции и рефакторинги
Bun переписали с Zig на Rust через воркфлоу. Подробнее — в твиттер-треде Jarred.
Ключ: разбить задачу на серию шагов, над которыми нужно работать — callsites, падающие тесты, модули и т.д. Спавнить субагент на каждый фикс в worktree, сделать фикс, дать другому агенту состязательно отревьюить, и смержить. Стоит сказать агенту не пользоваться тяжёлыми командами — чтобы максимально параллелизироваться, не уперевшись в ресурсы машины.
Deep research
Мы выпустили скилл /deep-research внутри Claude Code, который как раз использует динамические воркфлоу. Он фан-аутит веб-поиски, фетчит источники, состязательно верифицирует утверждения и синтезирует репорт со ссылками.
Но ресёрч — это не только веб. Например: попросить Claude собрать статус-отчёт по контексту из Slack, или разобраться, как работает фича, через глубокий проход по кодбейзу.
Deep verification
Обратная задача: у вас есть отчёт, и нужно проверить и заисточник каждое фактическое утверждение в нём. Сделай воркфлоу: один агент извлекает все факты, потом на каждый спавнится свой субагент-проверяющий. Можно ещё прицепить агента-аудитора источников — чтобы он подтвердил, что источник у проверяющего нормальный.
Сортировка
Допустим, у тебя список объектов, которые нужно отсортировать по качественной оценке — скажем, тикеты поддержки по серьёзности бага. Если попробовать отсортировать 1000+ строк в одном промпте, качество просядет, да и в контекст не влезет.
Вместо этого — турнир, пайплайн попарных сравнений (попарные сравнения работают надёжнее, чем абсолютные оценки), или bucket-rank в параллель с последующим мерджем. Каждое сравнение — отдельный агент, детерминированный цикл держит сетку, а в контексте остаётся только текущий порядок.
Память и соблюдение правил
Если у тебя есть набор правил, которые Claude часто пропускает — даже когда они в CLAUDE.md — сделай воркфлоу со списком правил, проверяемых отдельными верифицирующими агентами (один верификатор на правило). Создание агента-скептика, который смотрит правила на адекватность, помогает избежать кучи ложных срабатываний.
Обратное направление тоже работает: майнить недавние сессии и code-review комментарии на правки, которые ты повторяешь, кластеризовать их параллельными агентами, состязательно верифицировать каждого кандидата («предотвратило бы это реальную ошибку?») — и потом выживших дистиллировать обратно в CLAUDE.md.
Расследование root-cause
Дебаг лучше всего работает, когда выдвигаешь несколько независимых гипотез и тестируешь их. Но в одном контекстном окне Claude страдает self-preferential bias.
Воркфлоу структурно это лечит: спавнит агентов, которые генерят гипотезы из непересекающихся источников. Например, отдельные агенты на логи, файлы и данные. Каждая гипотеза затем проходит через панель верификаторов и опровергателей.
Это не только про код. Воркфлоу применимы к продажам («почему упали продажи в марте?»), к data engineering («почему упал этот пайплайн?»), к любой пост-мортем работе.
Триаж в масштабе
У каждой команды есть очередь поддержки, баг-репорты или бэклог, который люди не могут полностью пережёвывать.
Триажный воркфлоу классифицирует каждый элемент, дедупит против уже отслеженного и принимает действие — либо пытается исправить, либо эскалирует человеку.
Полезный паттерн для триажа — quarantine. Агентам, которые читают непроверенный публичный контент, запрещены действия с высокими привилегиями. Действовать на основе их информации могут только специальные агенты-исполнители.
Триажные воркфлоу хорошо парятся с /loop — чтобы Claude крутил это непрерывно.
Исследование и вкус
Воркфлоу полезны, когда исследуешь разные подходы к решению — особенно когда задача про вкус (дизайн, нейминг) и от рубрики бы что-то выиграло.
Попросить Claude исследовать кучу вариантов и дать агенту-ревьюеру рубрику «как выглядит хорошее решение». Задача считается готовой, когда ревьюер ощущает, что критерии выполнены. Решения можно ещё ранжировать или выбирать через турнир по рубрике.
Evals
Запускаешь лёгкие эвалы под конкретные задачи: спавнишь отдельных агентов в worktree, потом отдельных сравнивающих агентов — чтобы сопоставить и оценить выводы против рубрики. Например, проверять и подкручивать скилл, который ты собрал, против конкретных критериев.
Роутинг модели и интеллекта
Сделать агента-классификатора, который под твои задачи решает, какую модель брать. Это полезно, когда задача предполагает много tool-калов, и предварительный ресёрч даёт понять, какая модель лучше подойдёт.
Например, лучшая модель под «объясни, как работает auth-модуль» зависит от того, сколько в этом модуле файлов и как устроен кодбейз. Агент-классификатор это исследует и роутит на Sonnet или Opus в зависимости от сложности.
Когда НЕ надо использовать динамические воркфлоу
Воркфлоу — новая фича. Есть много кейсов, где они дают выдающийся результат, но они не нужны на каждой задаче — и могут жечь заметно больше токенов.
Используйте их креативно — чтобы пушить Claude Code туда, куда раньше не получалось. Под обычные кодинговые задачи задайте себе вопрос: реально ли тут нужно больше compute'а? Большинству традиционных кодинговых задач панель из пяти ревьюеров просто ни к чему.
Советы по построению воркфлоу
Промптинг
Детальный промптинг с использованием перечисленных выше техник даёт лучшие результаты.
Воркфлоу — не только для больших задач. Можно попросить модель сделать «быстрый воркфлоу» — например, состязательно проревьюить одно допущение.
Сочетай с /goal и /loop
Воркфлоу, которые можно повторять (триаж, ресёрч, верификация) — паркуй с /loop для запуска по таймеру, и /goal для жёсткого условия завершения.
Бюджеты по токенам
Для динамического воркфлоу можно задать явный токен-бюджет. Промпт «use 10k tokens» поставит соответствующий cap.
Сохранение и шеринг
Сохранить воркфлоу можно нажав «s» в меню воркфлоу. Их можно складывать в ~/.claude/workflows или раздавать через скилл.
Чтобы шерить через скилл — кладёшь JavaScript-файлы воркфлоу в папку скилла и ссылаешься на них в SKILL.md. Для большей гибкости стоит просить Claude думать о воркфлоу в скилле как о шаблоне, а не как о скрипте, который нужно выполнить дословно.
Совсем другой мир
Воркфлоу — это новый способ расширять Claude Code. Думайте про них как про стартовую точку — впереди ещё много открытий, как их использовать. Расскажите потом, что нашли.
Thariq Shihipar и Sid Bidasaria (@sidbid) — инженеры команды Claude Code в Anthropic.
Подписывайтесь на мой канал Ночной Писаревский, где пишу про предпринимательство, AI и делюсь своим опытом.