Napsali jste jednu větu, stiskli Enter - a v terminálu se rozjel proud řádků. Otevřel soubor. Spustil příkaz. Znovu otevřel tentýž soubor. Zvenku to vypadá jako zmatek: chtěli jste přece jednu jednoduchou věc, a místo toho se děje něco dlouhého a nepřehledného.
Žádný zmatek v tom není. Agent prochází opakující se smyčkou ze tří částí a skoro všechno, co vidíte na obrazovce, je pořád tatáž smyčka, jen v různých průchodech.
Proč agent udělá víc než chat
Chat vypíše odpověď a zbytek je na vás: zkopírovat, vložit, uložit, spustit. Agent pracuje ve vašem projektu sám - otevírá soubory, upravuje je, spouští příkazy, dívá se na výsledek. A změny vám na disku zůstanou doopravdy.
Z toho plyne důsledek, kvůli kterému tenhle článek vznikl. Když agent věci dělá, a ne jen radí, na jeden zátah to nejde. Mezi vaší větou a hotovým výsledkem leží několik kroků a všechny jsou vidět na obrazovce.
Z čeho se skládá jeden krok
Po vašem požadavku agent vstoupí do této smyčky a projde ji tolikrát, kolikrát je potřeba. Každý průchod má tři části.
Získat kontext. Agent si dohledá, co neví: otevře potřebné soubory, podívá se na strukturu projektu, přečte výstup předchozího příkazu. Nejčastěji překvapí tohle: váš projekt nezná nazpaměť, on ho čte. Pokaždé, když potřebuje nějaký detail, jde se podívat.
Provést akci. Jednu konkrétní akci: upravit soubor nebo spustit příkaz. Ne celý záměr najednou, ale další krok.
Ověřit výsledek. Podívat se, co z toho vzniklo, a porovnat to s tím, o co jste žádali.
Pak přijde rozcestí. Cíl je splněný - agent se zastaví a čeká na další požadavek. Splněný není - vrátí se k získávání kontextu a jde na další kolo.
Smyčka se přitom přizpůsobuje požadavku, nejede podle pevného rozvrhu. Jednoduchá otázka ke kódu může skončit už u získávání kontextu: agent přečetl, odpověděl, nic neměnil. Oprava chyby naopak projde všemi třemi částmi několikrát. A hranice mezi částmi nejsou vždycky ostré - nástroje agent používá v průběhu celé smyčky.
Odtud se bere všechno, co vypadalo divně. Agent otevřel tentýž soubor dvakrát - po úpravě se na něj potřeboval podívat znovu. Mezi požadavkem a odpovědí uběhlo několik minut - průchody byly čtyři, ne jeden. Návrat na začátek není selhání, takhle to má fungovat.
Uvažování a volání nástroje
Ne všechno, co agent dělá, mění soubory v projektu. Hranice vede přesně středem jeho práce a vyplatí se ji vidět.
Uvažování - agent zvažuje, co dělat dál, do kterého souboru se podívat, v čem může být příčina chyby. Na disku se přitom nezmění nic. Ať uvažuje sebepřesvědčivěji, zatím je to jen záměr.
Volání nástroje - tady se teprve děje něco skutečného. Přečíst nebo zapsat soubor, prohledat projekt, spustit příkaz, nahlédnout do dokumentace na internetu. Každá taková akce je v terminálu vidět jako samostatný řádek a právě z těchto akcí se skládá to, co se s projektem stalo.
Výsledek volání se vrací agentovi a stává se součástí toho, co ví v dalším průchodu. Přečetl soubor - teď zná jeho obsah. Spustil test - teď ví, jestli prošel.
Příkaz spadl, soubor se nenašel, test neprošel - agent to vidí a v dalším kroku s tím počítá. Chybová hláška ve výstupu neznamená, že se všechno rozbilo a je čas to vzdát. Často je to přesně ta informace, která mu chyběla, a další průchod bude přesnější než ten předchozí.
Praktický závěr je jednoduchý. Řádky o voláních nástrojů nejsou technický šum, který se odscrolluje bez čtení. Právě tam je vidět, co se s vašimi soubory děje v tuhle chvíli.
Proč se agent ptá
Uprostřed práce se agent může zastavit a na něco se zeptat. Je to běžná součást smyčky, ne známka toho, že si neví rady.
Otázky bývají dvojího druhu a vyplatí se je rozlišovat:
- chybí informace o úkolu - co přesně změnit, který ze dvou podobných souborů jste mysleli, co se počítá jako hotové. Agent narazil na nejednoznačnost a nechce hádat;
- potřebuje povolení k akci - agent se chystá udělat něco podstatného a zastaví se, aby se zeptal, jestli smí. Jak moc je samostatný, záleží na nastavení.
První druh otázky je dobré znamení. Lepší si to ujasnit hned než předělávat práci po třech průchodech smyčky špatným směrem.
Na otázky nemusíte čekat, můžete si o ně říct sami. Hned na začátku, ještě před prvními úpravami, požádejte agenta, ať úkol popíše vlastními slovy a zeptá se na všechno, co je nejasné:
Napiš, jak jsi pochopil úkol a jak ho chceš řešit.
Ptej se, pokud ti to pomůže lépe pochopit úkol a cíl.Nejednoznačnosti tak vyplavou před první úpravou, a ne až ve chvíli, kdy je polovina práce hotová. Zasáhnout můžete i kdykoli v průběhu: doplnit kontext, upravit směr nebo agenta zastavit a úkol přeformulovat.
Kdo rozhoduje, že je hotovo
Slovo "hotovo" od agenta znamená jen jedno: skončila jeho smyčka. Provedl akci, ověřil výsledek podle svých měřítek a usoudil, že cíle dosáhl. Práce tím ale ještě hotová není.
Změna se nepovažuje za přijatou ve chvíli, kdy ji agent udělal, ale až když se člověk podíval, co se doopravdy změnilo, a převzal za výsledek odpovědnost. Pak jsou dvě možnosti: přijato - práce je hotová; přepracování - popíšete, co je špatně, a smyčka začíná znovu od vašeho nového požadavku.
Přitom se nedívejte na hlášení, ale na samotné změny: agent ukazuje, které řádky odebral a které přidal. To je přesná odpověď na otázku "co se změnilo" a v textu agenta ji nenajdete.
Agent umí popsat, co udělal, tak, že není čeho se chytit: "přidal jsem ošetření chyb do tří metod, ověřil jsem to, všechno funguje". Zní to jako fakt. Jenže text odpovědi a obsah souborů jsou dvě různé věci a ne vždycky se shodují. Jediný způsob, jak zjistit pravdu, je podívat se na seznam změn.
Jak to funguje při práci s Claude Code
Co vám pochopení smyčky dá v praxi:
- čím přesněji je požadavek formulovaný, tím méně průchodů. Agent prochází smyčkou tak dlouho, dokud se netrefí do toho, o co jste žádali, a vágní zadání stojí kola navíc;
- vaše vlastní úpravy v souborech agent zachytí, až je příště otevře: projekt si přece nepamatuje, ale čte ho. Pokud jste něco upravovali ručně, řekněte mu to;
- smyčka agenta končí slovem "hotovo". Práce končí vaší kontrolou, a to jsou dva různé okamžiky.
Dohromady to vypadá takhle: smyčka agenta uvnitř, vaše kontrola venku.
GO TO FULL VERSION