Hierarchiczny podział zadań
Cel nadrzędny -> podcele -> podcele niższego poziomu — to jedyny sposób, w jaki ludzie (i agenci) radzą sobie z dużymi zadaniami.
Hierarchiczny podział zadań to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Gdy zadania stają się duże
„Zrefaktoryzuj moduł uwierzytelniania” to zbyt duże zadanie dla jednego promptu. Agent musi podzielić je na mniejsze, łatwiejsze do zarządzania części.
Hierarchiczna dekompozycja zadań (HTD) to sposób, w jaki ludzie i agenci radzą sobie z takimi zadaniami.
Hierarchia
- Cel — cel wysokiego poziomu
- Podcele — główne etapy
- Zadania — konkretne kroki
- Działania — pojedyncze wywołania narzędzi
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}
'''Dekompozycja rekurencyjna
Jeśli zadanie nadal jest zbyt duże, należy zdekomponować JE dalej. Należy zakończyć podział, gdy zadanie mieści się w pojedynczym kroku LLM (około 3–5 wywołań narzędzi).
Kiedy zakończyć dekompozycję
Heurystyki:
- Opis zadania mieści się w jednym zdaniu
- Zadanie ma jasne kryteria akceptacji
- Zadanie dotyczy niewielkiej liczby plików
- Zadanie można zweryfikować za pomocą konkretnego testu
Struktury drzewiaste
Dekompozycję należy reprezentować jako drzewo. Każdy węzeł to zadanie zawierające: opis, status (pending/running/done/failed), children:
@dataclass
class TaskNode:
description: str
status: Literal['pending', 'running', 'done', 'failed']
children: list['TaskNode']
result: str | None = NoneWykonywanie w głąb
Należy przechodzić przez drzewo w głąb. Każdy liść trzeba ukończyć przed przejściem dalej:
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'Agregowanie wyników
Po ukończeniu elementów podrzędnych należy zagregować wyniki w węźle nadrzędnym:
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}').contentUdostępnianie drzewa użytkownikom
W przypadku agentów działających długo należy pokazywać użytkownikom drzewo wraz z aktualizowanym na żywo statusem. Zapewnia to zaufanie i przejrzystość:
[x] Add OAuth dependency
[x] Configure OAuth client
[~] Replace login endpoint <-- in progress
[ ] Replace session middleware
[ ] Update testsZezwalanie na edycję drzewa
Zaawansowani użytkownicy mogą chcieć pomijać, dodawać lub zmieniać kolejność zadań. Należy obsługiwać ręczne modyfikowanie drzewa planu.
Ponowne planowanie po niepowodzeniu
Jeśli podzadanie wielokrotnie kończy się niepowodzeniem, należy wrócić do węzła nadrzędnego i przeprowadzić ponowną dekompozycję:
if failed_count(node) > 2:
parent = node.parent
parent.children = llm_replan(parent, failure_context=node.last_error)Koszt dekompozycji
Każda dekompozycja wymaga wywołania LLM. Buforowanie pomaga — ten sam cel -> ta sama początkowa dekompozycja.
Kiedy zakończyć podział
Kiedy agent powinien zakończyć dekompozycję zadań?
Podsumowanie
Cele -> podcele -> zadania -> działania. Należy zbudować drzewo, wykonywać je w głąb, agregować wyniki i ponownie planować po niepowodzeniu. To standardowy wzorzec pracy obejmującej długi horyzont.
Często zadawane pytania
Czy lekcja „Hierarchiczny podział zadań” jest bezpłatna?
Tak — pełny tekst „Hierarchiczny podział zadań” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Hierarchiczny podział zadań”?
Cel nadrzędny -> podcele -> podcele niższego poziomu — to jedyny sposób, w jaki ludzie (i agenci) radzą sobie z dużymi zadaniami. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Hierarchiczny podział zadań”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Hierarchiczny podział zadań
- Stosy celów i wycofywanie
- Modele świata i przewidywanie skutków
- Pętle refleksji i samokrytyki