Predstavte si, že požiadate agenta, aby zahral partiu v hotovej hre v prehliadači. Urobí niekoľko ťahov, opíše pozíciu a odmlčí sa. Partia stále pokračuje. Napíšete "pokračuj". Agent znovu pohne figúrkami a opäť čaká na správu. V istom momente vyjde najavo, že najjednotvárnejšiu činnosť tu robíte vy.

Goal je cieľ s podmienkou dokončenia, ktorý zadáte agentovi príkazom /goal. Napríklad: "hrajte za obe strany, kým stránka neukáže, že sa partia skončila". Po každom ďalšom kole práce samostatný model podľa konverzácie overí, či sa cieľ podarilo dosiahnuť. Ak ešte nie, práca pokračuje bez vášho "pokračuj". Môžete teda počkať na výsledok, hoci prekážka alebo chyba môžu prácu zastaviť aj skôr.
Začneme hotovou podmienkou pre hru a potom zostavíme ciele pre vyhľadávanie, formulár a mobilnú stránku. Každý bude mať jasný výsledok a spôsob overenia. Ukážeme si aj to, ako požiadať agenta, aby podmienku navrhol za vás, a ako rozoznať skutočné dokončenie od zastavenia bez výsledku.
Čo /goal udržiava v chode
V konverzácii okolo herného príkladu vystupujú dva odlišné mechanizmy, ktoré sa ľahko zamieňajú. Jeden vykonáva akcie v prehliadači: kliká, zadáva ťahy a číta, čo zobrazuje stránka. Druhý nekliká vôbec - prečíta si celú konverzáciu a rozhodne, či má práca pokračovať.
Prvým je Playwright, nástroj prehliadača vopred pripojený cez MCP. Ten druhý sa spúšťa príkazom /goal. Playwright hýbe figúrkami, /goal rozhoduje, či už treba zastaviť - sú to dve rozdielne úlohy, aj keď to zvonka môže vyzerať rovnako.
| Kto koná | Čo sa deje |
|---|---|
| Agent cez Playwright | vykoná ďalšiu akciu v prehliadači a získa pozorovanie - to, čo stránka skutočne zobrazila |
Vyhodnocovač /goal | keď agent dokončí ďalšie kolo práce, prečíta si konverzáciu a rozhodne: podmienka ešte nie je splnená, už je splnená alebo ju vôbec nemožno splniť |
Dôležitý detail: vyhodnotenie neprebieha po každom kliknutí myšou, ale až keď agent dokončí svoje kolo práce - zhruba povedané, celú svoju odpoveď. Počas jedného takého kola môže agent pokojne vykonať viac akcií za sebou: potiahnuť figúrkou, prečítať výsledok a reagovať naň. /goal sa zapojí až potom, keď je čo vyhodnocovať.
/goal nepridáva Playwright ani žiadne iné nástroje - iba sleduje už prebiehajúcu prácu. Neodstraňuje ani bežné žiadosti o povolenie: ak nastavenia vyžadujú potvrdenie určitej akcie, agent si ho vyžiada rovnako s cieľom aj bez neho.
Pripravte hru na spustenie
Skôr než zadáte podmienku, príklad musí fungovať: stránka sa otvára na známej adrese, nástroje na hranie sú už pripojené (napríklad Playwright) a stránka obsahuje značku, podľa ktorej sa dá zistiť, či sa partia skončila.
V našom príklade ide o data-atribút: data-game-over="false" pri prebiehajúcej partii a data-game-over="true" po jej skončení. Túto dohodu určil autor hernej stránky - agent si ju nevymýšľa, iba ju číta.
Overíte to jednoducho: požiadajte agenta, aby otvoril stránku a prečítal hodnotu atribútu. Pri práve začatej partii dostane false. a to je v poriadku, presne taký stav má byť na začiatku.
Ak atribút na stránke vôbec nie je, na zadanie cieľa je priskoro. Podmienka sa môže opierať len o to, čo sa dá skutočne prečítať, preto najprv treba vrátiť samotnú značku a nevymýšľať jej náhradu za pochodu. A keď už je príklad pripravený, nemeňte kritérium počas partie ani k hre nepridávajte samostatný časovač len preto, aby sa ukážka skončila rýchlejšie. Podmienka zostáva od začiatku do konca rovnaká.
Spustite pripravený cieľ
Teraz už samotný príkaz. Podmienka pre náš príklad môže vyzerať takto:
/goal striedajte sa v hre za obe strany cez rozhranie stránky.
Po každom ťahu prečítajte data-game-over a ukážte, čo stránka zobrazuje.
Partia sa považuje za skončenú, keď sa data-game-over zmení na true.
Ak sa tak nestane ani po 40 ťahoch, zastavte sa a opíšte, na čom ste
uviazli. Kód hry nemeňte.Rozoberme si formuláciu po častiach. Tie isté časti sa zídu aj pri vašich úlohách:
- "striedajte sa... cez rozhranie stránky" - merateľná akcia, ktorú agent môže skutočne ukázať v konverzácii;
- "partia sa považuje za skončenú, keď sa data-game-over zmení na true" - jediný výsledok, ktorý sa tu počíta. Práve ten bude vyhodnocovač hľadať v konverzácii;
- "po každom ťahu prečítajte... a ukážte" - fakt, podľa ktorého môže vyhodnocovač vôbec niečo overiť. Bez tejto vety nemá čo kontrolovať;
- "ak sa tak nestane ani po 40 ťahoch, zastavte sa a opíšte" - samostatný pokyn pre prípad, že true nenastane. Nie je súčasťou úspechu, ale spôsobom, ako prácu ukončiť bez neho: obmedzuje rozsah cieľa, no nenahrádza výsledok. Stále je to iba pokyn v texte, nie pevný programový časovač - aj tento pokyn sa vyhodnocuje podľa konverzácie;
- "kód hry nemeňte" - určuje, čo sa počas dosahovania výsledku nesmie stať.
Vopred nevieme, čo z toho vzíde - konkrétneho víťaza, dĺžku partie ani jej dokončenie nemožno sľúbiť. Je však jasné, čo má agent ukázať: prečítaný stav hry a dôvod, pre ktorý pokračuje alebo prácu ukončuje.
Z čoho zostaviť vlastnú podmienku
Začnite vetou "úloha je hotová, keď...". Ak pokračovanie znie "všetko je lepšie", agent bude musieť sám hádať, čo ste tým mysleli. Nahraďte hodnotenie pozorovateľným správaním: "po vymazaní vyhľadávania sa znova zobrazia všetky karty". Môžete uviesť aj viacero kontrol, ak opisujú jeden výsledok, napríklad opravené vyhľadávanie.
- Pomenujte výsledok. "Opraviť vyhľadávanie" určuje smer, kým "vyhľadávanie nájde kartu podľa názvu a po vymazaní vráti celý zoznam" určuje, kedy je hotovo.
- Uveďte spôsob overenia. Napíšte, čo otvoriť, čo zadať a akú odpoveď očakávate. Požiadajte agenta, aby v konverzácii ukázal skutočný výsledok, ktorý si vyhodnocovač môže prečítať.
- Vymedzte zmeny. Ak treba meniť iba štýly, povedzte to. Ak agent kontroluje hotovú hru, zakážte meniť jej kód kvôli dosiahnutiu požadovaného výsledku.
- Určite, kedy skončiť bez úspechu. Napríklad po troch pokusoch o opravu a opakovanom overení má agent opísať zostávajúci problém. Je to hranica práce, nie ďalší spôsob, ako úlohu vyhlásiť za splnenú.
Pred spustením skontrolujte, či má agent prístup k potrebnej stránke, súborom a nástrojom. Adresa a názvy prvkov v podmienke sa musia vzťahovať na váš projekt. Textový limit pokusov pomáha usmerniť prácu, ale nie je pevným technickým limitom času ani nákladov.
Všimnite si vratnú šípku. Ak výsledok ešte nie je dosiahnutý, agent dostane ďalšie kolo práce, môže problém opraviť a znova ho overiť. Koniec tohto cyklu však nemusí znamenať úspech: prekážku alebo dohodnutý limit treba uviesť osobitne. Schéma znázorňuje fungovanie podmienky; limit pokusov agent aj vyhodnocovač sledujú podľa konverzácie.
Tri príklady pre vaše úlohy
Nižšie sú ukážkové formulácie pre už existujúce stránky. Pred spustením nahraďte adresy, údaje a očakávané správanie vlastnými. Sú to príklady podmienok, nie správy o vykonanej práci.
Oprava vyhľadávania v katalógu
Predstavte si, že v lokálnom katalógu sú karty "Atlas" a "Orion", ale po vymazaní vyhľadávania zostane zoznam prázdny. Požiadavka "urob normálne vyhľadávanie" nehovorí nič o potrebnom správaní. Užitočnejšie sú tri konkrétne prípady:
/goal opravte vyhľadávanie v katalógu na http://localhost:3000/catalog.
Hotovo je, keď dopyt "atlas" nájde kartu "Atlas",
dopyt "zzzz-no-match" zobrazí "Nič sa nenašlo"
a vymazanie poľa vráti všetky pôvodné karty.
Overte všetky tri prípady cez Playwright a v konverzácii ukážte
dopyt, očakávaný výsledok a skutočne zobrazené karty alebo správu.
Po poslednej úprave zopakujte všetky tri kontroly.
Meňte iba logiku vyhľadávania; údaje katalógu a vzhľad nemeňte.
Ak problém zostane aj po troch pokusoch o opravu a overení,
zastavte sa a vymenujte prípady, ktoré stále nefungujú.Dôležité je slovo "všetky": nájdenie jednej karty ešte nepotvrdzuje, že je vyhľadávanie opravené. Údaje katalógu sú pevne dané, takže požadovaný výsledok nemožno dosiahnuť premenovaním kariet. Kontrola po poslednej úprave je zas potrebná preto, že oprava vymazania poľa mohla pokaziť samotné vyhľadávanie.
Kontrola formulára bez úprav
Výsledkom cieľa môže byť aj zoznam pozorovaní. Predstavte si, že treba skontrolovať hotový registračný formulár a opravy chcete prebrať osobitne. V takom prípade sa cieľ končí po overení všetkých prípadov, aj keď sa nájdu chyby.
/goal skontrolujte formulár na http://localhost:3000/signup
cez Playwright bez úpravy súborov projektu.
Overte dva prípady, pri každom začnite s prázdnym formulárom:
1. Stlačte "Registrovať sa" bez vyplnenia polí.
Očakáva sa upozornenie na povinné pole, registrácia neprebehne.
2. Zadajte "alex" do poľa email a vyplňte ostatné povinné
polia platnými testovacími údajmi, potom stlačte tlačidlo.
Očakáva sa chyba formátu emailu, registrácia neprebehne.
Hotovo je, keď konverzácia obsahuje správu o oboch prípadoch:
čo bolo zadané, čo sa očakávalo, čo ukázala stránka a či je rozdiel.
Neodosielajte formulár so správnym emailom ani nevytvárajte účty.
Ak stránku alebo prvok nemožno otvoriť, ukončite kontrolu
a uveďte, ktorý prípad zostal neoverený a prečo.Všimnite si rozdiel: "skontrolovať formulár" a "dosiahnuť, aby formulár fungoval" sú dve rozdielne úlohy. Chyba formulára tu nebráni dokončiť správu, ak agent skutočne overil oba prípady a ukázal výsledky. Nedostupná stránka však prekáža: domnienky namiesto pozorovaní cieľ nesplnia.
Prispôsobenie stránky pre telefón
"Urob to pekné na mobile" necháva agentovi priveľa priestoru na vlastný vkus. Vyberte konkrétnu stránku, rozmery okna a prvky, ktoré musia zostať dostupné.
/goal upravte štýly stránky http://localhost:3000
pre okná s rozmermi 390x844 a 1440x900.
Hotovo je, keď pri oboch rozmeroch nie je vodorovné posúvanie,
nadpis a tlačidlo "Začať" sú celé viditeľné a neprekrývajú sa
a stlačenie tlačidla "Začať" stále otvorí hernú sekciu.
Po poslednej úprave overte oba rozmery cez Playwright.
Ukážte snímky obrazovky, výsledok kliknutia a namerané
scrollWidth a clientWidth koreňového prvku stránky:
scrollWidth nesmie byť väčší ako clientWidth.
Meňte iba CSS. Neskrývajte ani neorezávajte obsah, aby ste
odstránili posúvanie. Zachovajte text aj správanie hry.
Ak po troch pokusoch o úpravu a overenie podmienky nie sú splnené,
zastavte sa a ukážte zostávajúci rozdiel.Uvedené rozmery predstavujú šírku a výšku okna prehliadača v pixeloch. scrollWidth ukazuje šírku obsahu vrátane časti za okrajom a clientWidth dostupnú šírku. Ich porovnanie pomáha odhaliť pretečenie obsahu, no samo osebe nedokazuje, že text nie je orezaný a tlačidlo je dostupné. Preto podmienka zahŕňa aj snímky obrazovky a kliknutie. Ani dva rozmery nedokazujú pohodlné používanie na každom zariadení - vymedzujú rozsah tejto konkrétnej úlohy.
Požiadajte agenta o prípravu goal
Podmienku nemusíte písať od nuly. Zbierka Claude Code Best Practice obsahuje dva komunitné tipy: požiadať agenta, aby navrhol ciele podľa kontextu projektu, a poveriť ho prípravou formulácie po prečítaní konverzácie a súborov. Nižšie tieto postupy prispôsobíme menšej úlohe.
Ak zatiaľ neviete, čo zadať na dlhšiu prácu, začnite bežnou správou bez /goal:
Prečítajte si aktuálnu konverzáciu a súbory projektu súvisiace s úlohou.
Navrhnite tri užitočné ciele s overiteľným výsledkom.
Pri každom uveďte výsledok, spôsob overenia, hranice zmien
a to, čo ešte chýba na spustenie.
Vychádzajte z našich dohôd. Ciele zatiaľ nespúšťajte
a súbory nemeňte. Ak zámer nie je jasný, položte otázky.Vyberte si jeden cieľ. Dlhá práca sama osebe nie je výhodou: opravené vyhľadávanie je užitočnejšie než niekoľko hodín neurčitých "vylepšení". Keď je úloha jasná, prvú požiadavku môžete preskočiť a rovno požiadať o návrh podmienky:
Pripravte text /goal pre vybranú úlohu podľa našej konverzácie,
súborov projektu a jeho dokumentácie. Zatiaľ nič nevykonávajte.
Uveďte pozorovateľný výsledok, spôsob overenia a čo ukázať
v konverzácii. Pridajte hranice úprav a podmienku zastavenia bez úspechu.
Nevymýšľajte adresy, príkazy ani kritériá dokončenia:
nájdite ich v projekte alebo sa ma na ne opýtajte.
Vráťte jeden hotový text a osobitne vymenujte nejasnosti.Pred odoslaním návrhu skontrolujte, či dáva zmysel. Zodpovedá výsledok tomu, čo ste chceli? Existuje uvedená stránka? Nepovolil agent popritom meniť údaje alebo pridávať funkcie? Ak na konci zostali nejasnosti, najprv ich vyriešte. Spustiť treba až spresnený text: príkaz /goal začne pracovať okamžite.
Skontrolujte stav a zastavte prácu
Kým je cieľ aktívny, môžete sledovať jeho priebeh: príkaz /goal bez argumentov zobrazí aktuálny stav - podmienku, uplynutý čas, počet kôl a posledný dôvod, ktorý uviedol vyhodnocovač.
Cieľ môžete predčasne zastaviť aj príkazom /goal clear. Odstráni podmienku, aj keď sa partia ešte neskončila.
Potvrdený výsledok je tu len jeden: podmienka je splnená a v konverzácii to potvrdzuje odpoveď vyhodnocovača. Zrušiť cieľ príkazom /goal clear je tiež zrozumiteľný koniec, ale je to vaše rozhodnutie prestať, nie dôkaz, že je práca hotová. Ostatné spôsoby, ktorými sa cieľ môže zastaviť sám, výsledok nepotvrdzujú.
Ak vyhodnocovač usúdi, že podmienku nemožno splniť, alebo sa dosiahne limit uvedený v podmienke, cieľ sa zastaví aj sám, bez vášho príkazu. S chybami je to zložitejšie: cieľ sa sám zruší len pri takej, ktorú treba opraviť ručne (napríklad sa minuli kredity). Po dočasnom výpadku zostáva aktívny a čaká na opakovanie alebo na vašu správu, a ak agent niekoľko ťahov po sebe nepostupuje, Claude Code vám vráti riadenie, tiež bez zrušenia cieľa. Nič z toho však nie je to isté ako "partia sa odohrala": vyššie zastavenie buď potvrdil vyhodnocovač, alebo ste sa sami rozhodli cieľ zrušiť. Tu neplatí ani jedno. Neoslabujte podmienku spätne len preto, aby stav vyzeral úspešne. Ak sa práca zasekla, rozumnejšie je zrušiť cieľ príkazom /goal clear a priamo opísať, na čom ste uviazli, než prepísať podmienku tak, aby sa určite splnila.
Čo vidí model, ktorý cieľ vyhodnocuje
Vyhodnocovač /goal nevidí samotnú stránku, ale konverzáciu: to, čo agent napísal, aj to, čo do nej skopíroval z pozorovaní v prehliadači. Vyhodnocovač nemá vlastné nástroje - stránku znovu neotvára ani sám nespúšťa príkazy, iba číta už nahromadený text.
Z toho vyplýva jednoduchý dôsledok. Veta agenta "partia sa skončila" sama osebe nič nedokazuje ani vyhodnocovaču, ani vám. Dôkazom je výsledok, ktorý agent skutočne prečítal zo stránky - konkrétne hodnota data-game-over. Prvé je hlásenie, druhé pozorovanie. Sú to rozdielne veci, aj keď znejú podobne.
Treba poznať aj hranice samotného ukazovateľa. data-game-over oznamuje stav konkrétnej aplikácie - to, čo do nej vložil autor stránky. Nehovorí nič o tom, či sa celá partia odohrala podľa šachových pravidiel bez jedinej chyby. Rovnako ani neprítomnosť posúvania nedokazuje, že tlačidlo funguje. Vyberte ukazovateľ podľa výsledku, ktorý naozaj chcete dosiahnuť, a nepripisujte mu viac, než znamená.
Čo to mení pri práci
Pri vlastnej úlohe môžete prejsť tou istou krátkou cestou:
- jasný výsledok a dostupný spôsob jeho overenia;
- podmienka s hranicami úprav a zastavenia zadaná príkazom
/goal; - stav, ktorý si môžete kedykoľvek pozrieť -
/goalbez argumentov; - záver podložený pozorovaniami a výsledkami kontrol;
- cieľ, ktorý ste manuálne zrušili príkazom
/goal clear, ak sa práca zasekla alebo sa podmienka ukázala ako nevhodná.
Automatické pokračovanie v práci a rozhodnutie, čo urobiť ďalej, sú dve rozdielne veci. Prvú môžete v rámci jednej relácie zveriť príkazu /goal. Druhá - zistiť, čo sa naozaj podarilo, zrušiť nedokončený cieľ a zadať ďalšiu úlohu - zostáva na vás.
Presné správanie vyhodnocovača a formát stavu sa môžu mierne líšiť podľa verzie Claude Code. Všeobecný princíp - vyhodnotenie podľa konverzácie, nie priameho prístupu k stránke - zostáva rovnaký.
GO TO FULL VERSION