
Практическое руководство по Agentic Flow
Author: Yauheni Kurbayeu
Published: Mar 22, 2026
TL;DR
В предыдущей статье, Building an Automated Translation Pipeline for a Markdown Blog with GitHub Copilot Agents, мы спроектировали конвейер перевода на базе GitHub Copilot, построенный вокруг оркестратора, языковых субагентов, переиспользуемых skills и hooks.
Затем эта схема была сопоставлена с реальной реализацией репозитория в аналитическом отчёте How the Current GitHub Copilot Article Translation Flow Works in This Repository, который показывает, что текущая настройка действительно делает сегодня и как фактически распределены обязанности между инструкциями репозитория, агентами, skills и hooks.
В этой статье мы идём на шаг дальше и превращаем эти идеи в практическое руководство. Мы разбираем, как это рабочее пространство моделирует агентное наследование, как слоистые инструкции заменяют нативное наследование и как работают три подхода к выполнению:
- последовательный
- параллельный
- иерархический
Цель — дать вам переиспользуемый шаблон проектирования для потоков агентов GitHub Copilot с общими инструкциями, специализированными исполнителями и ясными правилами координации.
Hooks здесь намеренно остаются вне области рассмотрения. Их можно добавить позже, чтобы усилить валидацию, наблюдаемость и безопасность вокруг потока.
Что уже демонстрирует это рабочее пространство
Текущее рабочее пространство использует структуру, похожую на наследование, построенную из слоистых инструкций, а не из настоящего классового наследования.
Основные строительные блоки
- .github/copilot-instructions.md определяет глобальные правила для всех агентов.
- .github/skills/shared-agent-contract/SKILL.md определяет общую оболочку задачи и контракт возврата.
- .github/skills/agents-orchestration/SKILL.md определяет, как родительский агент делегирует работу.
- .github/skills/worker/SKILL.md определяет поведение по умолчанию для рабочих агентов.
- .github/agents/main-orchestrator.agent.md выступает корневым координатором.
- .github/agents/worker1.agent.md, .github/agents/worker2.agent.md и .github/agents/worker3.agent.md выступают специализированными исполнителями.
Краткое резюме текущего обзора
- Модель наследования ясна и переиспользуема.
- Последовательный режим моделируется как цепочка, управляемая оркестратором.
- Параллельный режим моделируется как fan-out и fan-in, управляемые оркестратором.
- Иерархический режим моделируется как делегирование от worker к worker.
- Иерархический режим меняет роль
worker1иworker2: в этом режиме они больше не являются чистыми leaf workers, хотя общий worker skill по умолчанию описывает работников как leaf nodes.
Последний пункт сам по себе не обязательно означает ошибку, но это важный архитектурный выбор. Если вы используете иерархическое выполнение, некоторые worker-агенты становятся промежуточными координаторами.
Агентное наследование
Ключевая идея
У GitHub Copilot Agents нет нативного наследования. Практическая замена ему — композиция инструкций:
- Глобальные инструкции выступают как базовый класс.
- Общие skills выступают как переиспользуемые ролевые слои.
- Файлы агентов выступают как тонкие специализации.
- Данные runtime-задачи завершают поведение.
Этот паттерн даёт вам большую часть преимуществ наследования:
- единый общий контракт
- меньше дублирующейся логики в prompts
- более ясные границы ответственности
- более простую поддержку по мере роста потока
Приоритет инструкций
Текущее рабочее пространство следует такому порядку:
- .github/copilot-instructions.md
- общие skills, на которые ссылается агент
- локальные инструкции агента в файле
.agent.md - runtime-оболочка задачи от пользователя или родительского агента
Это означает, что дочерний агент должен специализировать общие правила, а не противоречить им.
Карта наследования для этого рабочего пространства
Global base
.github/copilot-instructions.md
Shared contract
.github/skills/shared-agent-contract/SKILL.md
Role-specific behavior
.github/skills/agents-orchestration/SKILL.md
.github/skills/worker/SKILL.md
Agent specializations
.github/agents/main-orchestrator.agent.md
.github/agents/worker1.agent.md
.github/agents/worker2.agent.md
.github/agents/worker3.agent.mdОбщий контракт
Общий агентный контракт — самый важный слой наследования, потому что он стандартизирует:
- оболочку задачи
- ожидаемые входные поля
- схему вывода
- обработку отказов
В этом рабочем пространстве общая оболочка задачи содержит:
task_idobjectivemodeinput_artifactconstraintsexpected_outputparent_agent
Общий контракт возврата содержит:
statusagentsummaryresultnotes
Именно это позволяет нескольким агентам взаимодействовать друг с другом без необходимости каждый раз придумывать новый мини-протокол.
Режимы выполнения
1. Последовательный режим
Что это значит
Последовательный режим — это пошаговый конвейер, управляемый оркестратором.
Оркестратор остаётся ответственным за каждую передачу:
main-orchestrator -> worker1 -> main-orchestrator -> worker2 -> main-orchestrator -> worker3Когда его использовать
- когда каждый шаг зависит от предыдущего результата
- когда вам нужны централизованный контроль и видимость
- когда отказ должен немедленно остановить поток
Преимущества
- самый простой для понимания режим
- самый сильный контроль со стороны оркестратора
- прямолинейные логирование и повторы
Компромиссы
- медленнее, чем параллельный режим
- оркестратор находится на критическом пути между всеми шагами
Пример
status: success
agent: main-orchestrator
summary: Ran workers 1→2→3 sequentially on the input text and returned the final transformed output.
result:
mode: sequential
steps:
- worker: worker1
input: "text to transform"
output: "text to transform_worker1"
- worker: worker2
input: "text to transform_worker1"
output: "text to transform_worker1_worker2"
- worker: worker3
input: "text to transform_worker1_worker2"
output: "text to transform_worker1_worker2_worker3"
final_output: "text to transform_worker1_worker2_worker3"
notes: Each worker appended its marker in turn, with the orchestrator coordinating the handoffs and preserving the step history.Как это реализовать
- Оркестратор получает исходный ввод.
- Оркестратор отправляет ввод в
worker1. worker1возвращает структурированный результат.- Оркестратор берёт
worker1.resultи отправляет его вworker2. - Оркестратор берёт
worker2.resultи отправляет его вworker3. - Оркестратор возвращает финальный вывод worker-а вместе с историей шагов.
2. Параллельный режим
Что это значит
Параллельный режим — это паттерн fan-out, при котором оркестратор отправляет один и тот же ввод нескольким worker-ам одновременно.
main-orchestrator -> worker1
main-orchestrator -> worker2
main-orchestrator -> worker3Затем оркестратор агрегирует результаты.
Когда его использовать
- когда workers независимы друг от друга
- когда вам нужны сравнительные результаты
- когда скорость важнее пошаговой зависимости
Преимущества
- более быстрое выполнение, когда задачи независимы
- хорошо подходит для экспериментов и сравнений
- простая модель агрегации
Компромиссы
- workers не могут строить результат друг на друге
- прежде чем результаты можно будет напрямую сравнивать, может потребоваться постобработка
Пример
status: success
agent: main-orchestrator
summary: Ran three workers in parallel on the same input text and collected their outputs.
result:
mode: parallel
outputs:
worker1: "text Parallel_worker1"
worker2: "text Parallel_worker2"
worker3: "text Parallel_worker3"
notes: Each worker independently appended its own marker to the shared input, with the orchestrator coordinating the aggregation of results.Как это реализовать
- Оркестратор получает исходный ввод.
- Оркестратор отправляет один и тот же
input_artifactвсем worker-ам. - Каждый worker независимо возвращает свой структурированный результат.
- Оркестратор объединяет результаты в объект, ключами которого служат workers.
3. Иерархический режим
Что это значит
Иерархический режим — это делегированная цепочка, где оркестратор запускает поток, но workers передают управление дальше по линии:
main-orchestrator -> worker1 -> worker2 -> worker3Это отличается от последовательного режима, потому что оркестратор не является точкой передачи между каждым этапом.
Когда его использовать
- когда подпотоком должны владеть сами workers
- когда вам нужна вложенная ответственность
- когда более поздние workers концептуально являются дочерними по отношению к более ранним
Преимущества
- поддерживает древовидные или вложенные паттерны делегирования
- может сократить orchestration chatter
- естественно моделирует цепочки обработки родитель-потомок
Компромиссы
- его сложнее трассировать, чем управляемый оркестратором последовательный режим
- worker-агенты перестают быть чистыми leaf nodes
- обработка отказов и наблюдаемость становятся сложнее
Важное замечание по архитектуре
В этом рабочем пространстве иерархический режим реализован так, что workers могут делегировать другим workers.
Это означает следующее:
worker1становится родителем дляworker2worker2становится родителем дляworker3- только
worker3остаётся настоящим leaf в иерархическом пути
Это главное концептуальное отличие от worker skill по умолчанию, который описывает workers как leaf agents, если явно не задано иное.
Пример
status: success
agent: main-orchestrator
summary: Ran workers hierarchically (worker1 → worker2 → worker3) on the input textTree and collected each stage’s output.
result:
mode: hierarchical
hierarchy:
worker1:
input: "textTree"
output: "textTree>worker1"
worker2:
parent: "worker1"
input: "textTree>worker1"
output: "textTree>worker1>worker2"
worker3:
parent: "worker2"
input: "textTree>worker1>worker2"
output: "textTree>worker1>worker2>worker3"
root_output: "textTree>worker1>worker2>worker3"
notes: Hierarchical mode mirrors a delegated chain (each worker builds on its parent’s output); the orchestrator initiates the flow but does not manage each handoff, allowing workers to take ownership of the subflow and pass results directly to their child workers.Как это реализовать
- Оркестратор запускает поток, вызывая
worker1. worker1преобразует ввод и пересылает результат вworker2.worker2преобразует ввод и пересылает результат вworker3.worker3возвращает терминальный вывод.- Поток возвращает финальный результат вместе с происхождением этапов.
Последовательный vs Параллельный vs Иерархический
| Подход | Точка контроля | Модель зависимостей | Лучше всего подходит для |
|---|---|---|---|
| Последовательный | Оркестратор между каждым шагом | Сильная пошаговая зависимость | Конвейеров с централизованным контролем |
| Параллельный | Оркестратор делает fan-out и агрегирует | Независимые workers | Скорости, сравнения, мультивариантных результатов |
| Иерархический | Workers делегируют вниз по цепочке | Вложенная зависимость родитель-потомок | Древовидных подпотоков и делегированной ответственности |
Как спроектировать похожий agentic flow
Шаг 1. Один раз определите базовый контракт
Поместите общие правила в .github/copilot-instructions.md и держите их достаточно общими:
- оболочка задачи
- схема результата
- схема отказа
- ограничения делегирования
Шаг 2. Вынесите переиспользуемое поведение в skills
Используйте один skill общего контракта, а затем создайте skills для конкретных ролей, например:
- orchestration
- worker execution
- validation
- domain-specific transformation
Именно так вы избегаете копирования одной и той же prompt-логики в каждого агента.
Шаг 3. Держите файлы агентов тонкими
Каждый файл агента должен отвечать только на такие вопросы:
- за что отвечает этот агент
- какие skills он использует
- каких дочерних агентов он может вызывать
- что отличает его от соседних агентов
Если правило относится ко многим агентам, его обычно стоит поднять выше — в общий skill или глобальную инструкцию.
Шаг 4. Выберите правильный режим выполнения
Используйте:
- последовательный режим для конвейеров, управляемых оркестратором
- параллельный режим для независимых ветвей
- иерархический режим для делегированных поддеревьев или вложенных цепочек
Не выбирайте иерархический режим только потому, что он выглядит более продвинутым. Его стоит использовать тогда, когда делегирование, которым владеют workers, действительно является лучшей моделью.
Шаг 5. Делайте выводы трассируемыми
Всегда возвращайте достаточно структуры, чтобы родитель понимал:
- кто выполнял шаг
- какой ввод был получен
- какой вывод был произведён
- был ли шаг успешным
Примеры вывода в этом рабочем пространстве — хороший паттерн, потому что они сохраняют и финальный результат, и путь, по которому он был получен.
Рекомендуемые улучшения
- Определитесь, должны ли workers по умолчанию действительно быть leaf agents, или же иерархическое делегирование — это requirement первого класса.
- Если иерархический режим является первым классом, обновите формулировки worker skill так, чтобы они явнее описывали workers как внутренние узлы.
- Сохраняйте стабильность общего контракта, чтобы все режимы выполнения возвращали совместимые структуры результата.
- Позже рассмотрите семантические имена workers, такие как
normalize,transformиfinalize, когда паттерн стабилизируется.
Главный вывод
Самый чистый способ построить агентное наследование в GitHub Copilot — рассматривать наследование как слоистую prompt-архитектуру:
- базовые инструкции для универсальной политики
- общие skills для переиспользуемого поведения
- тонкие агенты для специализации
- явные режимы выполнения для управления потоком
Все три режима выполнения — ценные инструменты в вашем наборе проектирования:
- последовательный — самый понятный конвейер под управлением оркестратора
- параллельный — самая ясная модель fan-out
- иерархический — самый мощный, но и самый структурно директивный
Если вы внедряете agentic flow в новую команду, начните с последовательного режима, добавьте параллельный, когда задачи независимы, и вводите иерархический только тогда, когда вам действительно нужны цепочки делегирования, которыми владеют workers.
Полезные спецификации и документация GitHub Copilot
- About customizing GitHub Copilot responses - Обзор инструкций на уровне репозитория, path-specific instructions и связанных механизмов настройки.
- Adding repository custom instructions for GitHub Copilot - Практическое руководство по созданию
.github/copilot-instructions.mdи.github/instructions/*.instructions.md. - Support for different types of custom instructions - Справочная матрица о том, где поддерживаются инструкции на уровне репозитория, path-specific, личные и организационные инструкции.
- About custom agents - Концептуальный обзор того, что такое custom agents, где они хранятся и как вписываются в workflow Copilot.
- Creating custom agents for Copilot coding agent - Пошаговое руководство по созданию профилей
.github/agents/*.agent.md. - Custom agents configuration - Справочная документация по frontmatter агентов, наборам инструментов, настройкам модели и поведению вызова.
- About agent skills - Объясняет, что такое skills и как они дополняют инструкции и custom agents.
- Creating agent skills for GitHub Copilot - Практическое руководство по структурированию
.github/skills/<skill>/SKILL.mdи связанных ресурсов. - About hooks - Концептуальное объяснение триггеров hooks, событий жизненного цикла и сценариев governance.
- Using hooks with GitHub Copilot agents - Руководство по реализации
.github/hooks/hooks.jsonи shell-based hook actions. - Hooks configuration - Справочник по структуре манифеста hooks, событиям и деталям конфигурации.
- Copilot customization cheat sheet - Компактная шпаргалка, которая сопоставляет инструкции, агентов, skills, hooks и другие механизмы настройки в одном месте.