Иерархическая декомпозиция задач
Цель верхнего уровня → подцели → подподцели — единственный способ, которым люди и агенты справляются с большими задачами
«Иерархическая декомпозиция задач» — бесплатный урок AI Agents на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Когда задачи становятся большими
«Переработайте модуль аутентификации» — слишком большая задача для одного запроса. Агент должен разбить её на более мелкие, управляемые части.
Иерархическая декомпозиция задач (HTD) — способ, которым люди и агенты решают такие задачи.
Иерархия
- Цель — задача высокого уровня
- Подцели — основные этапы
- Задачи — конкретные шаги
- Действия — отдельные вызовы инструментов
Example Decomposition
Goal: Refactor authentication module to use OAuth.
Sub-goal 1: Set up OAuth dependencies
Task: Add dependency to requirements.txt
Task: Configure OAuth client
Sub-goal 2: Replace existing auth flow
Task: Replace login endpoint
Task: Replace session middleware
Task: Update tests
Sub-goal 3: Migration and rollout
Task: Write migration script
Task: Update documentationLLM-Driven Decomposition
DECOMPOSE_PROMPT = '''
Decompose this goal into 3-6 sub-goals. For each sub-goal, list 2-5 concrete tasks.
Return JSON: {sub_goals: [{name, tasks: [str]}]}
Goal: {goal}
'''Рекурсивная декомпозиция
Если задача всё ещё слишком велика, декомпозируйте IT-задачу дальше. Остановитесь, когда задача помещается в один шаг LLM (примерно 3–5 вызовов инструментов).
Когда прекратить декомпозицию
Эвристики:
- Описание задачи помещается в одно предложение
- У задачи есть четкие критерии приемки
- Задача затрагивает небольшое число файлов
- Задачу можно проверить с помощью конкретного теста
Древовидные структуры
Представляйте декомпозицию в виде дерева. Каждый узел — это задача со следующими свойствами: описание, статус (ожидает выполнения/выполняется/завершено/не выполнено), дочерние узлы:
@dataclass
class TaskNode:
description: str
status: Literal['pending', 'running', 'done', 'failed']
children: list['TaskNode']
result: str | None = NoneВыполняйте обход в глубину
Обходите дерево в глубину. Завершайте каждый конечный узел, прежде чем переходить дальше:
def execute(node):
if node.children:
for child in node.children:
execute(child)
else:
node.status = 'running'
try:
node.result = run_leaf(node)
node.status = 'done'
except Exception as e:
node.status = 'failed'Агрегируйте результаты
После завершения дочерних узлов выполните aggregate для родительского узла:
def aggregate(parent):
summaries = [c.result for c in parent.children if c.status == 'done']
parent.result = llm.invoke(f'Summarise these sub-task results: {summaries}').contentПоказывайте дерево пользователям
Для долго работающих агентов показывайте пользователям дерево с обновлениями статуса в реальном времени. Это укрепляет доверие и обеспечивает прозрачность:
[x] Add OAuth dependency
[x] Configure OAuth client
[~] Replace login endpoint <-- in progress
[ ] Replace session middleware
[ ] Update testsРазрешите редактирование дерева
Опытные пользователи могут захотеть пропускать, добавлять или переупорядочивать задачи. Поддерживайте ручное редактирование дерева плана.
Перепланируйте при сбое
Если подзадача неоднократно завершается сбоем, вернитесь к родительскому узлу и выполните декомпозицию заново:
if failed_count(node) > 2:
parent = node.parent
parent.children = llm_replan(parent, failure_context=node.last_error)Стоимость декомпозиции
Каждая декомпозиция — это вызов LLM. Помогает кэширование: одна и та же цель → одна и та же исходная декомпозиция.
Когда прекратить разбиение
Когда агенту следует прекратить декомпозицию задач?
Повторение
Цели → подцели → задачи → действия. Постройте дерево, выполняйте обход в глубину, агрегируйте результаты, перепланируйте при сбое. Это стандартный шаблон для долгосрочной работы.
Изучай AI Agents с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 60
- Уроки
- 239
Часто задаваемые вопросы
Урок «Иерархическая декомпозиция задач» бесплатный?
Да — полный текст урока «Иерархическая декомпозиция задач» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Иерархическая декомпозиция задач»?
Цель верхнего уровня → подцели → подподцели — единственный способ, которым люди и агенты справляются с большими задачами Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Иерархическая декомпозиция задач»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Иерархическая декомпозиция задач
- Стек целей и возврат назад
- Модели мира и прогнозирование на несколько шагов
- Циклы рефлексии и самокритики