Agentní vývoj / Anatomie agenta
Vývoj softwaru se posunul k takzvanému agentnímu vývoji. AI už nepoužíváme jen jako chytřejší našeptávač kódu, ale pouštíme agenty, kteří samostatně procházejí projekt, upravují soubory a na základě chybových hlášek kód iterativně opravují.
Slovem „agent“ nebo „Claude“ ale vývojáři často označují dvě strukturálně odlišné vrstvy jednoho systému. Každá z nich má jinou roli a jiná omezení. Ta druhá navíc existuje ve dvou odlišných podobách.
Surový model (LLM)
První vrstvou je samotný jazykový model. Z technického pohledu jde o bezstavovou funkci, která přijme kontextovou výzvu (prompt) a na základě pravděpodobnosti vygeneruje odpověď.
Surový model sám o sobě nemá žádnou paměť ani přístup k disku. I ta zdánlivě samozřejmá věc, že si agent pamatuje začátek konverzace, je iluze – při každém jednotlivém zavolání se modelu posílá celá dosavadní historie znovu jako pole zpráv. Model si nepamatuje nic, jen dostává pokaždé delší zadání.
Jediné, co v rámci agentního vývoje umí, je vrátit takzvaný tool call, tedy strukturovaný požadavek na zavolání funkce s konkrétními parametry.
{
"tool_use": "execute_bash",
"parameters": {
"command": "sbt test"
}
}
Za povšimnutí stojí, že model příkaz nespustil. Pouze vygeneroval text, který příkaz popisuje. Bez okolního prostředí (tzv. harnessu) je model jen izolovaným výpočetním mozkem.
Harness
Druhou vrstvou je harness – aplikace, ve které model běží. Dělá čtyři věci, které model neumí:
- v každém požadavku mu popíše dostupné nástroje
- jeho tool cally skutečně vykoná v operačním systému
- výsledek vloží zpátky do konverzace
- spravuje kontext, tedy rozhoduje, co všechno se modelu pošle
První tři kroky se opakují, dokud model neusoudí, že je úkol hotový, případně dokud ho nezastavíte vy. Tomuto cyklu se říká agentní smyčka. Čtvrtý bod je průběžná starost, která se táhne celou relací – a jak se za chvíli ukáže, právě v ní se oficiální a agnostické harnessy rozcházejí nejvíc.
Oficiální CLI harness
Jde o hotová řešení dodávaná přímo tvůrci modelů. Vlajkovými loděmi jsou Claude Code od Anthropicu a Codex od OpenAI, případně agentní řešení integrovaná v editorech typu Cursor. Ke každému dotazu automaticky přibalují rozsáhlý systémový prompt – desítky tisíc tokenů instrukcí s pravidly pro formátování kódu, bezpečnostními omezeními, návody k použití nástrojů a strategiemi pro plánování úkolů.
Stejně tak automaticky řeší přetékání kontextového okna. Pokud historie nabobtná dlouhými výstupy z testů nebo kompilace, harness starší zprávy na pozadí sumarizuje nebo ořezává. Výhodou je, že se o nic nestaráte. Nevýhodou je ztráta kontroly – skryté instrukce nemůžete upravit ani vypnout a nevíte, co přesně z historie zmizelo. Navíc jste pevně uzamčeni v ekosystému jednoho poskytovatele.
Agnostický harness
Jde o otevřené a na konkrétním poskytovateli nezávislé řešení. Filozofie agnostického harnessu staví na plně transparentní a konfigurovatelné správě kontextu a chování agenta.
Namísto obřího skrytého systémového promptu dostáváte nástroj s garantovanou kontrolou nad tím, co přesně do modelu proudí. Konverzaci lze větvit, a když se agent vydá do slepé uličky, vrátíte se v historii do bodu rozdělení a kontext se vyčistí od neúspěšných pokusů. A jelikož harness nespoléhá na prompty šité na míru jednomu dodavateli, můžete v rámci jedné relace přepínat mezi modely různých poskytovatelů. Typickými příklady jsou Pi, OpenCode a další.
Ani jedna cesta není lepší sama o sobě. Pokud potřebujete okamžitě pracovat bez nastavování a vyhovuje vám, že se o kontext i systémový prompt stará dodavatel, oficiální harness je skvělá volba. Pokud chcete vidět pod pokličku, mít přehled o spotřebovaných tokenech a přizpůsobit chování agenta vlastním potřebám, vede cesta skrze agnostická řešení.
Obě vrstvy se dají vyměnit. Projekt, ve kterém agent pracuje, ne.
Zpětná vazba
Model je generátor pravděpodobného textu a sám od sebe nemá jak zjistit, že se spletl. U reality ho drží jedině deterministický nástroj, který jeho výstup ověří a vrátí verdikt – kompilátor, testy, linter.
A tady se ukazuje, že volba jazyka není neutrální. Ve staticky typovaném prostředí zamítne kompilátor velkou část chybných řešení dřív, než se k vám vůbec dostanou – a rovnou s přesnou pozicí v souboru. Cenou je pár sekund kompilace. V dynamicky typovaném jazyce se tentýž překlep projeví až za běhu – v lepším případě v testu, v horším nad produkčními daty. Silný typový systém tak pro agenta funguje jako mantinely: čím víc nelegálních stavů nejde zkompilovat, tím menší prostor mu zbývá na hádání. Rychlá inkrementální kompilace, spolehlivé testy a jasné chybové hlášky tak mají na výsledek větší vliv než volba modelu.