# Динамические рабочие процессы (Dynamic Workflows)

Субагенты уже позволяют «отправить клона» для параллельного изучения одного вопроса. Но когда задача становится настолько большой, что нужна «целая команда» — например, пройтись по всему репозиторию и написать ревью для каждого модуля — одного субагента недостаточно. Тут на сцену выходят **динамические рабочие процессы (Dynamic Workflows)**.

Динамические рабочие процессы позволяют Claude Code за один раз оркестрировать **десятки–сотни фоновых субагентов**, каждый из которых берёт свой кусок работы и выполняется параллельно, пока вы продолжаете заниматься своими делами. Они работают на той модели, на которую в данный момент настроен Claude Code, — поэтому, как только вы направите Claude Code на QCode, рабочие процессы заработают «из коробки».

## Какую задачу это решает

Обычные субагенты хороши для «небольшого, управляемого» параллелизма: отправить 2–3 клона, чтобы проверить API, схему и покрытие тестами соответственно. Но некоторые задачи изначально очень параллельны:

- **Пофайловое ревью безопасности/качества** по репозиторию из 200 файлов
- **Пакетная миграция** старого вызова API на новый стиль по всей кодовой базе
- Вокруг одной темы **исследование десятков каталогов** по отдельности с последующим сведением

При последовательном выполнении вам пришлось бы ждать, пока Claude перемалывает их по одному; запуская десятки субагентов вручную, вы сами разбиваете задачи и следите за прогрессом. Динамические рабочие процессы передают весь цикл «разбить → распределить → выполнить в фоне → свести» самому Claude Code для оркестрации.

## Как запустить

Динамические рабочие процессы не требуют дополнительной установки, а запуск устроен легко:

- Включите ключевое слово **`ultracode`** в свой запрос; либо
- Просто попросите **«запустить рабочий процесс» (run a workflow)**.

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

```
> ultracode сделай ревью каждого подмодуля в src/, уделяя внимание обработке
> ошибок и валидации ввода. Пусть каждый модуль выдаст короткий отчёт, а в
> конце всё сведи в один обзор.
```

Или обычным естественным языком:

```
> Запусти для меня рабочий процесс: найди по всему репозиторию все вызовы
> старого httpClient, оцени объём изменений для миграции на новую обёртку fetch
> и сведи результаты по каталогам.
```

## Просмотр запусков через /workflows

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

```
/workflows
```

Команда выводит выполняющиеся и завершённые запуски (runs) рабочих процессов, что упрощает отслеживание общего прогресса и просмотр результатов каждого субагента.

> Фоновое выполнение означает, что большие задачи больше не блокируют ваше взаимодействие. Отправьте указание, займитесь чем-то другим и вернитесь, чтобы собрать результаты через `/workflows`.

## Когда использовать рабочий процесс, а когда одного субагента

Оба — это одна и та же идея «параллельного делегирования» в разных масштабах, и выбор прост: **смотрите на степень параллелизма и на то, нужна ли работа в фоне.**

| Параметр | Одиночный субагент | Динамический рабочий процесс |
|----------|--------------------|------------------------------|
| Масштаб параллелизма | Несколько независимых подзадач | Десятки–сотни подзадач |
| Запуск | Попросить Claude «отправить субагента проверить X» | Ключевое слово `ultracode` или «запустить рабочий процесс» |
| Где выполняется | По завершении возвращает сводку в основную сессию | Продолжает работать в фоне, не блокирует основную сессию |
| Как смотреть | Результат приходит прямо в диалоге | Команда `/workflows` показывает список запусков |
| Типичный сценарий | Параллельные проверки API / схемы / тестов | Ревью всего репозитория / пакетная миграция / масштабное исследование |

Эмпирическое правило:

- Подзадач **всего несколько**, и результат нужен сразу → используйте [субагентов](/docs/advanced/subagents).
- Подзадач **десятки или сотни**, и их можно неспешно гонять в фоне → используйте динамические рабочие процессы.

> Динамические рабочие процессы — это по сути «масштабированная» версия субагентов. Сначала как следует разберитесь с концепцией [субагентов](/docs/advanced/subagents), и тогда рабочие процессы пойдут легче.

