✻ Claude Code по-русски
🎧 Аудиокурс
🎧 Слушать урок15:00 · голос Russian_BrightHeroine

#Запуск и сохранение динамического workflow

Продвинутый уровень · Урок 3 из 7 · около 20 минут плюс время запуска · Нужно: Выбор паттерна оркестрации · Сверено с Claude Code v2.1.285 (stable) 09.10.2026

#Цель

К концу урока вы сможете поручить Claude написать динамический workflow для задачи, которая расходится по множеству файлов, удержать запуск небольшим и сохранить его как команду, принимающую входные данные из args.

#Что понадобится

Примечание

На Pro динамические workflow выключены, пока вы не включите их в строке Dynamic workflows в /config, а рекомендуемый размер по умолчанию — small (Orchestrate subagents at scale with dynamic workflows, Set a size guideline).

#Идея

Динамический workflow — это скрипт на JavaScript, который Claude пишет под вашу задачу. Среда выполнения запускает его в фоне, а ваша сессия остаётся отзывчивой (Orchestrate subagents at scale with dynamic workflows). Скрипт запускает субагентов и хранит их результаты в собственных переменных, так что в ваш разговор попадает только итоговый ответ: план держит скрипт, а не Claude (When to use a workflow).

Поскольку план — это код, его можно прочитать до запуска, независимые агенты могут проверить находки друг друга до того, как те попадут в отчёт, а запуск, сделавший то, что нужно, можно сохранить как команду /<name>, которая каждый раз принимает новые входные данные из args (When to use a workflow, Pass input to a saved workflow).

Рекомендуемый размер (size guideline) подсказывает Claude, на сколько агентов ориентироваться при написании скрипта. Это совет, а не потолок (Set a size guideline).

#Разбор примера

  1. В корне репозитория запустите Claude Code в ручном режиме (Manual):
claude --permission-mode manual

Для экономного варианта запустите его на Sonnet:

claude --permission-mode manual --model sonnet

В строке состояния появится ⏸ manual mode on (Switch permission modes). В ручном режиме Claude Code спрашивает перед каждым запуском workflow, если только вы не попросили больше не спрашивать для этого workflow в этом проекте, так что вы видите каждый план до старта (Approve the plan before it runs).

Если модель ничем больше не назначена, агенты workflow работают на модели вашей сессии (Cost). --model задаёт её только для этой сессии, а /model ещё и сохранил бы её как значение по умолчанию (CLI flags, Commands). 2. Задайте рекомендуемый размер:

/config workflowSizeGuideline=small

small просит Claude использовать как можно меньше агентов; документация советует это, «когда вы хотите ограничить расходы workflow». Claude Code хранит этот выбор в ~/.claude.json, а не в репозитории, и он действует начиная со следующего промпта (All settings, Set a size guideline). 3. В экономном варианте пропустите этот шаг. Запустите встроенный исследовательский workflow (Run a bundled workflow). Ему нужен инструмент WebSearch, которого нет в Amazon Bedrock (WebSearch tool behavior):

/deep-research What changed in the Node.js permission model between v20 and v22?

Claude Code перечисляет запланированные фазы и спрашивает, запускать ли. Поскольку вы запустили workflow по имени, он также предлагает Yes, and don't ask again for <name> in <path> (Approve the plan before it runs). Выберите Yes, run it. Запуск работает в фоне. Его агенты подчиняются вашим правилам разрешений, поэтому в ручном режиме поиск или загрузка страницы могут остановиться в ожидании вашего одобрения, и запуск ждёт вашего ответа (Behavior and limits). Когда он закончится, в сессии появится отчёт со ссылками на источники. Дождитесь его, прежде чем идти дальше. 4. Попросите собственный workflow. Замените <folder> небольшой папкой своего репозитория:

use a workflow to audit every file under <folder> for errors that are caught and then ignored, and adversarially verify each finding before reporting it

Просьба «a workflow» своими словами говорит Claude написать workflow под эту задачу (Ask for a workflow in your prompt). Затем Claude Code спрашивает, запускать ли его, перечисляя запланированные фазы, с вариантами Yes, run it, View raw script и No. Для скрипта, который Claude написал под эту задачу, варианта «больше не спрашивать» нет. Выберите View raw script, чтобы сначала прочитать его, или нажмите Ctrl+G, чтобы открыть его в редакторе (Approve the plan before it runs). По форме он похож на пример из документации, хотя ваш будет отличаться:

export const meta = {
  name: 'audit-routes',
  description: 'Audit every route handler for missing auth checks',
}

