Přeskočit na obsah

Lekce 06.8: Příkaz /goal (The Goal Command)

⏱️ 4 min čtení Lekce 06.8

🧠 Mentální model & teoretický rozbor

Příkaz /goal představuje autonomní inženýrský režim v moderních CLI harnessech (Google Antigravity i Claude Code): Místo zadávání dílčích příkazů krok za krokem zadáte agentovi vysokoúrovňový cíl společně s deterministickou ověřovací podmínkou (Exit Condition):

AUTONOMNÍ SMYČKA PŘÍKAZU /GOAL:
┌─────────────────────────────────────────────────────────────┐
│ 1. CÍL + ORÁKULUM (např. `pnpm tsc --noEmit` nebo `vitest`) │
└──────────────────────────────┬──────────────────────────────┘
┌──────────────────────────────▼──────────────────────────────┐
│ 2. CYKLUS AUTONOMNÍHO AGENTA: │
│ a) Spustí verifikační příkaz v terminálu ➔ zachytí chyby │
│ b) Analyzuje diff / chybu a provede cílenou editaci na disku
│ c) Spustí verifikaci znovu │
│ d) Evaluátor vyhodnotí stav transkriptu a výstupu │
│ e) Opakuje, dokud EXIT CODE není 0 nebo cíl není splněn! │
└─────────────────────────────────────────────────────────────┘

Implementace v Antigravity (agy):

V Antigravity je /goal specializovaný režim pro dlouhotrvající (až noční) autonomní běhy. Běžný agent se po jedné odpovědi zastaví a čeká na člověka. V režimu /goal:

  • Antigravity nasadí interní vyhodnocovací vrstvu (evaluator).
  • Ta kontroluje výstupy z transkriptů a nedovolí agentovi skončit předčasně, dokud nejsou splněna všechna zadaná kritéria.
  • Pokud narazí na chybu, sám se pokusí o alternativní řešení, vyčistí dočasné soubory a pokračuje.

🏢 Realistický scénář z praxe

Při velké aktualizaci TypeScriptu nebo Next.js z verze 14 na 15 se v repozitáři objevilo 45 typových chyb (změny v PageProps, RouteHandlerContext a generateMetadata):

  • Místo ručního procházení 45 chyb zadá inženýr do agy:
    Terminál
    /goal Oprav všechny TypeScript typové chyby v src/, dokud příkaz `pnpm tsc --noEmit` neproběhne s exit kódem 0. Neměň byznys logiku komponent, pouze zpřesni typové definice a přidej await pro asynchronní params.
  • Agent běží autonomně, iterativně opravuje jeden soubor po druhém, spouští kompilátor a skončí s perfektně zkompilovaným projektem!

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

Správná formulace příkazu /goal:

/goal Odstraň všechna linter varování a formátovací chyby v adresáři src/components/.
Ověřovací podmínka: Příkaz `npx biome check src/components/` musí vrátit exit kód 0.
Pravidla: Zákaz používání @ts-ignore, any nebo biome-ignore bez výslovného souhlasu.

Proč je nutné deterministické orákulum:

[!CAUTION] Nikdy nezadávejte /goal bez měřitelné podmínky: Zadat: /goal Zlepši UX a udělej kód přehlednějším.

  • Neexistuje žádný program, který by změřil “přehlednost” binárním výstupem 0 nebo 1.
  • Agent se zacyklí v nekonečných úpravách a spálí statisíce tokenů.
  • Pravidlo: Cíl MUSÍ být měřitelný exit kódem terminálového programu (linter, kompilátor, test suite)!

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

Chyba: Povolení agentovi měnit samotný testovací skript

Pokud agent v rámci /goal smí upravovat samotný test, který ho ověřuje:

  • Model v pokušení projít může test jednoduše zkrátit, smazat assert nebo přidat test.skip()!
  • Obrana: V promptu výslovně uveďte: „Máš zákaz upravovat soubory *.test.ts. Testy jsou neměnné orákulum!“

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

  1. Ujistěte se, že máte funkční a deterministický verifikační příkaz (pnpm tsc --noEmit nebo pnpm vitest run).
  2. Uzamkněte testy: ujistěte se, že testy jsou správné a agent je nesmí smazat.
  3. Spusťte /goal [cíl] s podmínkou úspěchu [příkaz].
  4. Nechte agenta pracovat na pozadí (můžete přepnout na jinou práci).
  5. Po dokončení proveďte git diff a zkontrolujte čistotu řešení.

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

Úkol:

Vyzkoušejte si autonomní běh s příkazem /goal na opravě typových chyb nebo linteru.

Kroky:

  1. Záměrně vytvořte v jednom testu nebo souboru 2 typové neshody (např. nepovolený parametr v interface).
  2. Spusťte agy (nebo claude).
  3. Zadejte:
    Terminál
    /goal Oprav typovou nekonzistenci v src/, dokud `pnpm tsc --noEmit` neprojde s exit kódem 0.
  4. Sledujte, jak agent sám spustí kompilátor, přečte řádek s chybou, upraví kód a ověří zelený výsledek.