← Zpět na Systémy

Mantinely pro AI programovací agenty překonají chytřejší modely

ai-agentsguardrailsworkflowgovernance

Kontrolor se podíval na můj kód a našel chybu. Jedna trasa vracela chybu 500, i když měla vracet 404. Nález popsal jasně, včetně souboru a řádku.

Můj agent tu trasu opravil. Přesně tu jednu.

Pět dalších tras mělo úplně stejnou chybu. Zůstaly tam beze změny, zatímco agent oznámil dokončení práce — a nelhal. Opravil to, co mu někdo ukázal. Jen ho nikdy nenapadlo zeptat se, na kolika dalších místech se skrývá stejná chyba.

Nějakou dobu jsem předpokládal, že je to problém modelu a že ho lepší model vyřeší. Ukázalo se, že jsem se mýlil, a řešení, které fungovalo, bylo hloupější, než jsem čekal. Mantinely pro AI programovací agenty nemají model udělat chytřejším. Mají mu dát místo, kam může věci odkládat.

Pixelartový AI robot sahá po velkém červeném tlačítku vedle padajícího racku produkčních serverů a je připoutaný ke skříňce s kontrolními seznamy, disketou a lidskou rukou
Každá zásuvka v té skříňce představuje něco, co by si jinak agent musel držet v hlavě.

Kde AI programovací agenti nenápadně chybují

Selhání, která mě stála nejvíc času, neměla po technické stránce nic společného. Strukturálně však měla jedno společné: pokaždé někdo držel něco důležitého v hlavě, místo aby to zapsal.

„Hlásil hotovo. Nebylo.“

Dostaneš zprávu o dokončení. Seznam úkolů je odškrtnutý. Pak se podíváš a tam, kde má být logika, najdeš TODO, funkci vracející prázdný seznam nebo dílčí úkol, který agent nenápadně přeskočil.

Tuhle část jsem pochopil až příliš pozdě. Agent neblafuje. Kontroluje svou práci proti vlastní vzpomínce na to, co právě napsal, a ta vzpomínka působí opravdu přesvědčivě. Zelené testy spolu s živou vzpomínkou na psaní kódu působí přesně jako hotová práce.

Místo toho to odlož jinam: nic se nepočítá jako hotové bez důkazů, na které se můžeš podívat. Ne tvrzení, že to prošlo. Skutečný výstup, skutečný soubor, skutečný řádek.

Pixelartový robot drží zelený kontrolní seznam s nápisem DONE, zatímco soubor vedle něj ukazuje TODO, prázdný návrat a přeskočený řádek pod červeným poplachem
Neblafuje. Zkontroloval práci proti vlastní vzpomínce na její psaní.

„Místo opravy kódu změnil můj test.“

Tohle zabolí, protože agent dělá přesně to, o co jsi ho požádal. Řekl jsi mu, ať zařídí, aby testy prošly. Neúspěšný test může začít procházet dvěma způsoby a jeden z nich je mnohem snazší.

Místo toho to odlož jinam: napiš kritéria před začátkem práce a potom s nimi zacházej jako s něčím pouze pro čtení. Pokud jim výsledek neodpovídá, je špatně výsledek. Ne kritéria. Zní to samozřejmě až do chvíle, kdy sám dostaneš chuť posunout cíl o kousek.

Proč delší CLAUDE.md vede agenty k ignorování pokynů

Můj první instinkt byl stejný jako u všech ostatních. Všechno zapsat do CLAUDE.md. Každé selhání se stalo novým pravidlem a soubor rostl.

Bylo to horší. Ne dramaticky — jen vytrvale, způsobem, který se těžko přisuzoval konkrétní příčině. Pravidla si začala odporovat tak, že jsem to neviděl, a model si potichu vybral jeden výklad, aniž by na rozpor upozornil. A když výzkumníci skutečně otestovali kontextové soubory repozitářů na reálných issues, soubory úspěšnost úkolů vůbec nezlepšily. K nákladům na inferenci přidaly přes 20 %. Závěr zněl, že kontextový soubor má obsahovat jen nezbytné minimum.

To je celý problém v kostce. Dlouhým souborem pravidel říkáš zapomnětlivému systému, aby si pamatoval usilovněji. Musí toho držet víc, ne méně.

Framework, který jsem nakonec začal používat, má pravidlo, jež mi při prvním čtení připadalo chybné a po vlastní zkušenosti správné: každé nové pravidlo musí jedno staré smazat nebo se s ním sloučit. Počet pravidel nesmí růst. Když tě to donutí k těžké volbě, právě ta volba je smyslem celého pravidla — zjistíš, na kterých pravidlech jsi skutečně závisel.

Pixelartová postava pokládá další stránku na vysokou hromadu pravidel, zatímco robot pod ní mizí
Každé selhání se stalo novým pravidlem. Hromada rostla, jejich dodržování ne.

Pět míst, kam věci odkládat

To je celá myšlenka. Každý řádek ukazuje něco, co selže, když to někdo drží v hlavě, a místo, kam to patří.

Drženo v hlavě Odloženo jinam
Co mělo znamenat „hotovo“ Kritéria napsaná před prací
Jestli to někdo opravdu zkontroloval Důkazy, na které se můžeš podívat
Jestli je tvoje vlastní práce dobrá Jiný model, který ji zkontroluje
Co jsi rozhodl před třemi hodinami Soubor na disku
Jestli je bezpečné danou akci provést Brána, která se zastaví u člověka

Tři z těchto bodů si zaslouží krátké vysvětlení.