const found = await agent('List every .ts file under src/routes/.', {
  schema: { type: 'object', required: ['files'], properties: { files: { type: 'array', items: { type: 'string' } } } },
})

const audits = await pipeline(found.files, file =>
  agent(`Audit ${file} for missing authentication checks.`, { label: file }),
)

return audits.filter(Boolean)

agent() запускает одного субагента, pipeline() — по одному на каждый элемент списка, а parallel() — набор агентов одновременно (What the saved script looks like). Затем выберите Yes, run it. 5. Пока он работает, выполните /workflows и выберите свой запуск аудита; если в сессии только один запуск, он откроется сразу. Окно прогресса показывает каждую фазу с числом агентов. ↑ и ↓ выбирают, Enter открывает фазу, а затем агента (его промпт, последние вызовы инструментов и результат), Esc возвращает назад, а p ставит запуск на паузу или возобновляет его (Watch the run). Однострочная сводка прогресса также видна на панели задач под полем ввода (Run a bundled workflow). 6. Когда запуск закончится и его находки появятся в сессии, выполните /workflows, выберите свой запуск аудита (не /deep-research) и нажмите s. В диалоге сохранения Tab переключает между .claude/workflows/ в вашем проекте — после коммита он будет у всех, кто клонирует репозиторий, — и ~/.claude/workflows/, доступным во всех проектах, но только вам. Убедитесь, что выбрана .claude/workflows/ в проекте (если нет — нажмите Tab), затем нажмите Enter (Save the workflow for reuse). Claude Code запишет скрипт как файл .js в ближайшую существующую папку .claude/workflows/ между рабочей папкой и корнем репозитория или, если такой ещё нет, в .claude/workflows/ в корне. Начиная со следующей сессии workflow запускается как команда /<name> и виден в автодополнении / рядом с /deep-research (Bundled workflows).

#Ваша очередь

Задание: соберите workflow, который находит каждый комментарий TODO и FIXME в указанной вами папке, проверяет, актуален ли он для текущего кода, и сообщает только об актуальных. Держите его небольшим: пусть агенты проверяют комментарии несколькими пачками, а не по агенту на комментарий. Выберите две папки, в каждой из которых есть хотя бы один актуальный TODO или FIXME: отчёт, который ничего не нашёл, не ссылается ни на один path:line и не проходит проверку.

Критерии приёмки:

Один из путей: напишите первую версию просьбой «use a workflow» на одной папке и сохраните её, как на шаге 6. Затем выполните /workflow-authoring — он загружает справочник, по которому Claude пишет скрипты, — и попросите Claude изменить сохранённый скрипт так, чтобы он брал папку из args (Edit a saved script). Выполните /reload-skills, затем попросите: Run /<name> on <folder>.

Когда скрипт удовлетворяет остальным критериям, закоммитьте его. Затем запустите его по имени на двух разных папках, не правя между запусками. После каждого запуска попросите Claude сохранить отчёт:

Save that report to .practice/a-3-run1.md: the folder you ran it on as the first line, then one line per item that still applies, starting with its path:line, and nothing else.

Для второй папки используйте .practice/a-3-run2.md.

#Проверка

Урок пройден, когда выполнено всё это:

Запустите npm run check -- a-3 --dir <your repo> из своей копии для практики.

Если не проходит первый пункт, проверьте, что скрипт закоммичен (git check-ignore -v .claude/workflows/<file>.js назовёт правило игнорирования, которое его прячет; добавьте его через git add -f и закоммитьте), и что он читает args. Если отчёт ссылается на path:line вне своей папки или не ссылается ни на один внутри неё, убедитесь, что скрипт берёт папку из args и сообщает только о файлах внутри неё, запускайте claude из корня репозитория, чтобы пути отсчитывались от него, и запустите workflow снова на папке, где есть актуальный TODO или FIXME. Если в упомянутой строке нет TODO или FIXME, значит, либо отчёт ссылается в объяснениях на другие строки, либо файл изменился после запуска: попросите Claude ссылаться только на строки с TODO и FIXME или запустите workflow снова и сохраните новый отчёт промптом выше.

#Осторожно

#Что дальше


Источники: Orchestrate subagents at scale with dynamic workflows · Choose a permission mode · Create custom subagents · CLI reference · Commands · All settings · Tools reference · Claude Code CHANGELOG

← Выбор паттерна оркестрации · Оглавление Продвинутого уровня · Скрипты с claude -p → · Тема: Субагенты и параллельная работа · Застряли на уроке?