Каждая статья на этом сайте выходит на пяти языках. Перед публикацией каждую локаль проверяют отдельно: точность перевода, машинные обороты, скрытые символы. Это пятнадцать проверок на одну статью, и до сих пор Claude Code делал их по очереди, складывая все промежуточные отчёты в контекст одной сессии. Claude Code workflow решает ровно эту задачу: Claude пишет JavaScript-скрипт, рантайм запускает по нему субагентов в фоне, а в разговор возвращается только итог.
Ниже — что это за режим по документации Claude Code, чем он отличается от субагентов, скилов и agent teams, как его запустить и где он перестаёт окупаться. Всё проверено по документации на 3 ноября 2026 года, у меня Claude Code 2.1.316. Workflow доступны на всех платных планах, через Anthropic API, Amazon Bedrock, Google Cloud Agent Platform и Microsoft Foundry. На Pro их нужно включить в /config, строка Dynamic workflows.
Claude Code workflow: план переезжает в код#
Субагентов, скилы и agent teams Claude Code умел запускать и раньше. Разница в том, кто держит план. В трёх старых вариантах оркестратор — сам Claude: он по ходу разговора решает, кого запустить следующим, и каждый результат ложится в его контекст. В workflow циклы, ветвления и промежуточные данные живут в переменных скрипта.
| Субагенты | Скилы | Agent teams | Workflow | |
|---|---|---|---|---|
| Кто решает, что дальше | Claude, ход за ходом | Claude по инструкции | Ведущий агент | Скрипт |
| Где промежуточные результаты | Контекст Claude | Контекст Claude | Общий список задач | Переменные скрипта |
| Что можно повторить | Описание воркера | Инструкцию | Состав команды | Саму оркестрацию |
| Масштаб | Несколько задач за ход | Как у субагентов | Несколько долгих сессий | Десятки и сотни агентов |
| Если прервать | Ход начинается заново | Ход начинается заново | Участники работают дальше | Продолжается в той же сессии |
Отсюда же ответ на частый вопрос, чем workflow отличается от скила. Скил — текст, который Claude читает и исполняет сам. Workflow исполняет рантайм, и Claude видит только ответ.
Масштаб тут не главное. Раз порядок работы записан в коде, в него можно зашить проверку качества: одни агенты ищут проблемы, другие независимо пытаются их опровергнуть, и в отчёт попадает только то, что выдержало. Или план пишут с трёх сторон, а четвёртый агент сравнивает варианты.
Три способа запустить#
Встроенный /deep-research. Самый быстрый способ посмотреть на режим вживую. Команда раскидывает веб-поиск по нескольким направлениям, сверяет найденные источники между собой, голосует по каждому утверждению и возвращает отчёт со ссылками. Утверждения, которые не прошли сверку, из отчёта выкинуты. Если проверить утверждение не удалось из-за лимита или ошибки API, оно помечается как непроверенное, а не как опровергнутое.
/deep-research What changed in the Node.js permission model between v20 and v22?Попросить в промпте. Слово ultracode в начале промпта или прямая просьба своими словами («use a workflow») — и Claude напишет скрипт под эту задачу вместо пошаговой работы. Подсвеченное слово можно отменить для текущего промпта: Option+W на macOS, Alt+W на Windows и Linux.
Слово срабатывает только в промпте, который набрал человек. Промпт из claude -p, задача по расписанию, вебхук или комментарий в pull request workflow не запустят, даже если в них есть ultracode.
Включить на всю сессию. Это третий способ, и о нём отдельно.
Ultracode в Claude Code: что это и когда выключать#
/effort ultracode — настройка сессии, уровень усилия она не трогает. С ней Claude сам решает, какой задаче нужен workflow, и одна просьба может превратиться в три запуска подряд: разобраться в коде, внести изменение, проверить его. Запуск с claude --effort ultracode дополнительно ставит уровень xhigh. Выключается командой /effort ultracode off.
Включённый ultracode снимает три предохранителя: предупреждение Large workflow, лимит одновременных субагентов для Agent tool и, в auto-режиме, подтверждение первого запуска. Документация прямо пишет, что на подписке такая сессия быстрее упирается в дневной или недельный лимит. Для обычной работы — правка, ревью одного файла, письмо — я бы его не включал.
Как выглядит скрипт#
Скрипт обычно пишет Claude, но читать его полезно: перед запуском Claude Code показывает фазы и даёт открыть код (View raw script или Ctrl+G). Вот набросок для моей проверки локалей. Его я составил по документации и пока не гонял на реальной статье:
export const meta = {
name: 'article-locale-review',
description: 'Review every locale of an article against the Russian source',
phases: [{ title: 'Review' }, { title: 'Verify' }],
}
const FINDINGS = {
type: 'object',
required: ['findings'],
properties: {
findings: {
type: 'array',
items: {
type: 'object',
required: ['locale', 'quote', 'problem'],
properties: {
locale: { type: 'string' },
quote: { type: 'string' },
problem: { type: 'string' },
},
},
},
},
}
const VERDICT = {
type: 'object',
required: ['isReal', 'reason'],
properties: { isReal: { type: 'boolean' }, reason: { type: 'string' } },
}
const LOCALES = ['en', 'es', 'ja', 'zh-CN']
phase('Review')
const reviews = await pipeline(LOCALES, locale =>
agent(
`Compare content/articles/ru/general/${args.slug}.mdx with ` +
`content/articles/${locale}/general/${args.slug}.mdx. ` +
`List omissions, additions and mistranslations. Do not edit files.`,
{ label: locale, schema: FINDINGS },
),
)
phase('Verify')
const findings = reviews.filter(Boolean).flatMap(r => r.findings)
const verdicts = await parallel(
findings.map(f => () =>
agent(`Try to refute this translation issue: ${JSON.stringify(f)}`, {
label: `verify:${f.locale}`,
schema: VERDICT,
}).then(v => (v ? { ...f, ...v } : null)),
),
)
return verdicts.filter(v => v?.isReal)agent() запускает одного субагента, pipeline() — по агенту на каждый элемент списка, parallel() — набор задач разом с ожиданием всех. phase() группирует агентов в окне прогресса, args — вход, который передают при запуске сохранённой команды («Run /article-locale-review on slug claude-code-workflows»).
Обратите внимание на filter(Boolean). Агент, которого остановили или который упал на неисправимой ошибке API, возвращает null, и pipeline() оставляет этот null в массиве. А schema заставляет субагента вернуть JSON нужной формы: после пяти неудачных попыток вызов падает с последней ошибкой валидации.
Удачный запуск сохраняется как команда: /workflows, выбрать запуск, s. Файл ляжет в .claude/workflows/ проекта (видят все, кто клонирует репозиторий) или в ~/.claude/workflows/ (только вы, зато в любом проекте).
Ограничения, которые лучше знать до первого запуска#
- Вмешаться в работу нельзя. Workflow сам встаёт на паузу только ради запроса прав у агента и ожидания сброса лимита. Нужно одобрение между этапами — делайте каждый этап отдельным запуском.
- Скрипт сам ничего не трогает. Файлы читают и правят агенты, скрипт их только координирует.
import()запрещён,Date.now(),Math.random()иnew Date()без аргументов бросают ошибку: при перезапуске агенты должны вызываться в том же порядке. Время передают черезargs. - Потолки. 16 агентов одновременно (
CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS, от 1 до 256), 4 096 элементов в одномparallel()илиpipeline(), 1 000 агентов за запуск. - Повтор после сбоя дороже, чем кажется. Завершённые агенты при перезапуске отдают сохранённый результат. Но если скрипт стартовал A, B, C, D и упал B, перезапуск возьмёт из кэша только A, а B, C и D пойдут заново, даже если C и D успели закончить.
- Зависший агент перезапускается сам, до пяти раз. Долгим задачам можно дать больше времени через
stallMsвagent(). - Упёрлись в лимит подписки. Запуск ждёт сброса и продолжает сам, но только в интерактивной сессии, при включённом
autoContinueAtUsageLimit, если сброс наступит в пределах суток, и не больше двух раз. Вclaude -pи фоновой сессии агент просто падает.
Если вы закрыли сессию с остановкой задач, запуск остановится вместе с ней. Сохранённые результаты останутся: claude --resume, затем попросить Claude перезапустить workflow.
Сколько стоит workflow#
Один запуск тратит заметно больше токенов, чем та же работа в разговоре, и всё это идёт в лимиты плана. Claude Code помечает запуск как Large workflow, когда агентов больше 25 или прогноз переваливает за 1,5 млн токенов. Это только предупреждение, запуск оно не останавливает.
Сколько агентов Claude будет планировать, задаёт ориентир workflowSizeGuideline:
| Значение | Агентов |
|---|---|
small | меньше 5 |
medium | меньше 10 |
large | меньше 50 |
unrestricted | по задаче |
По умолчанию стоит medium, на Pro с версии 2.1.271 — small. Меняется через /config workflowSizeGuideline=small. Это совет модели, и если в промпте прямо попросить больше, Claude послушает промпт.
Есть и экономия, о которой легко забыть. Агенты одного запуска с одинаковыми моделью, уровнем усилия, инструментами, схемой и рабочей папкой читают общий кэш промпта, поэтому Claude Code придерживает их до пяти секунд, пока не начнётся ответ первого. Кэш живёт пять минут, subagentPromptCacheTtl: "1h" продлевает его до часа по более высокой цене записи.
Совет из документации, с которым я согласен: сначала гоняйте workflow на срезе. Одна папка вместо репозитория, один узкий вопрос вместо широкого. /workflows показывает расход токенов по каждому агенту, и запуск можно остановить в любой момент, не теряя готового.
Где workflow окупается#
Признак простой: одна и та же операция над многими объектами плюс перекрёстная проверка результата. Аудит всех route-хендлеров на пропущенную авторизацию, миграция пятисот файлов в изолированных копиях, поиск флаки-тестов раундами, пока новые раунды ничего не находят. Если агенты в такой работе пишут в общие файлы, им нужна та же дисциплина, что и людям: изоляция или заявки на запись вместо тихих перезаписей.
Для меня это две процедуры. Проверка пяти локалей каждой статьи — она выше. И проверка патчей безопасности по всем моим сайтам: агент на репозиторий сверяет версии и Dockerfile, второй перепроверяет находки. Обе повторяются, обе сейчас съедают контекст сессии.
А сопроводительное письмо, правка одной функции, одна статья — не workflow. Один проход дешевле и не хуже. Для знаний о проекте, которые нужны каждому агенту, workflow тоже ничего не меняет: их по-прежнему надо где-то держать, например в вики, подключённой к Claude Code по MCP. А если агентов становится много и они пишут код всерьёз, узким местом может оказаться сам git — как у Anthropic, которая заменила его своей системой.
Начать я бы предложил так: /config workflowSizeGuideline=small, затем /deep-research на вопрос, который вы и так собирались гуглить полчаса, и посмотреть в /workflows, сколько это стоило.



