Přeskočit na obsah

Lekce 02.11: Subagenti (Subagents)

⏱️ 3 min čtení Lekce 02.11

🧠 Mentální model & teoretický rozbor

Subagenti představují nejmocnější architektonický nástroj pro ochranu Smart Zone hlavního sezení.

HLAVNÍ SEZENÍ (Orchestrátor / Architekt) - Udržováno čisté ve SMART ZONE
├── Potřeba prozkoumat 50 souborů v legacy modulu
└── 🚀 Vyvolání SUBAGENTA (Izolované, čerstvé sezení)
│ • Subagent dostane čisté kontextové okno (0 tokenů)
│ • Otevře 50 souborů, spálí 60 000 tokenů balastu
│ • Provede syntézu a vytvoří stručný 5řádkový report
Návrat pouze čistého extraktu zpět do hlavního sezení (300 tokenů)

Bez subagentů by se oněch 60 000 tokenů ze všech 50 souborů nasypalo do vašeho hlavního kontextu a okamžitě by ho uvrhlo do Dumb Zone. Díky subagentům zůstává hlavní inženýrská smyčka lehká, bystrá a soustředěná.


🏢 Realistický scénář z praxe

Refaktorujete monorepo s 15 balíčky: Chcete zjistit, které balíčky stále importují starou verzi autentizační utility z @acme/legacy-auth.

  • Bez subagenta: Hlavní agent otevře desítky souborů package.json a zdrojáků. Váš hlavní kontext je zaplaven balastem.
  • Se subagentem: Hlavní agent vyvolá subagenta: „Prohledej všechny package.json v balíčcích a vrať seznam těch, které obsahují @acme/legacy-auth.“
  • Subagent vrátí: „Nalezeno ve 3 balíčcích: web, admin, api-gateway.“
  • Hlavní agent okamžitě pokračuje v cílené úpravě pouze těchto 3 míst.

💻 Konkrétní ukázky kódu & promptů

Jak fungují subagenti v Antigravity vs. Claude Code:

  • V Antigravity (agy): Antigravity má nativní orchestraci subagentů. Můžete vyvolat specializovaného research subagenta běžícího na Gemini Flash, který má read-only nástroje (ViewFile, GrepSearch, GlobTool), prozkoumá kód a vrátí strukturovaný extrakt do hlavního orchestrátora bez znečištění kontextu.
  • V Claude Code (claude): Claude Code spouští subagenty přes vestavěný nástroj Task (definované v .claude/agents/<name>.md), typicky směrované na Claude 3.5 Haiku.

Ukázka direktivy v AGENTS.md / GEMINI.md:

## Pravidla pro průzkum rozsáhlého kódu
Kdykoliv je potřeba prozkoumat více než 5 souborů pro zjištění závislostí nebo nalezení příkladů:
1. VŽDY deleguj tuto úlohu na subagenta (research agent na modelu Flash).
2. Zadání pro subagenta musí být striktně ohraničené a vyžadovat POUZE strukturovaný souhrn.
3. Nevtahuj do hlavního kontextu celé zdrojové kódy nalezených souborů.

Ukázka výzvy pro aktivaci subagenta v sezení:

Použij subagenta pro průzkum adresáře src/legacy.
Úkol pro subagenta:
- Najdi všechny soubory, které exportují funkce začínající na `deprecated_`.
- Vrať pouze markdown tabulku: Název souboru | Název funkce | Odhadovaná náročnost refaktoru.

⚠️ Analýza selhání & Anti-patterns

Anti-pattern: Přidělení implementačních pravomocí neřízenému subagentovi

Někteří vývojáři nechají subagenta samostatně upravovat kód na disku bez dohledu:

  • Subagent nemá k dispozici kompletní kontext hlavního sezení ani architektonické souvislosti.
  • Může přepsat soubory způsobem, který rozbije rozpracovanou práci v hlavní větvi.
  • Pravidlo: Subagenti jsou primárně určeni pro čtení, rešerši, audit a syntézu. Zápis a finální integraci provádí hlavní orchestrátor ve Smart Zone pod vaším dohledem!

🛠️ Inženýrský postup krok za krokem (Playbook)

  1. Identifikujte „špinavou práci“: Kdykoliv hrozí čtení mnoha souborů, velkých logů nebo rozsáhlé dokumentace, delegujte ji na subagenta.
  2. Definujte přesný formát výstupu: Požadujte po subagentovi JSON, markdown tabulku nebo číslované odrážky.
  3. Zpracujte výsledek v hlavním sezení: Využijte čistý extrakt a proveďte chirurgický zásah ve Smart Zone.

🧪 Praktické cvičení (Hands-on Lab)

Úkol:

Ověřte si princip izolace kontextu pomocí subagenta.

Kroky:

  1. Zadejte agentovi: „Použij subagenta k prohledání všech testovacích souborů v projektu a zjisti, které z nich používají knihovnu vitest a které jest.“
  2. Sledujte, jak se spustí izolované sezení subagenta.
  3. Všimněte si, že po dokončení se ve vašem hlavním kontextu objeví pouze stručný seznam a celkový počet tokenů hlavního sezení téměř nevzrostl!