Оснастка под каждую задачу: динамические workflow в Claude Code

На прошлой неделе мы выпустили динамические workflow в Claude Code. Теперь Claude может на лету писать собственную оснастку — специально собранную под конкретную задачу.

Оснастка под каждую задачу: динамические workflow в Claude Code

Изначально опубликовано Thariq в X.

На прошлой неделе мы выпустили динамические workflow в Claude Code. Теперь Claude может на лету писать собственную оснастку — специально собранную под конкретную задачу.

Стандартная оснастка Claude Code создана для программирования, но она полезна и для многих других типов задач: как выяснилось, многие задачи похожи на задачи разработки. Однако есть классы задач, где для максимальной эффективности нам приходилось строить собственные оснастки поверх Claude Code — например, для исследований, анализа безопасности, команд агентов или code review.

Workflow позволяют динамически создавать такие оснастки, чтобы Claude мог решать все эти задачи — и многие другие — нативно внутри Claude Code. Этими workflow также можно делиться и переиспользовать их.

В этой статье я расскажу о своём первом опыте работы с workflow и о том, чему научился, чтобы вы могли использовать их по максимуму.

При этом лучшие практики всё ещё формируются. Динамические workflow часто расходуют больше токенов, поэтому стоит внимательно думать, когда и как их применять.

Примечание: этот пост также доступен в блоге Claude.

Примеры промптов

Прежде чем перейти к техническим деталям, начну с примеров промптов, чтобы показать, какие возможности открывают workflow:

  • «Этот тест падает примерно в одном запуске из пятидесяти. Настрой workflow, который воспроизведёт проблему, сформулирует гипотезы и будет состязательно проверять их в worktree. /goal — не останавливайся, пока одна гипотеза не подтвердится».
  • «С помощью workflow пройди по моим последним 50 сессиям, найди исправления, которые я постоянно вношу, и преврати повторяющиеся в правила CLAUDE.md».
  • «Используй workflow, чтобы изучить канал #incidents в Slack за последние шесть месяцев и найти повторяющиеся первопричины, по которым никто не завёл тикет».
  • «Возьми мой бизнес-план и запусти workflow, где разные агенты разберут его с точки зрения инвестора, клиента и конкурента».
  • «Вот папка из 80 резюме. Используй workflow, чтобы ранжировать их для backend-роли и перепроверить топ-10. Проведи со мной интервью через AskUserQuestion, чтобы уточнить рубрику оценки».
  • «Мне нужно название для CLI-инструмента. Используй workflow, чтобы придумать много вариантов и провести турнир, выбрав топ-3».
  • «Используй workflow, чтобы везде переименовать модель User в Account».
  • «Пройди по черновику моего поста в блог и с помощью workflow проверь каждое техническое утверждение по кодовой базе. Я не хочу публиковать ничего ошибочного».

Как работают динамические workflow

Динамические workflow выполняют JavaScript-файл с несколькими специальными функциями, которые помогают запускать и координировать субагентов.

В динамических workflow также доступны стандартные JavaScript-функции вроде JSON, Math и Array — они помогают обрабатывать данные.

Особенно полезно знать, что динамические workflow могут решать, какие модели использовать агентам и должны ли субагенты запускаться в собственных worktree. Так Claude может выбирать нужный уровень «интеллекта» и изоляции.

Если workflow прерывается — например, из-за действия пользователя или выхода из терминала, — возобновление сессии позволит workflow продолжить с того места, где он остановился.

Зачем нужны динамические workflow

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

Причина в том, что чем дольше Claude работает над сложной задачей в одном контекстном окне, тем сильнее проявляются несколько характерных сбоев:

  • Агентная леность — когда Claude останавливается до завершения особенно сложной многочастной задачи и объявляет работу выполненной после частичного прогресса, например обработав 20 из 50 пунктов в security review.
  • Самопредпочтительное смещение — склонность Claude предпочитать собственные результаты или выводы, особенно когда его просят проверить или оценить их по рубрике.
  • Дрейф цели — постепенная потеря точности исходной цели на многих ходах, особенно после сжатия контекста. Каждое суммирование приводит к потерям, и такие детали, как edge-case требования или ограничения вида «не делай X», могут потеряться.

Создание workflow помогает бороться с этим: он оркестрирует отдельных Claude с собственными контекстными окнами и сфокусированными изолированными целями.

Динамические и статические workflow

Возможно, раньше вы уже создавали статический workflow с помощью Claude Agent SDK или claude -p, чтобы координировать несколько экземпляров Claude Code.