## Использование через QCode

Динамические рабочие процессы работают на **той модели, к которой подключён Claude Code**, и не зависят от какого-либо конкретного провайдера. Это значит, что как только вы направите Claude Code на QCode, все фоновые субагенты, которых отправляет рабочий процесс, пойдут через точки доступа QCode — один и тот же API-ключ, начинающийся с `cr_`, действует на всём протяжении.

Минимальная настройка (протокол Anthropic):

```bash
export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_ваш_ключ"

# Пользователям в Китае стоит предпочесть точку доступа asia
# export ANTHROPIC_BASE_URL="https://asia.qcode.cc/api"
```

> У `BASE_URL` **не должно** быть завершающего слэша. Обращение к этому адресу напрямую возвращает `401` — это нормально: путь верный, не хватает лишь аутентификации.

После настройки запустите Claude Code как обычно и запустите рабочий процесс с помощью `ultracode`. Полное описание точек доступа, четыре домена (api / asia / us / eu) и пути для каждого протокола см. в разделе [Точки доступа и форматы API](/docs/getting-started/endpoints-and-api-paths).

Токены, потребляемые каждым фоновым субагентом в рабочем процессе, тарифицируются по выбранной вами на QCode модели. Большой рабочий процесс запускает много субагентов одновременно, поэтому расход токенов растёт пропорционально — перед крупным запуском стоит сделать пилот на небольшом объёме с флагманской моделью (например, `claude-opus-5`, $5/$25 за миллион токенов, контекст 1M), убедиться в качестве вывода и только потом разворачивать на полную.

## Практические примеры

### Пример 1: ревью кода по всему репозиторию

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

```
> ultracode сделай независимое ревью кода каждого подпакета в packages/.
> Каждое ревью охватывает: обработку ошибок, граничные условия, наличие
> необработанных Promise, единообразие именования. Каждый подпакет выдаёт
> список тезисов не более 20 строк, а в конце всё сводится в одну сводную
> таблицу, отсортированную по серьёзности.
```

Отправив запрос, можно заниматься другими делами, позже проверить прогресс через `/workflows`, а когда все субагенты закончат — разом просмотреть сводную таблицу.

### Пример 2: исследование масштабной миграции API

Прежде чем что-то менять, используйте рабочий процесс, чтобы оценить радиус поражения:

```
> Запусти для меня рабочий процесс: найди по всей кодовой базе все места,
> где axios используется напрямую, сгруппируй по каталогам, оцени трудозатраты
> и риски перехода на внутрипроектную обёртку httpClient и выведи таблицу
> «каталог / число вхождений / сложность миграции / замечания».
```

Имея полную картину, вы сможете определить порядок миграции на основе реальных данных, а не наугад.

## Советы и предостережения

- **Начинайте с малого, затем масштабируйте**: при первом запуске ограничьте рабочий процесс одним каталогом или пакетом, убедитесь, что формат и качество вывода соответствуют ожиданиям, и только потом расширяйте на весь репозиторий.
- **Стандартизируйте формат вывода**: пропишите в запросе, что каждый субагент должен «вывести, какой длины и как отсортировать» — это сильно экономит силы на этапе сведения.
- **Фон ≠ без присмотра**: пока рабочий процесс выполняется, можно заниматься другим, но не забудьте вернуться и завершить дело через `/workflows`.
- **Об изображениях**: динамические рабочие процессы обрабатывают текстовые/кодовые задачи. Если вы хотите, чтобы Claude Code **читал изображения** (скриншоты, диаграммы архитектуры, скриншоты ошибок), это возможность визуального ввода, не связанная с рабочими процессами; если вы хотите **генерировать изображения**, используйте [генерацию изображений gpt-image-2](/docs/usage/image-2).
- Чтобы встроить рабочие процессы в CI/скрипты, сочетайте безголовый режим со структурированным выводом — см. [Автоматизация и CI/CD](/docs/advanced/headless).

> Хотите гонять масштабные рабочие процессы на флагманской модели, не теряя контроль над расходами? Загляните в [цены QCode](https://qcode.cc/pricing) — один API-ключ работает на всех точках доступа.