SpyBara
Go Premium

workflows.md 2026-11-05 23:03 UTC to 2026-11-06 23:01 UTC

No changes for this document in this history range.

2026
Tue 10 21:57

Оркестрируйте множество подагентов с помощью динамических 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, которая уже существует: 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 уже предполагает согласие на большие запуски, поэтому эти проверки не применяются, пока он включён:

/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, callback canUseTool одобряет его.

В приложении 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.

  • Ещё выполнявшийся на момент остановки: начинает заново. Остановка всего запуска не засчитывает ни одного агента как завершившегося с ошибкой.

  • Завершившийся с ошибкой: выполняется снова, как и каждый агент, которого скрипт запускает после него, даже завершённые. Остановка отдельного агента, когда вы выбираете его в /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 или новее; в более ранних версиях затронутые агенты завершаются с ошибкой.

Пока запуск ожидает, строка его прогресса в панели задач и заголовок /workflows показывают, когда лимит будет сброшен.

Запуск приостанавливается, только если выполняются все следующие условия; если какое-либо из них не выполняется, затронутый агент вместо этого завершается с ошибкой:

  • Сессия интерактивная, и вход выполнен с подпиской claude.ai. Запуск не приостанавливается в неинтерактивном режиме с claude -p или в Agent SDK, в фоновой сессии, а также в сессии Remote Control или в сессии участника команды агентов.
  • Включена настройка autoContinueAtUsageLimit — та же настройка, которая позволяет самой сессии ждать сброса лимита использования. Если вы отключите её во время ожидания, ожидание прекращается, и ожидающие агенты завершаются с ошибкой.
  • Лимит сбрасывается в течение 24 часов. Недельный лимит может сбрасываться позже.
  • Запуск ещё не ожидал дважды. Когда он достигает лимита в третий раз, агент завершается с ошибкой.

Когда агент зависает и перезапускается

Агент, вывод которого перестаёт поступать достаточно долго, начинает заново с того же промпта. В /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_MS
  • agent 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.

Связанные ресурсы