Но поскольку статические workflow должны работать для всех крайних случаев, они обычно получаются более универсальными. С Claude Opus 4.8 и динамическими workflow Claude теперь достаточно умён, чтобы писать кастомную оснастку, точно подогнанную под ваш конкретный сценарий.

Полезные паттерны при использовании динамических workflow

Начать использовать динамические workflow можно просто попросив Claude создать workflow — или применив триггерное слово «ultracode», чтобы Claude Code точно создал workflow.

Но если у вас есть ментальная модель того, как работают динамические workflow, вам будет проще понимать, когда их использовать и как направлять Claude промптами.

Есть несколько распространённых паттернов, которые Claude может использовать и комбинировать при построении workflow.

Классифицировать и действовать

Используйте агента-классификатора, чтобы определить тип задачи, а затем маршрутизировать её к разным агентам или разному поведению. Или используйте классификатор в конце, чтобы определить итоговый результат.

Распараллелить и синтезировать

Разбейте задачу на множество небольших шагов, запустите агента на каждом шаге, а затем синтезируйте результаты. Это особенно полезно, когда шагов много или когда каждому шагу выгодно иметь чистое отдельное контекстное окно, чтобы части работы не мешали друг другу и не заражали друг друга контекстом. Этап синтеза — это барьер: он ждёт всех fan-out агентов, а затем объединяет их структурированные outputs в единый результат.

Состязательная верификация

Для каждого запущенного агента запускайте отдельного агента, который состязательно проверит его результат по рубрике или критериям.

Сгенерировать и отфильтровать

Сгенерируйте набор идей по теме, затем отфильтруйте их по рубрике или через проверку, удалите дубликаты и верните только самые качественные, протестированные идеи.

Турнир

Вместо того чтобы делить работу, заставьте агентов соревноваться над ней. Запустите N агентов, каждый из которых пытается выполнить одну и ту же задачу разными подходами. Затем промпты или модели оценивают результаты попарно с помощью судейского агента, пока не останется победитель.

Цикл до завершения

Для задач с неизвестным объёмом работы запускайте агентов в цикле, пока не выполнится условие остановки — например, нет новых находок или больше нет ошибок в логах, — вместо фиксированного числа проходов.

Сценарии применения

Думайте творчески о том, когда и как просить Claude Code создавать динамические workflow. По моему опыту, workflow иногда оказываются ещё полезнее в нетехнической работе.

Миграции и рефакторинги

Bun был переписан с Zig на Rust с использованием workflow. Подробнее об этом можно прочитать в X-треде Jarred.

Ключ в том, чтобы разбить задачу на серию шагов, которые нужно обработать: например, callsite, падающие тесты, модули и так далее. Запустите по субагенту на каждое исправление в отдельном worktree, затем попросите другого агента состязательно проверить результат и слейте изменения. Стоит явно сказать агенту не использовать ресурсоёмкие команды, чтобы можно было максимально распараллелить работу и не упереться в ресурсы машины.

Глубокое исследование

Мы опубликовали skill глубокого исследования (/deep-research) внутри Claude Code, который использует динамические workflow. В частности, он распараллеливает веб-поиск, извлекает источники, состязательно проверяет их утверждения и синтезирует отчёт с цитатами.

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

Глубокая проверка

С другой стороны, если у вас есть отчёт, в котором нужно проверить и снабдить источниками каждое фактическое утверждение, можно сгенерировать workflow: один агент выделяет все фактические утверждения, затем для каждого запускается субагент, который детально его проверяет. Также можно добавить агента-верификатора, который проверит работу агента по источнику и убедится, что источник качественный.

Сортировка

У вас может быть список элементов, который нужно отсортировать по качественному признаку, который Claude Code, как вы считаете, хорошо оценивает: например, тикеты поддержки по серьёзности бага. Но если попытаться отсортировать 1000+ строк одним промптом, качество ухудшится и всё не поместится в контекст. Вместо этого запустите турнир, пайплайн попарных сравнений агентов — сравнительное суждение надёжнее абсолютной оценки — или параллельное разбиение по корзинам с последующим слиянием. Каждое сравнение — отдельный агент, поэтому детерминированный цикл держит сетку турнира, а в контексте остаётся только порядок выполнения.

Память и соблюдение правил

Если у вас есть набор правил, которые Claude часто пропускает или с которыми испытывает трудности даже при наличии CLAUDE.md, создайте workflow со списком правил, которые должны проверить агенты-верификаторы — по одному верификатору на правило. Отдельный субагент в роли скептика, который проверит сами правила на разумность, поможет избежать лишних ложноположительных результатов.