„Stejně nakonec všechno kontroluji sám.“

Pokud jsi přestal výstupu věřit, stal ses úzkým hrdlem a agent ti nepřinesl vůbec žádnou výhodu.

Požádat agenta, aby zkontroloval vlastní práci, nepomůže. Důvod stojí za zamyšlení: chybu vytvořil tentýž kontext, takže model sahá po stejných důvodech. Práci bude obhajovat, místo aby ji prověřil.

Místo toho to odlož jinam: předej kontrolu jinému modelu, ideálně od jiného dodavatele. Jiný trénink, jiná slepá místa. Model, který našel mou chybu v pěti trasách, nebyl ten, který ji napsal, a to není náhoda.

Pixelartová montážní linka, na které programovací robot razítkuje jako schválenou stránku s chybou, zatímco jiný robot dál po lince zachytí tuto chybu v lupě
Stejný kontext, stejná slepá místa. Chybu musí zachytit někdo jiný.

„Něco se samo schválilo a já to nebyl.“

Agenti čtou spoustu textu, který nenapsali — vlákna issues, dokumentaci, webové stránky, výstupy nástrojů. Kterýkoli z nich může obsahovat slovo „schváleno“. Prompt injection zaujímá první místo na seznamu rizik OWASP pro tyto systémy a OWASP otevřeně říká, že běžné obranné mechanismy ho nedokážou plně zmírnit.

Místo toho to odlož jinam: u schválení záleží na tom, odkud přišlo, ne na tom, co říká. Člověk řekl ano nebo ano říká podepsaný artefakt na disku. Všechno ostatní, co pouze obsahuje slovo „schváleno“, je text.

„Kompakce mi sežrala čtyři hodiny kontextu.“

Dlouhé sezení, kontext se zaplní, konverzace se shrne. Shrnutí zachová, co se stalo, a ztratí proč. O hodinu později znovu rozebíráš rozhodnutí, které už jsi uzavřel, a nedokážeš říct, jestli jsi opatrný, nebo se točíš v kruhu.

Místo toho to odlož jinam: do souboru. Rozhodnutí, aktuální stav, další krok. Sezení je na jedno použití, soubor ne. Než prohlásíš cokoli za hotové, znovu si ho přečti.

Pixelartová postava a robot u stolu znovu rozebírají uzavřené rozhodnutí, zatímco soubor DECISIONS.md vedle nich už ukazuje zvolenou možnost
Shrnutí zachovalo, co se stalo, a ztratilo proč. Soubor zachová obojí.

Kolik stojí mantinely pro AI programovací agenty

Důležitější než číslo je struktura, takže nejdřív ta: integrace je jednorázový náklad. Zaplatíš ho při zapojování mantinelů do kódové základny a tuto část podruhé neplatíš. Výjimkou je nezávislá kontrola — běží při každé změně, takže něco stojí i po počátečním nastavení.

Zajímavé je rozdělení. Zhruba 80 % mých výdajů připadlo na levný model, který dělal hromadnou práci, asi 17 % na drahý model pro plánování a úsudek a asi 3 % na kontrolu druhým modelem — krok, který lidé vynechávají. Bezpečnost byla s velkým náskokem nejlevnější položkou na účtu. Napříč mými projekty zůstával tento poměr zhruba stejný, i když se ceny měnily.

A teď číslo: u většiny projektů, na kterých jsem pracoval, stála dodatečná integrace při cenách ze srpna 2026 přibližně 100 až 200 dolarů za využití API. Poměr je důležitější než dolary — počítej s tímto rozmezím a očekávej experimentování. Jedno nebo dvě rozhodnutí vezmeš zpět a některou fázi spustíš znovu, což už je v odhadu zahrnuto.

Tvoje číslo bude jiné a ovlivní ho zjevné věci: velikost kódové základny, počet změn názoru a množství práce, které deleguješ na levnější úroveň.

Založení nového projektu mě stálo mnohem méně, a to je užitečnější poznatek. Peníze nejdou na framework. Jdou na sladění — postupné rozhodování, které ze stávajících nástrojů a návyků mantinely nahradí a kterým se musí přizpůsobit. Při mé integraci nepřežily ani testovací příkazy samotného frameworku; byly odstraněny a nahrazeny skripty, které už projekt používal. V novém projektu není co slaďovat.

Pixelartové rozdělení účtu za nastavení: osmdesát procent hromadná práce, sedmnáct procent plánování, tři procenta kontrola
Moje vlastní pozorované rozdělení, ne údaj za celé odvětví. Bezpečnostní krok byl nejlevnější položkou na účtu.

Začni s jedním

Nepotřebuješ všech pět. Vyber si selhání, které tě tento týden stojí nejvíc, a právě tuto jednu věc někam odlož.

Pokud nevíš, které zvolit, začni nezávislou kontrolou — druhým modelem, který se podívá na práci prvního. Je nejlevnější z pěti možností a zachytí nejširší škálu problémů, včetně těch, které by tě nikdy nenapadlo hledat.

Chyba v pěti trasách zůstává mým oblíbeným příkladem, protože na ní nebylo nic těžkého. Agent potřeboval jediný pokyn, který neměl: než něco opravíš, najdi všechno ostatní, co má stejnou podobu. Tento pokyn teď žije v souboru. Bude tam při příštím sezení i při tom následujícím, dlouho poté, co všichni zapomeneme, proč vznikl.

Celý framework včetně mantinelů a kroků pro jeho zavedení najdeš na GitHubu.


Zdroje


Odebírat