Автономное управление проектами: STATE.yaml и параллельные агенты
Координация нескольких AI-агентов через файл STATE.yaml: параллельная работа без оверхеда оркестратора.
Когда проект разрастается — рефакторинг нескольких репозиториев, исследовательский спринт, контент-пайплайн — вы неизбежно упираетесь в проблему координации. Один агент не успевает, переключение контекста съедает время, а централизованный оркестратор становится бутылочным горлышком. Существует другой паттерн: децентрализованная координация через общий файл STATE.yaml, где каждый агент работает автономно и сам сообщает о прогрессе.
Проблема: оркестратор как бутылочное горлышко
Классический подход к управлению несколькими AI-агентами — централизованный оркестратор. Главный агент получает задачу, разбивает её на подзадачи, раздаёт их субагентам, ждёт результатов, собирает обратно. На бумаге звучит логично, на практике возникают три проблемы:
- Последовательность вместо параллели. Оркестратор тратит токены на каждый цикл «раздать → собрать → решить следующее». Субагенты простаивают, пока главный «думает».
- Хрупкость. Упал контекст оркестратора — потеряна вся картина проекта. Ни один агент не знает, что делают остальные.
- Масштабирование. Два-три субагента — ещё терпимо. Пять-семь — оркестратор уже тонет в управлении, а не в стратегии.
Решение: STATE.yaml как единый источник правды
Паттерн децентрализованной координации убирает оркестратора из цепочки. Вместо него — файл STATE.yaml в корне проекта. Каждый агент читает его, находит свои задачи, работает, обновляет статус. Никакого центрального диспетчера.
# STATE.yaml — файл координации проекта
project: website-redesign
updated: 2026-02-10T14:30:00Z
tasks:
- id: homepage-hero
status: in_progress
owner: pm-frontend
started: 2026-02-10T12:00:00Z
notes: "Working on responsive layout"
- id: api-auth
status: done
owner: pm-backend
completed: 2026-02-10T14:00:00Z
output: "src/api/auth.ts"
- id: content-migration
status: blocked
owner: pm-content
blocked_by: api-auth
notes: "Waiting for new endpoint schema"
next_actions:
- "pm-content: Resume migration now that api-auth is done"
- "pm-frontend: Review hero with design team"
Файл — простой YAML. Статусы: in_progress, done, blocked. Каждая задача привязана к владельцу (owner). Блокировки указаны явно через blocked_by. Следующие шаги — в секции next_actions.
Как работает жизненный цикл
Процесс выглядит так:
- Главная сессия получает задачу от пользователя. Она не выполняет работу — только делегирует.
- Спавнится субагент с конкретной областью ответственности (например,
pm-backend). - Субагент читает STATE.yaml, находит назначенные ему задачи.
- Работает автономно — коммитит код, обновляет документацию, меняет статусы в файле.
- Другие агенты опрашивают STATE.yaml и подхватывают разблокированные задачи.
- Главная сессия периодически проверяет состояние проекта, корректирует приоритеты.
Главная сессия остаётся «тонкой» — минимум вызовов инструментов, только спавн и отправка сообщений. Это паттерн CEO: стратегия, а не тактика.
Практический пример: спавн менеджера проекта
Пользователь говорит: «Рефакторь модуль авторизации и обнови документацию». Что происходит:
- Главная сессия проверяет реестр активных проектов —
pm-authне найден. - Создаёт субагента:
sessions_spawn(label="pm-auth-refactor", task="Refactor auth module, update docs. Track in STATE.yaml"). - Отвечает пользователю: «Запустил pm-auth-refactor. Сообщу, когда будет готово.»
- Субагент создаёт
STATE.yamlс разбивкой задач, работает через них, коммитит изменения. - По завершении сообщает в главную сессию.
Главная сессия сделала два вызова инструментов — и свободна. Весь execution — на стороне субагента.
Почему файл, а не сообщения
Кооординация через файлы принципиально отличается от message-passing между агентами:
- Персистентность. Упал субагент — STATE.yaml остался. Новый субагент подхватит задачи с того места, где остановился предыдущий. Сообщения в очереди так не умеют.
- Прозрачность. Открыл файл — видишь весь проект. Не нужно копать логи и восстанавливать контекст.
- Версионирование. STATE.yaml в git. Каждое изменение — коммит с сообщением. Полный аудит-трейл бесплатно.
- Простота отладки. Что-то пошло не так? Смотрите последний коммит STATE.yaml — видно, кто что менял и когда.
Настройка: AGENTS.md
Паттерн фиксируется в конфигурации агента:
## PM Delegation Pattern
Main session = coordinator ONLY. All execution goes to subagents.
Workflow:
1. New task arrives
2. Check PROJECT_REGISTRY.md for existing PM
3. If PM exists → sessions_send(label="pm-xxx", message="[task]")
4. If new project → sessions_spawn(label="pm-xxx", task="[task]")
5. PM executes, updates STATE.yaml, reports back
6. Main agent summarizes to user
Rules:
- Main session: 0-2 tool calls max (spawn/send only)
- PMs own their STATE.yaml files
- PMs can spawn sub-subagents for parallel subtasks
- All state changes committed to git
Ключевые правила: главная сессия — не более двух вызовов инструментов. Каждый PM-агент владеет своим файлом STATE.yaml. Субагенты могут порождать собственных субагентов для параллельных подзадач. Все изменения состояния — через git.
Конвенции именования
Для отслеживания агентов используйте схему pm-{project}-{scope}:
pm-auth-refactor— рефакторинг модуля авторизацииpm-frontend-redesign— редизайн фронтендаpm-content-migration— миграция контента
Такая схема позволяет быстро находить нужного агента в реестре и понимать его зону ответственности.
Когда это работает лучше всего
- Мульти-репозиторные рефакторинги. Один агент на репозиторий, координация через STATE.yaml.
- Исследовательские спринты. Параллельный сбор информации из разных источников.
- Контент-пайплайны. Один агент пишет, другой редактирует, третий публикует — каждый со своим статусом.
- Долгие проекты. STATE.yaml переживает падение сессии. Новый запуск — агент читает файл и продолжает.
Подводные камни
- Гонки записи. Два агента одновременно обновляют STATE.yaml — один перезаписывает изменения другого. Решение: блокировка на уровне файловой системы или атомарные обновления отдельных секций.
- Раздувание файла. В больших проектах STATE.yaml может вырасти. Секционируйте по модулям:
STATE-frontend.yaml,STATE-backend.yaml. - Забытые агенты. Субагент может зависнуть. Добавляйте таймауты и проверку heartbeat в
updatedполе.
Итого
STATE.yaml — это не замена оркестратору, а альтернативная модель координации. Она лучше всего работает, когда задачи достаточно независимы, а параллелизм важнее последовательности. Файл как единственный источник правды, git как аудит-трейл, субагенты как автономные исполнители. Просто, прозрачно, масштабируемо.
Скачать скилл (Markdown)
«`markdown
# Автономное управление проектами с субагентами
Управление сложными проектами с множеством параллельных потоков — изматывающее занятие. Вы постоянно переключаетесь между контекстами, отслеживаете статус в разных инструментах и вручную координируете передачи задач.
Этот сценарий реализует децентрализованный паттерн управления проектами, где субагенты работают автономно над задачами, координируя через общие файлы состояния вместо центрального оркестратора.
## Проблема
Традиционные паттерны оркестрации создают бутылочные горлышки — главный агент становится регулировщиком. Для сложных проектов (рефакторинг нескольких репозиториев, исследовательские спринты, контент-пайплайны) нужны агенты, которые могут работать параллельно без постоянного контроля.
## Что делает агент
— **Децентрализованная координация**: агенты читают и пишут в общий файл `STATE.yaml`
— **Параллельное выполнение**: несколько субагентов работают над независимыми задачами одновременно
— **Без оверхеда оркестратора**: главная сессия остаётся «тонкой» (паттерн CEO — только стратегия)
— **Самодокументирование**: состояние всех задач сохраняется в файлах с версионированием
## Основной паттерн: STATE.yaml
Каждый проект ведёт файл `STATE.yaml`, который служит единым источником правды:
«`yaml
# STATE.yaml — Project coordination file
project: website-redesign
updated: 2026-02-10T14:30:00Z
tasks:
— id: homepage-hero
status: in_progress
owner: pm-frontend
started: 2026-02-10T12:00:00Z
notes: «Working on responsive layout»
— id: api-auth
status: done
owner: pm-backend
completed: 2026-02-10T14:00:00Z
output: «src/api/auth.ts»
— id: content-migration
status: blocked
owner: pm-content
blocked_by: api-auth
notes: «Waiting for new endpoint schema»
next_actions:
— «pm-content: Resume migration now that api-auth is done»
— «pm-frontend: Review hero with design team»
«`
## Как это работает
1. **Главная сессия получает задачу** → создаёт субагента с определённой зоной ответственности
2. **Субагент читает STATE.yaml** → находит назначенные ему задачи
3. **Субагент работает автономно** → обновляет STATE.yaml при прогрессе
4. **Другие агенты опрашивают STATE.yaml** → подхватывают разблокированные задачи
5. **Главная сессия периодически проверяет** → анализирует состояние, корректирует приоритеты
## Необходимые навыки
— `sessions_spawn` / `sessions_send` для управления субагентами
— Доступ к файловой системе для STATE.yaml
— Git для версионирования состояния (опционально, но рекомендуется)
## Настройка: конфигурация AGENTS.md
«`text
## PM Delegation Pattern
Main session = coordinator ONLY. All execution goes to subagents.
Workflow:
1. New task arrives
2. Check PROJECT_REGISTRY.md for existing PM
3. If PM exists → sessions_send(label=»pm-xxx», message=»[task]»)
4. If new project → sessions_spawn(label=»pm-xxx», task=»[task]»)
5. PM executes, updates STATE.yaml, reports back
6. Main agent summarizes to user
Rules:
— Main session: 0-2 tool calls max (spawn/send only)
— PMs own their STATE.yaml files
— PMs can spawn sub-subagents for parallel subtasks
— All state changes committed to git
«`
## Пример: спавн менеджера проекта
«`text
User: «Refactor the auth module and update the docs»
Main agent:
1. Checks registry → no active pm-auth
2. Spawns: sessions_spawn(
label=»pm-auth-refactor»,
task=»Refactor auth module, update docs. Track in STATE.yaml»
)
3. Responds: «Spawned pm-auth-refactor. I’ll report back when done.»
PM subagent:
1. Creates STATE.yaml with task breakdown
2. Works through tasks, updating status
3. Commits changes
4. Reports completion to main
«`
## Ключевые выводы
— **STATE.yaml лучше оркестратора**: файловая координация масштабируется лучше, чем передача сообщений
— **Git как аудит-трейл**: коммитьте изменения STATE.yaml для полной истории
— **Конвенции именования важны**: используйте `pm-{project}-{scope}` для удобного отслеживания
— **Тонкая главная сессия**: чем меньше делает главный агент, тем быстрее он отвечает
## Основано на
Этот паттерн вдохновлён [подходом Николаса Карлини](https://nicholas.carlini.com/) к автономным кодинг-агентам — позвольте агентам самоорганизовываться, а не микроуправлять ими.
## Ссылки
— [Документация OpenClaw по субагентам](https://github.com/openclaw/openclaw)
— [Anthropic: Building Effective Agents](https://www.anthropic.com/research/building-effective-agents)
«`