Оркестрируйте множество подагентов с помощью динамических workflows
Dynamic workflows оркестрируют множество подагентов из скрипта, который пишет Claude, и вы можете его переиспользовать. Используйте их для аудитов кодовой базы, крупных миграций и перекрёстной проверки исследований.
[!NOTE]
Dynamic workflows доступны на всех платных планах, с доступом к Anthropic API, а также на Amazon Bedrock, Google Cloud's Agent Platform и Microsoft Foundry. На Pro включите их из строки Dynamic workflows в
/config.
Dynamic workflow — это JavaScript-скрипт, который оркестрирует множество подагентов одновременно. Claude пишет скрипт для описанной вами задачи, а runtime выполняет его в фоне, пока ваша сессия остаётся отзывчивой.
Используйте workflow, когда задача требует больше агентов, чем может координировать одна беседа, или когда вы хотите, чтобы оркестрация была закодирована в скрипт, который вы можете прочитать и переиспользовать. Примеры включают сквозную проверку кодовой базы на ошибки, миграцию 500 файлов, исследовательский вопрос, который требует перекрёстной проверки источников друг против друга, и сложный план, стоящий того, чтобы его разработать с нескольких независимых углов перед тем, как вы примете решение.
Когда использовать workflow
Подагенты, skills, команды агентов и workflows могут все запустить многошаговую задачу. Разница в том, кто держит план:
| Подагенты | Skills | Команды агентов | Workflows | |
|---|---|---|---|---|
| Что это | Рабочий Claude, которого вы создаёте | Инструкции, которые следует Claude | Ведущий агент, контролирующий сеансы коллег | Скрипт, который выполняет runtime |
| Кто решает, что запустить дальше | Claude, ход за ходом | Claude, следуя подсказке | Ведущий агент, ход за ходом | Скрипт |
| Где живут промежуточные результаты | Контекстное окно Claude | Контекстное окно Claude | Общий список задач | Переменные скрипта |
| Что повторяемо | Определение рабочего | Инструкции | Определение команды | Сама оркестрация |
| Масштаб | Несколько делегированных задач за ход | То же, что подагенты | Несколько долгоживущих коллег | Десятки-сотни агентов за запуск |
| Прерывание | Перезапускает ход | Перезапускает ход | Товарищи по команде продолжают работать | Возобновляемо в той же сессии |
Workflow перемещает план в код. С подагентами, skills и командами агентов Claude является оркестратором: он решает ход за ходом, что создавать или назначать дальше, и каждый результат попадает в контекстное окно. Скрипт workflow держит цикл, ветвление и промежуточные результаты сам, поэтому контекст Claude содержит только финальный ответ.
Перемещение плана в код также позволяет workflow применить повторяемый паттерн качества, а не просто запустить больше агентов: он может иметь независимых агентов, которые противоречиво рецензируют выводы друг друга перед тем, как они будут доложены, или разработать план с нескольких углов и взвесить их друг против друга, чтобы вы получили более надёжный результат, чем один проход.
Запустить bundled workflow
Самый быстрый способ увидеть workflow в действии — запустить /deep-research, встроенный workflow, который Claude Code включает для исследования вопроса по множеству источников. Вы увидите, как агенты работают через набор фаз в фоне, пока ваша сессия остаётся свободной, и получите один отчёт в конце вместо пошагового транскрипта.
1. Запустить workflow
Запустите /deep-research с вопросом, который вы хотите исследовать. Он распределяет веб-поиски по нескольким углам, получает и перекрёстно проверяет найденные источники и синтезирует цитируемый отчёт.
/deep-research What changed in the Node.js permission model between v20 and v22?
2. Разрешить workflows
Claude Code спрашивает, разрешить ли workflow. Выберите Yes для продолжения. Точный запрос разрешения зависит от вашего режима разрешений. Смотрите Одобрить план перед его запуском для опций для каждого режима.
3. Смотреть прогресс
Запуск начинается в фоне. Запустите /workflows, чтобы открыть его представление прогресса:
/workflows
Если вместо этого /workflows показывает список запусков, выберите только что начатый запуск и нажмите Enter. Представление показывает каждую фазу с количеством агентов. Углубитесь в любую фазу, чтобы увидеть её агентов и то, что каждый из них нашёл. Смотрите Смотреть запуск для полного набора элементов управления.
Вы также можете смотреть из панели задач ниже поля ввода: там появляется однострочное резюме прогресса во время выполнения запуска. Нажмите стрелку вниз для фокусировки, затем Enter для расширения.
4. Прочитать отчёт
Когда запуск завершится, отчёт попадает в вашу сессию. Он цитирует источники, из которых каждое утверждение пришло, с утверждениями, которые не пережили перекрёстную проверку, уже отфильтрованными.
Когда агенты-верификаторы не могут проверить утверждение, например после ограничения скорости или ошибки API, отчёт указывает это утверждение как непроверенное вместо того, чтобы считать его опровергнутым.
Чтобы запустить workflow для вашей собственной задачи, попросите Claude написать один, и как только запуск сделает то, что вы хотели, вы можете сохранить его как команду вашу собственную.
Bundled workflows
Claude Code включает /deep-research как встроенный workflow:
| Команда | Что она делает |
|---|---|
/deep-research <question> |
Распределяет веб-поиски по вопросу по нескольким углам, получает и перекрёстно проверяет найденные источники, голосует по каждому утверждению и возвращает цитируемый отчёт с утверждениями, которые не пережили перекрёстную проверку, отфильтрованными. Требует, чтобы инструмент WebSearch был доступен |
/deep-research запускается только при его вызове.
Workflows, которые вы сохраняете сами, становятся командами таким же образом и появляются в автодополнении / рядом с встроенными.
Смотреть запуск
Workflows работают в фоне, поэтому сессия остаётся отзывчивой, пока агенты работают. Запустите /workflows в любое время для списка работающих и завершённых workflows, затем выберите один для открытия его представления прогресса. Когда в сессии только один запуск, /workflows пропускает список и сразу открывает этот запуск. Чтобы остановить работающий workflow из списка без его открытия, выберите его и нажмите x.
Представление прогресса показывает каждую фазу с количеством её агентов. Нижний колонтитул перечисляет ключ для каждого действия:
| Ключ | Действие |
|---|---|
↑ / ↓ |
Выбрать фазу или агента |
Enter или → |
Углубиться в выбранную фазу, затем в агента. В деталях нажмите Enter для расширения или сворачивания |
Esc или ← |
Вернуться на один уровень назад |
j / k |
Прокручивать в деталях агента, когда это переполняется |
f |
Фильтровать список агентов в выбранной фазе по статусу. Нажмите снова для циклирования |
p |
Приостановить или возобновить запуск |
x |
Остановить выбранного агента или остановить весь workflow, когда фокус находится на запуске |
r |
Перезапустить выбранного работающего агента |
s |
Сохранить скрипт запуска как команду |
Деталь агента перечисляет подсказку агента, его недавние вызовы инструментов и его результат. Каждый вызов показывает его состояние, например всё ещё выполняется или не удалось. Когда агент ведёт собственный список задач, деталь показывает его также, с статусом каждой задачи.
Нажмите Enter для расширения деталей. Подсказка и результат затем показываются полностью, и каждый перечисленный вызов показывает его входные данные и начало его результата.
Попросить Claude написать workflow
Вы можете попросить Claude написать workflow для вашей задачи двумя способами:
- Попросить workflow в вашей подсказке в ваших собственных словах или включив ключевое слово
ultracode, и Claude напишет один для задачи. - Позволить Claude решить с ultracode: установите
/effort ultracodeи Claude спланирует workflow для каждой существенной задачи в сессии.
Вы также можете запустить команду workflow, которая уже существует: bundled workflow как /deep-research, или один, который вы сохранили.
Попросить workflow в вашей подсказке
Чтобы запустить одну задачу как workflow без изменения уровня усилий сессии, включите ключевое слово ultracode в вашу подсказку. Просьба в ваших собственных словах, например "использовать workflow" или "запустить workflow", также работает: Claude рассматривает прямой запрос как то же самое согласие.
ultracode: audit every API endpoint under src/routes/ for missing auth checks
Claude Code выделяет ключевое слово в вашем вводе и Claude пишет скрипт workflow для задачи вместо того, чтобы работать через него ход за ходом. Ключевое слово только выбирает, как Claude структурирует работу: вызовы инструментов агентов получают те же проверки разрешений и sandboxing, что и любой другой вызов инструмента в сессии.
Если запуск делает то, что вы хотели, вы можете сохранить его как команду после этого. Если у вас уже есть оркестратор, построенный другим способом, например папка подсказок подагентов или навык, который распределяет работу, вы можете указать Claude на него и попросить workflow, который делает то же самое.
Отменить или отключить ключевое слово
Если вы не имели в виду запустить workflow, нажмите Option+W на macOS или Alt+W на Windows и Linux, чтобы отменить выделение для этой подсказки, или нажмите backspace, пока курсор находится прямо после выделенного ключевого слова. Чтобы остановить ключевое слово от срабатывания вообще, отключите Ultracode keyword trigger в /config.
Где работает ключевое слово
Ключевое слово — это согласие только в подсказке, которую вы вводите сами: в интерактивной подсказке, в панели расширения IDE, в клиенте Remote Control или в приложении Agent SDK, которое помечает origin вашего ввода с клавиатуры как { kind: "human" }. Это не запускает workflow, когда он достигает сессию другим способом:
- подсказка, переданная с
-p - подсказка, которую приложение Agent SDK отправляет без пометки её как ввода человека
- подсказка запланированной задачи
- полезная нагрузка webhook или комментарий pull request, переданные в разговор
Позволить Claude решить с ultracode
Ultracode — это параметр Claude Code, который включает автоматическую оркестрацию workflow для сессии на любом уровне усилий, на котором работает сессия. С ним включённым, Claude планирует workflow для каждой существенной задачи вместо того, чтобы ждать, пока вы попросите. Включите его в подсказку Claude Code:
/effort ultracode
Чтобы начать сессию с уже включённым ultracode, запустите claude --effort ultracode — это также устанавливает уровень effort xhigh.
Чтобы включить его с помощью ползунка /effort, нажмите Tab для переключения переключателя Ultracode, затем Enter для применения. Раздел Регулировка уровня усилий перечисляет маршруты, которые включают ultracode.
С ultracode включённым, Claude решает, когда задача требует workflow. Один запрос может превратиться в несколько workflows подряд: один для понимания кода, один для внесения изменения и один для его проверки. Это применяется к каждой задаче в сессии, поэтому каждый запрос использует больше токенов и занимает больше времени, чем тот же запрос без workflow. На плане подписки эти токены расходуют ваши лимиты использования, поэтому сессия с включённым ultracode достигает лимита сессии или недельного лимита раньше, чем та же работа с ним отключённым.
Включение ultracode уже предполагает согласие на большие запуски, поэтому эти проверки не применяются, пока он включён:
- Предупреждение
Large workflowне появляется при запуске workflow - concurrent subagent limit сессии не применяется для подагентов, которых Claude создаёт с помощью инструмента Agent
- В режиме автоматического разрешения вас не просят одобрить первый запуск workflow
/effort ultracode действует в течение текущей сессии; чтобы каждая сессия начиналась с ним, установите настройку ultracode. Отключите его с помощью /effort ultracode off, когда вернётесь к рутинной работе. Ползунок /effort предлагает переключатель только когда ultracode доступен. До версии v2.1.284 /effort ultracode устанавливал для сессии уровень xhigh, а /effort ultracode off завершался ошибкой Invalid argument.
Одобрить план перед его запуском
В CLI подсказка для каждого запуска показывает запланированные фазы и эти опции:
- Yes, run it: начать запуск
- Yes, and don't ask again for
<name>in<path>: начать и пропустить эту подсказку для этого workflow в этом проекте с этого момента. Claude Code предлагает эту опцию, когда вы запускаете bundled, сохранённый или plugin workflow по имени, а не для скрипта, который Claude написал для текущей задачи. - View raw script: прочитать скрипт перед решением
- No: отменить
Ctrl+G открывает скрипт в вашем редакторе. Когда выбран вариант Yes, run it или No, нажмите Tab, чтобы добавить комментарий к ответу.
Видите ли вы эту подсказку, зависит от вашего режима разрешений:
| Режим разрешений | Когда вас спрашивают |
|---|---|
| Auto | Только первый запуск. Любой Yes записывает согласие в ваши пользовательские параметры, и более поздние запуски начинаются без подсказки. Полностью пропущено, когда ultracode включён |
| Manual, accept edits | Каждый запуск, если вы не выбрали Yes, and don't ask again для этого workflow в этом проекте |
| Bypass permissions | Claude Code не спрашивает вас. Запуск начинается немедленно |
claude -p, Agent SDK |
Claude Code не спрашивает вас |
В claude -p и Agent SDK Claude Code никогда не показывает эту подсказку. Он запускает вызов инструмента Workflow через ту же оценку разрешений, что и остальная часть сессии, поэтому правила отказа, правила запроса и режим dontAsk применяются к запуску, как они применяются к каждому вызову инструмента. Чтобы позволить workflow начать в этих запусках, используйте один из этих:
- Правило разрешений: добавьте
Workflowв ваши правила разрешения, чтобы одобрять каждый workflow, илиWorkflow(<name>), чтобы одобрить один сохранённый workflow по имени. - Авторежим: работайте в авторежиме, где классификатор проверяет вызов и может его одобрить.
- Режим обхода разрешений: работайте в режиме обхода разрешений.
- Хук: верните
"allow"для вызова из хукаPreToolUse. В режиме планирования workflow не запускается только на основании одобрения хука, поэтому там используйте вместо этого правило разрешений или подтверждение вашего хоста. - Ваш хост:
--permission-prompt-toolили, в случае Agent SDK, callbackcanUseToolодобряет его.
В приложении Desktop карточка одобрения показывает имя workflow, список фаз и предупреждение об использовании токенов, с действиями Once, Always и Deny. Представление прогресса появляется в боковой панели Background tasks.
Подагенты, которые создаёт workflow, используют ваши правила разрешений, и Claude Code выбирает их режим разрешений по правилам под в каком режиме разрешений работает подагент. Чтобы избежать подсказок на длительном запуске, добавьте инструменты, которые нужны агентам, в ваши правила разрешения перед запуском.
Сохранить workflow для переиспользования
Когда Claude пишет workflow для задачи, которую вы будете повторять, вы можете сохранить скрипт этого запуска как команду. Процесс, как проверка, которую вы запускаете на каждой ветке, затем запускает ту же оркестрацию каждый раз.
Запустите /workflows, выберите запуск, который вы хотите сохранить, и нажмите s. В диалоге сохранения Tab переключается между двумя местами сохранения:
.claude/workflows/в вашем проекте: общее с каждым, кто клонирует репо~/.claude/workflows/в вашем домашнем каталоге: доступно в каждом проекте, видимо только вам. Если вы установилиCLAUDE_CONFIG_DIR, это местоположение — это каталогworkflows/под этим путём.
Диалоговое окно сохранения показывает полный путь для личного местоположения. Нажмите Enter для сохранения. Workflow запускается как /<name> в будущих сессиях из любого местоположения.
Claude Code проверяет местоположение сохранения на наличие символических ссылок перед записью и показывает ошибку вместо записи через символическую ссылку:
- Местоположение проекта: Claude Code отказывает, если
.claude,.claude/workflowsили целевой файл является символической ссылкой. - Личное местоположение: Claude Code отказывает только если сам целевой файл является символической ссылкой, поэтому каталог
~/.claude, управляемый инструментом dotfiles, всё ещё работает.
В монорепо с несколькими каталогами .claude/ вы можете хранить workflows рядом с пакетом, к которому они применяются. Сохранение в местоположение проекта записывает в ближайший каталог .claude/workflows/, который уже существует между вашей рабочей директорией и корнем репозитория, или в корень репозитория, если ни один ещё не существует. Workflows проекта также загружаются из каждого .claude/workflows/ вдоль этого пути, и когда более одного определяет одно имя, Claude Code запускает тот, который ближе всего к рабочей директории.
Если project workflow и personal workflow имеют одно имя, запускается project.
Распределить workflow в plugin
Чтобы поделиться workflow между командами или репозиториями, включите его в plugin. Поместите скрипт в каталог workflows/ в корне plugin или укажите другое местоположение с помощью поля манифеста workflows.
Plugin workflows имеют пространство имён по имени plugin. Plugin под названием acme-tools, содержащий скрипт, чьё meta.name — это release-audit, запускается как /acme-tools:release-audit.
Передать входные данные в сохранённый workflow
Сохранённый workflow может принимать входные данные через параметр args. Скрипт читает его как глобальную переменную с именем args. Используйте это для предоставления исследовательского вопроса, списка целевых путей или объекта конфигурации во время вызова вместо редактирования скрипта для каждого запуска.
Следующая подсказка запускает сохранённый workflow со списком номеров проблем:
Run /triage-issues on issues 1024, 1025, and 1030
Claude передаёт список как структурированные данные, поэтому скрипт может вызывать методы массива и объекта на args напрямую без предварительного анализа. Если args опущен, глобальная переменная имеет значение undefined внутри скрипта.
Примеры подсказок workflow
Workflow подходит лучше всего, когда задача больше, чем один агент может держать в контексте, или когда один и тот же шаг нужно запустить по множеству элементов. Подсказки ниже показывают общие формы. Каждая просит Claude написать и запустить workflow для этой задачи; вы не пишете скрипт сами.
Аудит множества файлов на одну и ту же проблему
Распределите одного агента на файл, затем соберите и проверьте выводы.
use a workflow to audit every route handler under src/routes/ for missing authentication checks, and adversarially verify each finding before reporting it
Продолжайте исправлять, пока проверка не пройдёт
Запустите проверку, исправьте то, что не прошло, и повторяйте, пока это не пройдёт или не перестанет делать прогресс.
use a workflow to run npx tsc --noEmit and keep fixing the reported errors until the type check passes or two rounds in a row make no progress
Мигрировать множество файлов параллельно
Обнаружьте файлы для миграции, преобразуйте каждый в изолированную копию, чтобы редактирования не конфликтовали, и проверьте каждый результат.
use a workflow to migrate every component under src/components/ from JavaScript to TypeScript, working on each file in its own isolated copy
Проверить каждый изменённый файл и написать одно резюме
Запустите рецензента на файл, затем передайте все выводы одному агенту, который ранжирует и дедублирует их.
use a workflow to review every file changed in this PR for correctness issues, then merge the per-file findings into one ranked summary
Исследовать тему по множеству источников
Распределите читателей по changelogs, issues и docs, затем синтезируйте. Встроенный workflow /deep-research делает это; вы также можете описать более узкую версию.
use a workflow to research how our three competitors handle rate limiting: read their public docs and recent changelog entries in parallel, then compare the approaches
Найти проблемы, пока список не перестанет расти
Продолжайте искать в раундах и остановитесь, когда новые раунды не найдут ничего нового.
use a workflow to find flaky tests in this repo: run the suite repeatedly, record which tests fail intermittently, and stop once two rounds in a row find nothing new
Как выглядит сохранённый скрипт
Когда вы сохраняете workflow, файл в .claude/workflows/ содержит блок meta, за которым следует тело скрипта, который оркестрирует подагентов. Обычно вам не нужно его редактировать, но вот форма маленького, чтобы вы могли узнать, что Claude сгенерировал:
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)
Тело — это простой JavaScript с top-level await. agent() создаёт один подагент, pipeline() запускает один на элемент в списке, а parallel() запускает набор задач агента одновременно и ждёт завершения всех из них.
Вызов agent() разрешается в null, если вы остановите его во время выполнения или он столкнётся с неустранимой ошибкой API. pipeline() сохраняет каждый null в массиве результатов, поэтому пример заканчивается на .filter(Boolean), чтобы удалить эти записи, включая слот агента, который зависал при каждой попытке.
В режиме auto подсказка, которую ваш скрипт передаёт в agent(), не считается запросом от вас, когда классификатор проверяет действия этого подагента, потому что Claude Code отмечает её как текст, вычисленный скриптом.
Если вы передаёте schema при вызове agent(), этот подагент возвращает JSON, соответствующий форме, вместо прозы. Claude Code проверяет схему перед запуском подагента: когда он может доказать, что схема противоречит сама себе, вызов завершается с ошибкой, называющей противоречие, и подагент никогда не запускается. Одно противоречие, которое он может доказать, — это ключ required, который additionalProperties: false исключает.
Если выход подагента всё ещё не проходит валидацию после пяти попыток, вызов завершается с ошибкой, которая включает последний отказ валидации. Чтобы изменить количество попыток, установите MAX_STRUCTURED_OUTPUT_RETRIES.
Отредактировать сохранённый скрипт
Чтобы изменить workflow, который вы сохранили, отредактируйте его файл .js или попросите Claude внести изменение. Перед редактированием или запросом запустите встроенный skill /workflow-authoring bundled skill, чтобы загрузить справочник по написанию скриптов, из которого работает Claude. Skill требует Claude Code v2.1.248 или позже.
Чтобы запустить отредактированную версию в текущем сеансе, запустите /reload-skills, чтобы перечитать директории workflow, затем снова запустите /<name>.
Claude Code применяет эти правила к каждой части файла при загрузке и запуске скрипта:
- Блок
meta: сохраняйтеexport const metaкак первый оператор и сохраняйте его простым объектным литералом сnameиdescription. Если он содержит что-либо, кроме литеральных значений, такое как переменная, вызов функции или spread, Claude Code удаляет/<name>из автодополнения/. - Тело: помимо
agent(),pipeline()иparallel(), вы можете вызватьphase(), чтобы сгруппировать следующих агентов под заголовком в представлении прогресса, вызватьlog(), чтобы показать сообщение над фазами, и прочитать глобальныйargs. Если тело имеет синтаксическую ошибку, Claude Code сообщит об этом при запуске workflow. phases: если вы перечислите их вmeta, дайте каждой записи ровно заголовок, который вы передаёте вphase(). Заголовокphase()без записи получает свою собственную группу прогресса.- Временные метки и случайность: Claude Code заставляет
Date.now(),Math.random()иnew Date()без аргументов выбрасывать исключение внутри скрипта, чтобы перезапущенный запуск повторял те же вызовыagent(). Вместо этого передайте временную метку черезargs.
Вы также можете отредактировать скрипт одного запуска вместо сохранённой копии. Возобновление после паузы охватывает, какие агенты запускаются снова при перезапуске отредактированного скрипта. Для входов инструмента Workflow смотрите его запись в справочнике Agent SDK.
Как выполняется workflow
Среда выполнения workflow выполняет скрипт в изолированной среде, отдельно от вашего разговора. Промежуточные результаты остаются в переменных скрипта вместо того, чтобы попадать в контекст Claude.
Если Claude не запускает выполнение по пути к файлу скрипта, Claude Code записывает скрипт запуска в файл в каталоге вашей сессии в ~/.claude/projects/. Claude получает путь к скрипту при начале запуска, поэтому вы можете попросить его. Вы можете открыть этот файл, чтобы прочитать оркестровку, которую написал Claude, сравнить его со скриптом предыдущего запуска или отредактировать его и попросить Claude перезапустить с отредактированной версией.
Claude может запустить workflow только из файла скрипта, который сессия уже имеет право читать. Чтобы запустить скрипт, находящийся вне вашего рабочего каталога, сначала добавьте его каталог с помощью /add-dir или правила allow для Read.
Среда выполнения отслеживает результат каждого агента по мере выполнения запуска, что делает запуск возобновляемым в рамках одной сессии.
Prompt caching в fan-out
Агенты в одном запуске могут читать prompt cache друг друга. Два агента, которые работают с одной и той же моделью, уровнем усилий, типом агента, инструментами, схемой вывода и рабочим каталогом, создают один и тот же префикс инструментов и системного приглашения, поэтому агент, который запускается после того, как ответ соответствующего соседнего агента начал обрабатываться, читает кэш этого соседнего агента при первом запросе.
Запросы агента workflow выходят за пределы TTL bucket кэша основного разговора, поэтому его кэш сохраняется в течение пяти минут по умолчанию, включая подписку Claude. Чтобы сохранить его на час, установите subagentPromptCacheTtl на 1h. API выставляет счета за записи кэша на 1 час по более высокому тарифу.
Когда fan-out запускает несколько соответствующих агентов одновременно, Claude Code удерживает всех, кроме первого, до тех пор, пока ответ первого агента не начнет обрабатываться, затем отпускает удерживаемых агентов вместе, чтобы их первые запросы читали общий префикс вместо того, чтобы каждый обрабатывал его без кэша. Claude Code ограничивает удержание CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS миллисекундами, 5000 по умолчанию. Установите его на 0, чтобы отключить удержание.
Поведение и ограничения
Среда выполнения применяет следующие ограничения:
| Ограничение | Причина |
|---|---|
| Нет ввода пользователя во время выполнения | Запуск приостанавливается самостоятельно только для запросов разрешения агента и ожидания лимита использования. Для утверждения между этапами запустите каждый этап как отдельный workflow |
| Нет прямого доступа к файловой системе или shell из самого workflow | Агенты читают, записывают и выполняют команды. Скрипт координирует агентов |
Нет загрузки модулей: скрипт, содержащий import(), не запускается до начала выполнения |
Тело скрипта — это простой JavaScript. Поместите работу, которая требует библиотеки, в задачу агента |
До 16 одновременных агентов по умолчанию, меньше, когда Claude Code имеет меньше доступных процессоров, включая внутри контейнера с ограничением процессора. Чтобы изменить лимит, установите CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS на значение от 1 до 256, что требует Claude Code v2.1.269 или позже |
Ограничивает локальное использование ресурсов |
| В fan-out агенты, которые совместно используют префикс prompt-cache первого агента, запускаются до 5 секунд после него по умолчанию | Все, кроме первого, читают префикс, который кэшировал первый агент, вместо того чтобы каждый обрабатывал его без кэша |
До 4096 элементов в одном вызове parallel() или pipeline(): среда выполнения отклоняет более длинный список с ошибкой |
Молчаливый лимит отбросил бы часть рабочей нагрузки без уведомления скрипта |
| 1000 агентов всего за запуск | Предотвращает бесконечные циклы |
Управление запусками
После начала запуска вы управляете им из представления /workflows или развернув строку его прогресса в панели задач под полем ввода.
Когда вы останавливаете запуск, он остаётся в панели задач, пока процессы каких-либо его агентов ещё выполняются. Если вы остановите его снова, Claude Code повторно отправит сигнал этим процессам.
Возобновление после паузы
Чтобы возобновить приостановленный запуск, выберите его в /workflows и нажмите p. Для остановленного вами запуска попросите Claude перезапустить рабочий процесс с тем же скриптом. Если агенты из остановленного запуска ещё не завершились, Claude Code отказывает в перезапуске, пока они не завершатся, чтобы вторая копия этих агентов не могла работать параллельно с ними.
Какие агенты запускаются повторно
Claude Code воспроизводит запуск в том порядке, в котором стартуют агенты, и каждый агент либо возвращает сохранённый результат, либо выполняется снова:
-
Завершённый: возвращает сохранённый результат. Первый агент, чей промпт отличается от предыдущего запуска, потому что вы отредактировали скрипт или более ранний агент вернул что-то другое, выполняется снова, как и каждый агент после него, даже завершённые.
До v2.1.305 завершённые агенты также могли выполняться снова, когда вы перезапускали неизменённый скрипт, в котором элементы
pipeline()или задачиparallel()запускали более одного агента каждый. Чтобы прекратить такие повторные выполнения для новых запусков, обновите Claude Code. -
Ещё выполнявшийся на момент остановки: начинает заново. Остановка всего запуска не засчитывает ни одного агента как завершившегося с ошибкой.
-
Завершившийся с ошибкой из-за лимита использования в v2.1.318 или новее: выполняется снова, а завершённые агенты возвращают свои сохранённые результаты. Если после ошибки ваш скрипт вызвал другого агента и тот вернул результат, каждый агент, которого скрипт запускает после завершившегося с ошибкой, также выполняется снова.
-
Завершившийся с ошибкой: выполняется снова, как и каждый агент, которого скрипт запускает после него, даже завершённые. Остановка отдельного агента, когда вы выбираете его в
/workflowsи нажимаетеx, считается ошибкой.
Последний случай означает, что агент в состоянии Завершившийся с ошибкой посреди параллельного ветвления приводит к повторному выполнению уже завершённой работы. Если скрипт запускает A, B, C и D в таком порядке и B находится в состоянии Завершившийся с ошибкой, перезапуск возвращает A из кэша и снова выполняет B, C и D.
Если вы отредактируете скрипт, запускавший A, B, C и D, так, что он запускает A, C, B и D, то вторым стартующим агентом теперь будет C, тогда как в предыдущем запуске стартовал B. Перезапуск возвращает A из кэша и снова выполняет C, B и D.
Возобновление после выхода из сессии
Если вы переводите сессию в фоновый режим или выходите из Claude Code, пока запуск рабочего процесса выполняется, запуск не продолжается сам по себе. Запуск продолжается только тогда, когда Claude перезапускает его вызовом Workflow, который воспроизводит запуск на основе сохранённых результатов.
- Вы перевели сессию в фоновый режим или выбрали
Move to background and exit: если запуск не продолжился, когда вы проверяете фоновую сессию, попросите Claude там перезапустить рабочий процесс. В зависимости от вашего режима разрешений Claude Code сначала попросит вас подтвердить перезапуск. Если сессия отображается в разделеNeeds inputв представлении агентов, подключитесь к ней, чтобы ответить на запрос подтверждения. - Перезапуск в фоновой сессии завершился ошибкой
nothing to resume: попросите Claude начать рабочий процесс заново как новый запуск. Если Claude начал запуск по пути к файлу скрипта вне~/.claude/projects/, например в вашем рабочем каталоге, Claude не сможет перезапустить его в фоновой сессии. - Вы выбрали
Exit and stop tasksили вам не был предложенMove to background and exit: запуск остановился вместе с сессией, и Claude Code хранит сохранённые результаты запуска в каталоге этой сессии в~/.claude/projects/. Возобновите сессию командойclaude --resumeв оболочке, затем попросите Claude перезапустить рабочий процесс. В новой сессии у Claude нет предыдущего запуска для перезапуска, и он начинает рабочий процесс заново.
В облачной сессии Claude Code также сохраняет результаты запуска вместе с историей диалога сессии, которая сохраняется, когда виртуальная машина сессии освобождается. Когда вы повторно открываете такую сессию и просите Claude перезапустить рабочий процесс, завершённые агенты по-прежнему возвращают свои сохранённые результаты.
Как в локальных, так и в облачных сессиях, когда Claude перезапускает более ранний запуск, а Claude Code вообще не может найти сохранённые результаты этого запуска, перезапуск завершается ошибкой nothing to resume вместо того, чтобы самостоятельно начать запуск заново. Попросите Claude начать рабочий процесс заново как новый запуск.
Когда запуск достигает лимита использования
Когда агент достигает вашего лимита использования claude.ai, запуск приостанавливается, а не завершает этого агента с ошибкой. Агенты, достигшие лимита, ждут сброса, и новые агенты не запускаются. Вскоре после сброса лимита ожидающие агенты выполняются снова, и запуск продолжается сам по себе. Требуется Claude Code v2.1.271 или новее либо v2.1.319 или новее на вкладке Code в Desktop. В более ранних версиях затронутые агенты завершаются с ошибкой.
Пока запуск ожидает, строка его прогресса в панели задач и заголовок /workflows показывают, когда лимит будет сброшен. На вкладке Code запуск показывает строку вида Paused at usage limit · continues after 3:45 PM if the app stays open. Не закрывайте приложение.
Запуск приостанавливается, только если выполняются все следующие условия; если какое-либо из них не выполняется, затронутый агент вместо этого завершается с ошибкой:
- Вход в сессию выполнен с подпиской claude.ai без оплаты по фактическому использованию, и сессия относится к одному из следующих типов:
- Интерактивная сессия в терминале. Запуск не приостанавливается в неинтерактивном режиме с
claude -pили в Agent SDK, в фоновой сессии, а также в сессии Remote Control или в сессии участника команды агентов. - Локальная сессия, которую вы начали на вкладке Code. Запуск не приостанавливается в сессии SSH, WSL, Dispatch или запланированной задачи, в сессии, начатой из Remote Control или через корпоративный лаунчер, а также если задана
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC.
- Интерактивная сессия в терминале. Запуск не приостанавливается в неинтерактивном режиме с
- Включена настройка
autoContinueAtUsageLimit— та же настройка, которая позволяет самой сессии ждать сброса лимита использования. Если вы отключите её во время ожидания, ожидание прекращается, и ожидающие агенты завершаются с ошибкой. - На вкладке Code флажок Auto-continue when limits reset на карточке лимита сессии установлен, как и по умолчанию. Если вы снимете его, запуски в ваших сессиях на вкладке Code перестанут приостанавливаться, если только управляемые настройки не задают для
autoContinueAtUsageLimitзначениеtrue. - Лимит сбрасывается в течение 24 часов. Недельный лимит может сбрасываться позже.
- Запуск ещё не ожидал дважды. Когда он достигает лимита в третий раз, агент завершается с ошибкой.
Чтобы завершить запуск, агенты которого завершились с ошибкой из-за лимита, попросите Claude перезапустить рабочий процесс после сброса лимита.
Когда агент зависает и перезапускается
Агент, вывод которого перестаёт поступать достаточно долго, начинает заново с того же промпта. В /workflows к его имени добавляется суффикс (retry 1), а в его сведениях отображается attempt 2 (stalled). Перезапуск происходит автоматически, поэтому вам ничего делать не нужно.
Новая попытка начинается без транскрипта зависшей попытки. Файлы, которые зависшая попытка уже изменила, остаются изменёнными, а потраченные ею токены остаются в общем итоге запуска. Окно зависания — это время, в течение которого Claude Code ждёт вывода от агента, прежде чем завершить попытку. Время, которое агент тратит на ожидание собственных вызовов инструментов или сброса лимита использования, не учитывается в окне зависания.
Агент перезапускается не более пяти раз, включая любой перезапуск, который вы запрашиваете с помощью r. Если шестая попытка тоже зависает, вызов agent() завершается с ошибкой, и начало сообщения об ошибке объясняет причину:
agent stalled on all 6 attempts: каждая попытка провела всё окно без вывода. Если работа агента заставляет его молчать так долго, увеличьте окноagent lost its reply on all 6 attempts: поток ответа каждой попытки замолкал, и Claude Code переставал его ждать. Увеличение окна зависания не помогает, поскольку сторожевой таймер простоя потоковой передачи завершил ответ раньше, а таймаут этого сторожевого таймера задаётся черезCLAUDE_STREAM_IDLE_TIMEOUT_MSagent abandoned after 6 attempts: попытки завершились по-разному, и ошибка перечисляет их по порядку
Чтобы дать агенту больше времени на вывод до окончания окна:
- Один агент: передайте
stallMsв миллисекундах в его вызовеagent(), напримерagent(prompt, { stallMs: 1800000 })для 30 минут - Все агенты: задайте
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS, которая также применяется к субагентам вне рабочих процессов
Продолжится ли запуск после ошибки, зависит от того, как ваш скрипт вызвал агента:
- Внутри
parallel()илиpipeline(): запуск продолжается сnullвместо результата агента - С прямым ожиданием через await: запуск завершается с ошибкой
Чтобы попробовать снова, попросите Claude перезапустить рабочий процесс. Что выполняется повторно, описано в разделе Возобновление после паузы.
Стоимость
Рабочий процесс порождает много агентов, поэтому один запуск может использовать заметно больше токенов, чем выполнение той же задачи в диалоге. Запуски учитываются в использовании вашего плана и в ограничениях частоты запросов.
Чтобы оценить расходы перед тем, как браться за большую задачу, сначала запустите рабочий процесс на небольшой части: один каталог вместо всего репозитория или узкий вопрос вместо широкого. Представление /workflows показывает использование токенов каждым агентом по мере выполнения запуска, и вы можете остановить запуск там в любой момент, обычно не теряя завершённую работу. Что сохраняет остановленный запуск, описано в разделе Возобновление после паузы. Ограничения на число агентов в среде выполнения ограничивают, сколько агентов может породить один запуск, что ограничивает стоимость вышедшего из-под контроля скрипта. Чтобы запуски использовали меньше агентов, выберите ориентир по размеру small.
Claude Code также помечает запуск, который становится необычно большим. Когда рабочий процесс планирует более 25 агентов или его прогнозируемое общее число токенов превышает 1,5 миллиона, строка его прогресса в панели задач под полем ввода показывает предупреждение Large workflow. Предупреждение направляет вас в /workflows, где вы можете остановить запуск.
Предупреждение носит рекомендательный характер: оно не приостанавливает и не ограничивает запуск. От двух настроек зависит, когда вы его видите:
- Если вы сами выбираете ориентир по размеру, его число агентов заменяет порог в 25 агентов. Встроенный ориентир по умолчанию оставляет порог равным 25.
- В сессиях с включённым ultracode предупреждение не показывается, потому что включение ultracode уже означает ваше согласие на большие запуски.
Claude Code выбирает модель каждого агента рабочего процесса в том же порядке, что и для субагентов. Модель, которую скрипт указывает для этапа, считается моделью для конкретного вызова в этом порядке. Когда ничто другое её не назначает, агент работает на модели вашей сессии.
Чтобы контролировать стоимость моделей:
- Проверьте
/modelперед большим запуском, если вы обычно переключаетесь на меньшую модель для рутинной работы - При описании задачи попросите Claude использовать меньшую модель для этапов, которым не нужна самая мощная
Когда список разрешённых моделей availableModels вашей организации блокирует модель, которую скрипт запрашивает для агента, этот агент вместо неё работает на замещающей модели в соответствии с теми же правилами замены, что и для субагентов.
Задание ориентира по размеру
Ориентир по размеру сообщает Claude, на какое число агентов ориентироваться при написании динамического рабочего процесса. Claude Code передаёт ориентир Claude как совет, а не как ограничение, поэтому промпт, требующий другого масштаба, всё равно его переопределяет.
Каждое значение соответствует числу агентов:
| Значение | Число агентов, на которое ориентируется Claude |
|---|---|
unrestricted |
Без ориентира: Claude подбирает размер рабочего процесса под задачу |
small |
Менее 5 агентов |
medium |
Менее 10 агентов |
large |
Менее 50 агентов |
Значение по умолчанию — medium, или small, если вы вошли с тарифом Pro и используете Claude Code v2.1.271 или новее. Пока вы не выберете значение, строка в /config помечает значение как используемое по умолчанию, а строка рабочего процесса Running in background называет действующий размер.
Чтобы изменить ориентир, выберите значение для настройки Dynamic workflow size в /config или выполните /config workflowSizeGuideline=small. Вы также можете задать ключ workflowSizeGuideline в любом файле настроек; это значение имеет приоритет над /config, и Claude Code скрывает строку в /config, пока файл настроек его задаёт.
Изменения вступают в силу со следующего промпта. Ограничения на число агентов в среде выполнения применяются независимо от этой настройки.
Отключение рабочих процессов
Рабочие процессы доступны в CLI, приложении Desktop, расширениях IDE, неинтерактивном режиме с claude -p и Agent SDK. Одни и те же настройки отключения действуют во всех интерфейсах.
Чтобы отключить рабочие процессы для себя:
- Выключите Dynamic workflows в
/config. Сохраняется между сессиями. - Задайте
"disableWorkflows": trueв~/.claude/settings.json. Сохраняется между сессиями. - Задайте
CLAUDE_CODE_DISABLE_WORKFLOWS=1. Считывается при запуске, поэтому действует везде, где вы её задали.
Чтобы отключить рабочие процессы для всей организации, задайте "disableWorkflows": true в управляемых настройках или используйте переключатель на странице настроек администратора Claude Code.
Когда рабочие процессы отключены:
/workflows, команды рабочих процессов и скилл/workflow-authoringнедоступны- Ключевое слово
ultracodeбольше не запускает рабочий процесс, а переключатель Ultracode удаляется из/effort
Запуск, который уже выполнялся, продолжается.
Отключение рабочих процессов также делает ultracode недоступным. Нет управляемой настройки, которая запрещала бы только ultracode: везде, где он доступен, пользователи могут включить его с помощью /effort ultracode. Ограничение effort снижает уровень effort, на котором работает сессия с включённым ultracode, но не отключает ultracode.
Связанные ресурсы
- Запустить агентов параллельно: сравнить подагентов, представление агента, команды агентов и workflows
- Создать пользовательские подагенты: примитив рабочего, который оркестрируют workflows
- Управлять затратами: как многоагентные запуски считаются в сторону ограничений использования