Обратное направление тоже работает: проанализируйте недавние сессии и комментарии code review, найдите исправления, которые вы постоянно вносите, сгруппируйте их параллельными агентами, состязательно проверьте каждый кандидат — предотвратило бы это правило реальную ошибку? — и затем дистиллируйте выжившие правила обратно в CLAUDE.md.

Поиск первопричин

Отладка лучше всего работает, когда вы выдвигаете несколько независимых гипотез и проверяете их. Но если использовать только одно контекстное окно, Claude может попасть в самопредпочтительное смещение.

Workflow может структурно предотвратить это, запуская агентов, которые генерируют гипотезы на основе непересекающихся свидетельств. Например, отдельные агенты для логов, файлов и данных. Затем каждая гипотеза проходит через группу верификаторов и опровергателей.

Это применимо не только к коду. Workflow можно использовать в продажах — почему продажи упали в марте? — в data engineering — почему упал pipeline? — или в любом post-mortem разборе.

Масштабный триаж

У каждой команды есть очередь поддержки, баг-репорты или другой backlog, который люди не могут полностью обработать вручную.

Workflow для триажа классифицирует каждый элемент, дедуплицирует его относительно уже заведённых задач и предпринимает действие. Это может означать попытку исправления или эскалацию к человеку.

Полезный паттерн для triage workflow — карантин. Он запрещает агентам, которые читают недоверенный публичный контент, выполнять высокопривилегированные действия; такие действия выполняют отдельные агенты, отвечающие за действие.

Сочетайте triage workflow с /loop, чтобы Claude выполнял это непрерывно.

Исследование вариантов и вкус

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

Попробуйте попросить Claude исследовать множество решений и дать review-агенту рубрику того, каким должно быть хорошее решение. Задача считается завершённой, когда review-агент считает, что критерии выполнены. Решения также можно упорядочивать или выбирать через турнир по рубрике.

Evals

Можно запускать лёгкие evals для конкретных задач, создавая отдельных агентов в worktree, а затем отдельных агентов сравнения, которые будут сопоставлять и оценивать конкретные outputs по рубрике. Например, так можно оценивать и затем улучшать созданный вами skill по заданным критериям.

Маршрутизация моделей и уровня интеллекта

Создайте агента-классификатора, настроенного на ваши задачи, который решает, какую модель использовать. Это может быть полезно, когда задача требует множества tool calls и предварительное исследование позволяет определить лучшую модель.

Например, лучшая модель для задачи «объясни, как работает auth-модуль» зависит от того, сколько файлов в auth-модуле и как устроена кодовая база. Агент-классификатор может провести это исследование и затем направить задачу в Sonnet или Opus в зависимости от ожидаемой сложности.

Когда не стоит использовать динамические workflow

Workflow — новая возможность. Хотя есть много сценариев, где она даёт непропорционально сильный результат, workflow нужны не для каждой задачи и могут расходовать значительно больше токенов.

Лучше использовать workflow творчески, чтобы продвигать Claude Code в тех направлениях, где вы раньше не пробовали. Для обычных задач разработки стоит спросить себя: действительно ли здесь нужно больше вычислений? Например, большинству традиционных coding tasks не нужна панель из пяти ревьюеров.

Советы по построению динамических workflow

Промптинг

Подробный промптинг с использованием описанных выше техник даёт лучшие результаты при работе с динамическими workflow.

Workflow нужны не только для больших задач. Можно попросить модель использовать «quick workflow». Например, создать быструю состязательную проверку предположения.

Комбинируйте с /goal и /loop

Когда вы используете workflow, которые можно повторять — например, triage, исследование или верификацию, — сочетайте их с /loop для регулярного запуска и /goal, чтобы задать жёсткое требование завершения.

Бюджеты токенов

Можно задавать явные бюджеты токенов для динамических workflow, чтобы ограничивать расход на задачу. Например, промптом «use 10k tokens» можно установить лимит.

Сохранение и распространение динамических workflow

Workflow можно сохранять, нажав s в меню workflow. Их можно коммитить в ~/.claude/workflows или распространять через skill.

Чтобы поделиться workflow через skill, положите JavaScript-файлы workflow в skill и папку, а затем сошлитесь на них в SKILL.md. Для большей гибкости можно попросить Claude воспринимать workflow в skill как шаблон, а не как скрипт, который нужно запускать дословно.

Целый новый мир

Workflow — полезный новый способ расширять Claude Code. Я предлагаю воспринимать это как отправную точку: нам ещё многое предстоит узнать о том, как использовать их лучше всего. Расскажите, что найдёте.

Thariq Shihipar и Sid Bidasaria (@sidbid) — members of technical staff в Anthropic, работают над Claude Code.

Subscribe to Temperature 0.7 - AI блог об AI и роботах

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe