Odčítať, zosúladiť, dokázať: Tri zručnosti, ktoré zabránia AI agentom spraviť z vášho repozitára špagety

Publikované dňa Jul 1, 2026 autorom Štefan Moravík.
AI Agents Developer Productivity Agentic Workflows Code Review
Na tejto stránke 10 min čítania
  1. 1Časť 1 · ČO — entropia je predvolený stav
  2. 2Časť 2 · A ČO — päť PR, v každom jeden inštinkt
  3. 3Časť 3 · ČO TERAZ

Každý deň dávame kódovacím agentom skutočné tikety a oni takmer vždy dodajú niečo, čo funguje. To nikdy nebolo to, čoho sme sa obávali. Obava je ako pracujú: nový pomocník vedľa troch, ktoré už tú prácu robia, nová abstrakcia pre jediného volajúceho, oprava, ktorá zaplátá jednu cestu uvedenú v tikete a nechá štyroch súrodencov pokazených, nález, ktorý je „pravdepodobne chyba“ bez akéhokoľvek dôkazu. Každá zmena je lokálne rozumná. V súhrne sú to entropia.

TL;DR: V piatich pull requestoch úrovne Tier-3 na našom jadre pre orchestraciu agentov tri kombinovateľné zručnosti — ponytail (odčítať), grain (zosúladiť) a review-proof (dokázať) — odstránili 821 riadkov a zároveň dodali päť funkcií, zachytili tichý rozpad kontraktu, ktorý by samotná vierohodnosť zlúčila, a každú zmenu udržali v súlade s existujúcou architektúrou. Tu je, čo každá z nich robí, s reálnymi diffmi na dôkaz.

Zoberte zábradlia preč a kódovací agent je veľmi rýchly generátor vierohodne vyzerajúcich záväzkov. Preto sa opierame o tri malé zručnosti, ktoré tlačia opačným smerom — každá o jeden inštinkt: odčítať, zosúladiť, dokázať.

  • ponytail — napíš najlenivejšiu vec, ktorá naozaj funguje. Pred pridaním maž. (Túto sme nenapísali — je to open-source zručnosť od Dietricka Geberta , ktorú sme prispôsobili nášmu stacku.)
  • grain / grain-review — umiestni to tam, kde sa kódová základňa už rozhodla, že to patrí. Nevymýšľaj druhý spôsob.
  • review-proof — never nálezu, kým sa nedá reprodukovať ako padajúci test.

grain a review-proof sme postavili v tom istom duchu ako ponytail, vyladené na našu architektúru. Každý z piatich PR nižšie sa dotýka nášho jadra pre orchestraciu agentov — najdrahšieho miesta v repozitári, kde sa dá zbabrať — a každý je klasifikovaný ako Tier 3: dodatočné pokrytie testami a ľudská recenzia nad automatickým recenzentom, bez výnimiek.

Tri zručnosti kódovacích agentov, každá o jeden inštinkt: ponytail odčíta, grain zosúladí, review-proof dokáže — a čo každá z nich zabíja a aký je jej prínos

Tri zručnosti v skratke: ponytail odčíta, grain zosúladí, review-proof dokáže.

Časť 1 · ČO — entropia je predvolený stav

Tu je vec, pred ktorou vás nikto nevaruje, keď dáte repozitár AI agentom: každý agent optimalizuje lokálne a nič si nepamätá. Vidí tiket, nie mesiace konvencií, na ktorých sa váš tím zhodol. Nemá dôvod uprednostniť vašu existujúcu e-mailovú službu pred novou, nemá v pamäti, že množina stavov presmerovania je už definovaná o tri súbory ďalej, nemá inštinkt, že „oprava patrí do zdieľanej funkcie, nie do tohto jedného volajúceho“. Ak ich necháte bežať, N agentov vytvorí N mierne odlišných spôsobov, ako robiť to isté. To nie je problém kvality kódu, ktorý odstránite linterom — je to štrukturálny drift, ktorý sa kumuluje.

Každá z troch zručností cieli na jednu os tohto driftu.

ponytail — najlenivejšia vec, ktorá funguje

Ponytail je senior vývojár, ktorého o tretej ráno budili kvôli cudzej vychytanej abstrakcii a odmieta napísať ďalšiu. Prechádza rebríček a zastaví sa na prvom priečku, ktoré drží: musí to vôbec existovať (YAGNI) → je to už v tejto kódovej základni → zvládne to štandardná knižnica → natívna funkcia platformy → už nainštalovaná závislosť → dá sa to na jeden riadok → až potom minimálny kód, ktorý funguje.

Priečko, ktoré je pre agentov najdôležitejšie, je „je to už v tejto kódovej základni?“ Znovu implementovať to, čo je o pár súborov ďalej, je najčastejšia forma agentného šlamastu. A ponytailovo pravidlo pre opravy chýb drží diffy čestné: oprav koreňovú príčinu, nie symptóm. Prepíšte grepom každého volajúceho funkcie, ktorej sa chystáte dotknúť; jedna poistka v zdieľanej funkcii je menší diff než poistka v každom volajúcom — a nenechá súrodencov pokazených.

grain / grain-review — choď po vlákne

Ak ponytail riadi ako málo píšete, grain riadi kam to ide a aký tvar to má. Jeho jediné pravidlo: nájdi najbližší existujúci príklad, skopíruj jeho tvar, pomenuj, čo si skopíroval. Nový kód by mal pôsobiť tak, akoby ho napísal ten istý človek, ktorý napísal susedný súbor.

Grain je aj miesto, kde sa vynucuje architektúra. Náš backend má pomerne štandardné usporiadanie vertical-slice + hexagonal — presentation volá application, application volá domain, infraštruktúra závisí smerom dovnútra a doména nikdy nesiaha von. Nález ako „táto routa preskakuje svoj kontroler a ťahá službu priamo“ nie je pedantstvo — je to rozdiel medzi kódovou základňou, v ktorej sa agent o mesiac vyzná, a takou, v ktorej nie. grain-review loví presne tieto veci: duplikovaní pomocníci, prekročené hranice vrstiev, zasahovanie do vnútorností inej funkcie, druhá konvencia pre niečo, čo sa už robí jedným spôsobom.

review-proof — zaslúž si nález

Štandardná AI recenzia kódu produkuje vierohodné nálezy. Niektoré sú skutočné; niektoré sú sebavedomé nezmysly; zvonku vyzerajú rovnako. review-proof odmieta veriť sám sebe: najprv recenzuje, potom núti každý nález týkajúci sa správnosti reprodukovať sa ako skutočný padajúci test alebo spustiteľný repro, a všetko, čo to nedokáže, zahodí. Končí priechodom grain-review na štrukturálne usadenie. Výsledkom je recenzia, kde každá položka prichádza so spustiteľným dôkazom — nie s pocitom.

Čo by sme mali vidieť, ak to funguje

  • H1 — Mazanie sa objavuje vo feature PR. Ak ponytail + grain fungujú, pridanie funkcie by malo často odstraňovať čistú štruktúru, nielen pridávať.
  • H2 — Opravy pristanú raz, na zdieľanom mieste. Opravy koreňovej príčiny by mali zhrnúť mnoho volacích miest do jednej poistky, nie rozsypať poistky ku každému volajúcemu.
  • H3 — Recenzia zachytí rozpady kontraktu, ktoré človek preletí očami. Recenzia podložená dôkazmi by mala odhaliť chyby, ktoré recenzia typu „vyzerá to dobre“ prehliadne — najmä tie tiché.

Časť 2 · A ČO — päť PR, v každom jeden inštinkt

Päť skutočných zmien v našom agentovom jadre. Vnútornosti zámerne držíme vágne — repozitár je súkromný — ale čísla sú vypočítané zo skutočných diffov a prenosnou časťou sú ponaučenia.

Odčítať: jedna poistka pre tucet miest načítania

Jedna rodina krokov toku načítavala používateľom zadané URL bez bezpečnostnej kontroly s rozlíšením DNS, takže hostname, ktorý sa rozlíšil na internú adresu, mohol z backendu dosiahnuť cloudové metadáta. Lákavá oprava pridá kontrolu na každom z viac ako tucta miest načítania. Ponytailova odpoveď bola opačná: jeden zdieľaný, chránený pomocník na načítanie, používaný všade — a vymazali sme ručne napísanú tabuľku privátnych sietí, ktorú trik s wildcard DNS prešiel priamo, plus tri duplikované slučky presmerovania a sieťovú kontrolu skopírovanú do niekoľkých súborov.

Diff pridal zdieľaného pomocníka a odstránil ~90 riadkov duplicity v 22 súboroch. Práve to mazanie je pointa: toto je H2 v tele — oprava koreňovej príčiny previedla každého volajúceho cez jednu poistku namiesto záplaty jednej cesty uvedenej v tikete.

Tucet miest načítania používateľských URL, každé s vlastnou obchádzateľnou kontrolou, sa zlieva do jedného zdieľaného chráneného pomocníka na načítanie

Oprava koreňovej príčiny: tucet ad-hoc miest načítania sa zbieha do jedného zdieľaného, chráneného pomocníka. Lenivá oprava a bezpečná oprava sú tá istá oprava.

Odčítať + dokázať: jedna poistka tvaru, overená na reálnom runtime

Náš worker runtime ukladá výsledok behu ako serializovaný reťazec, niekedy zabalený do jednoprvkového zoznamu. Konzumenti, ktorí očakávali obyčajný objekt, na tom padali. Nesprávna oprava rozsype obranné typové kontroly ku každému konzumentovi. Namiesto toho: jeden malý pomocník na normalizáciu tvaru a každý konzument naň presmerovaný — takmer čisté pridanie jednej poistky, ktorá nahradí N ad-hoc poistiek, aké by napísal menej disciplinovaný agent (+558 / −24, 7 súborov).

Časť, ktorá z toho robí príbeh pre review-proof, je test. Namiesto tvrdenia o predpokladanom tvare serializácie sme spustili skutočný pracovný tok cez reálny runtime a úložisko — žiadne mocky — a dokázali sme tvar, ktorý runtime naozaj ukladá. Otvorená otázka v tikete bola doslova čo tu runtime serializuje? — a jediná čestná odpoveď je taká, ktorú viete spustiť.

Dokázať: recenzia zachytila tichý rozpad kontraktu

Funkcia: záložný model pre jednotlivý uzol, aby tok pripnutý k jednému poskytovateľovi počas výpadku degraduje elegantne. Zjavný prvý pokus zabalil model do vstavaného fallback kombinatora frameworku.

V bezchybnej ceste fungoval. Tiež však ticho vypol dve funkcie poskytovateľa, ktoré sa podmieňujú konkrétnym typom modelu cez isinstance — zabalený objekt už nie je toho typu, takže natívny štruktúrovaný výstup aj cachovanie promptov sa ticho vypli. Žiadna chyba. Žiadny padajúci test šťastnej cesty. Presne to, čo ľudská recenzia preletí očami a agent s postojom „vyzerá to dobre“ schváli.

review-proof to neschválil — reprodukoval oba rozpady ako padajúce testy, čo vynútilo prepracovanie: aplikovať fallback nižšie, v čase vykonávania, aby každý model zostal svojho konkrétneho typu a funkcie podmienené typom fungovali ďalej. H3, jednoznačne potvrdené: dôkaz zachytil chybu, ktorú by vierohodnosť dodala.

Zosúladiť: jeden výber, nie dve kópie

Pridanie druhého kanála notifikácií znamenalo, že UI na výber kanála malo teraz dva domovy — sprievodcu vytváraním a modálne okno nastavení. Predvolený ťah agenta pridá novú vetvu do oboch, čím vzniknú dve kópie toho istého stavového automatu. grain povedal: existuje už jeden spôsob, akým to má byť tvarované — sprav to zdieľané. Vytiahli sme jediný hook na výber a obe obrazovky sme cez neho viedli, nový kanál sme vložili do existujúcej konfiguračnej únie a znovu použili existujúcu e-mailovú službu namiesto pridania novej odosielacej mašinérie.

+1 735 / −340 v 24 súboroch. Funkcia tejto veľkosti, ktorá odstráni 340 riadkov, je viditeľné H1: deduplikácia dvoch kópií výberu do jednej zaplatila slušnú časť nového kanála.

Zosúladiť + dokázať: znovu použi endpoint, zrkadli cestu

Umožniť používateľom pripájať súbory pri vytváraní issue mohlo znamenať nový upload endpoint, nový mechanizmus odosielania, novú cestu promptu. grain nasmeroval takmer všetko na existujúce koľaje: existujúci upload endpoint, frontendový zoznam akceptovaných typov, ktorý presne zrkadlí backendový whitelist, a opravu odloženého odoslania, ktorá znovu použila mechanizmus spôsobilosti, aký už používala plánovaná práca. Dodané s opravami podloženými dôkazmi, vrátane skutočnej chyby izolácie transakcií, ktorá by pri paralelných uploadoch stratila dáta. +1 776 / −218 v 27 súboroch — veľká funkcia, ktorá napriek tomu našla 218 riadkov na odstránenie tým, že sa pripojila k existujúcim rezom namiesto vymýšľania nových.

Výsledková tabuľka

Výsledková tabuľka piatich PR úrovne Tier-3 s počtom pridaných a odstránených riadkov na PR a s inštinktom, ktorý každý formoval: odčítať, zosúladiť alebo dokázať

Päť PR úrovne Tier-3: čo každý pridal, čo odstránil a aký inštinkt za tým bol.

Päť PR s funkciami a opravami v agentovom jadre odstránilo 821 riadkov — nie tým, že by urobili menej, ale tým, že odmietli duplikovať to, čo už existovalo, a ponechať záplaty symptómov, ktoré oprava koreňovej príčiny urobila nadbytočnými.

Úplné zverejnenie

  • Toto sú zručnosti, nie štúdia. Nie je to kontrolovaný experiment s porovnávacou vetvou; je to päť skutočných PR, kde sa disciplína uplatnila. Kontrafaktuál — čo by ten istý agent dodal bez zručností — je informovaný odhad, nie meranie. Príbeh tichého rozpadu kontraktu je najčistejší dôkaz, pretože sme videli recenziu reprodukovať chybu pred prepracovaním.
  • Počty riadkov sú len proxy. Hodnota −821 je reálne číslo z diffov, ale „odstránené riadky“ zastupuje „vyhnutú duplicitu a mŕtvu flexibilitu“. Zručnosť, ktorá agenta odhovorí od napísania 200 špekulatívnych riadkov, nezanechá v diffe žiadnu stopu — najväčšie výhry sú tu neviditeľné.
  • Úspory tokenov sú orientačné. Menšie diffy, menej dotknutých súborov a znovu použité štruktúry znamenajú menej tokenov vynaložených na generovanie, recenziu a opätovnú recenziu — ale neuvádzame presnú zmenu tokenov na PR.
  • ponytail nie je náš. Je to open-source zručnosť od Dietricka Geberta ; prispôsobili sme ju. grain a review-proof sú naše, postavené v tom istom duchu. Všetky tri bežia ako lokálne projektové zručnosti v Claude Code — prompt a procedúra, nie binárka, ktorú nainštalujete.
FlowHunt Logo

Pripravení rozšíriť svoje podnikanie?

Začnite svoju 30-dňovú skúšobnú verziu ešte dnes a vidzte výsledky behom pár dní.

Časť 3 · ČO TERAZ

Čo sme dodali. Tri kombinovateľné zručnosti. ponytail a grain bežia počas písania; ponytail-review, grain-review a review-proof bežia na diffe. review-proof reťazí grain-review ako svoju poslednú fázu, takže jedna dokázaná recenzia dostane zadarmo aj štrukturálny priechod.

Čo môžete urobiť v pondelok — nepotrebujete presne naše zručnosti:

  1. Urobte z „znovu použiť“ druhé priečko, nie desiate. Než agent napíše pomocníka, nechajte ho pregrepovať, či nejaký existuje. „Je to už v tejto kódovej základni?“ patrí nad „viem to napísať čisto?“
  2. Opravujte pri koreni, dokážte to zoznamom volajúcich. Vyžadujte, aby každá oprava chyby vymenovala všetkých volajúcich dotknutej funkcie. Jedna poistka v zdieľanej funkcii je lepšia než poistka pre každého volajúceho — a je to menší diff.
  3. Dajte novému kódu najbližšieho súrodenca na kopírovanie. „Nájdi najbližší existujúci príklad a zrkadli jeho tvar“ premení architektúru z dokumentu, ktorý nikto nečíta, na predvolené správanie, ktoré agent dodržiava.
  4. Vynucujte hranice vrstiev v CI, nie pocitmi. Západka, ktorá zlyhá len na nových importoch medzi vrstvami, vám umožní držať líniu bez toho, aby ste museli prevariť oceán existujúceho dlhu.
  5. Nedodávajte nález, ktorý neviete reprodukovať. Nechajte agenta najprv napísať padajúci test. Ak nedokáže chybu reprodukovať, nie je to chyba — je to názor. Zahodte to.
  6. Nechajte recenziu mazať. Namierte recenzný priechod konkrétne na preinžiniering — „čo môžeme vyrezať“ — oddelene od správnosti. Najlepší výsledok diffu je, že sa skráti.

Vyskúšajte to, najmä ak vám to nevyjde. Ak prevádzkujete kódovacích agentov na skutočnej kódovej základni, entropia už prebieha — len ste ju nemerali. Premeňte jednu z týchto vecí na recenzný priechod pri svojich ďalších desiatich agentných PR a spočítajte mazania. Ak odčítať-zosúladiť-dokázať nezmenší vaše diffy ani nezachytí tichý rozpad, naozaj by sme to radi počuli. Opravy a protipríklady sú obzvlášť vítané.

Agent pridáva. Úlohou je prinútiť agenta, aby si každý riadok zaslúžil.

Najčastejšie kladené otázky

Štefan je AI a softvérový inžinier, ktorý vyvíja FlowHunt. Okrem samotného produktu navrhuje agentic software-engineering workflows pre vývojárov, ktoré znižujú vývojové náklady a zvyšujú kvalitu kódu.

Štefan Moravík
Štefan Moravík
AI & Softvérový Inžinier

Vytvorte agentné pracovné postupy, ktoré sa zaplatia samy

FlowHunt pomáha inžinierskym tímom navrhovať agentické pracovné postupy, recenzné brány a integrácie MCP, ktoré znižujú náklady na vývoj a zároveň zvyšujú kvalitu kódu.