Blog

Zakaj Claude naredi napačno stvar: 3 pozivi

Markdown

Claude napiše napačno stvar, ker se loti kode, ne da bi razumel vaš namen. Pojasnim, zakaj se to zgodi, in ponudim 3 pozive, pripravljene za uporabo, s katerimi ga pripravite do tega, da najprej postavi vprašanja.

Preberi celoten članek

Ključna ugotovitev

Claude napiše napačno stvar, ker takoj začne pisati kodo in si sam dopolni, kaj naj bi želeli. Pogosto se moti. Težava skoraj nikoli ni v modelu—tudi najmočnejši bo zgrešil, če je naloga nejasna. To rešim z eno potezo: Claudea najprej prosim, naj me izpraša, razjasni moj namen in šele nato piše. Spodaj so trije pozivi, pripravljeni za uporabo, ki jih lahko kopirate in prilepite.

Več o uporabi storitve najdete v dokumentaciji Ailoot.

Zakaj Claude naredi napačno stvar?

Ključna ugotovitev

Claude dobi kratko zahtevo, takoj zapolni manjkajoče dele in začne pisati kodo na podlagi svoje različice naloge. Njegova različica se razlikuje od vaše. Tako dobite diff, ki poseže v 14 datotek, čeprav ste pričakovali spremembo ene vrstice. Vzrok je vrzel med tem, kar ste povedali, in tem, kar ste imeli v mislih. Model ima s tem skoraj nič opraviti.

Napišete: »Dodaj filtre na stran izdelkov.« V mislih imate nekaj potrditvenih polj in posodobljen seznam. Claude sliši isto in se odloči zgraditi celovit mehanizem za filtriranje: lastno shrambo stanja, ločeno logiko zakasnitve vnosa, sinhronizacijo URL-ja in ducat pomožnih funkcij. Na stotine vrstic kode, čeprav bi zadostovalo nekaj parametrov URL-ja.

V takem primeru je sklep jasen: agent ni naredil napake; preprosto je rešil veliko večji problem, kot je bilo potrebno. Težava je bila v tem, da želeni izid ni bil opisan dovolj kratko in natančno.

Ključna beseda je »namen«. Vi ga imate v glavi; Claude ga nima. Vidi besedilo vaše zahteve in vse, kar je v njegovem kontekstu do te zahteve. Nato praznine zapolni z ugibanjem. Krajša ko je zahteva, več ugiba—in bolj se rezultat oddalji od tega, kar ste želeli.

Anthropic to v dokumentaciji Claude Code pove naravnost:

Če pustite Claudeu, da se takoj loti kode, bo morda rešil napačen problem.

— Claude Code Docs, https://code.claude.com/docs/en/best-practices

S tem sem se srečal pri lastnem projektu. Prosil sem za popravek enega zaslona za avtorizacijo, dobil pa diff, ki je posegel v polovico sosednjega modula. Claude ni bil kriv: dal sem mu eno vrstico, preostalo pa je dopolnil sam. Od takrat vsako nalogo, ki je večja od popravka tipkarske napake, začnem z vprašanji—ki mi jih postavlja Claude.

Je res kriv model—in zakaj zgrešijo celo najmočnejši?

Ključna ugotovitev

Model je manj pomemben, kot ljudje običajno mislijo. Pri nejasni nalogi bo zgrešil tudi najmočnejši: dobi enako nepopolna navodila in praznine zapolni s svojimi ugibanji. Razvijalci, ki svojega agenta obvladujejo, dosežejo enake rezultate z vrhunskim ali srednjerazrednim modelom. Vse je odvisno od tega, kako jasno opišete, kaj želite. Moč modela je tu drugotnega pomena.

Vsak teden se pojavi model, ki je »pametnejši« od prejšnjega, in vsakič se zdi, da bo umetna inteligenca zdaj končno razumela nekaj besed. Pa ne bo. Zmogljivejši model piše kodo hitreje in bolje obvlada zapleteno logiko, vendar še vedno ne zna brati misli. Če je naloga slabo zastavljena, boste dobili lepo napisano, a še vedno napačno rešitev.

Sporočilo za vas je preprosto. Iskanje najnovejšega modela, da bi bolje ugibal, je slepa ulica. Ceneje in zanesljiveje se je naučiti podajati naloge tako, da mu ni treba ugibati. O tem bomo govorili v nadaljevanju.

Kaj je grilling in kako odpravi neusklajenost z umetno inteligenco?

Ključna ugotovitev

Grilling pomeni, da umetno inteligenco prosite, naj vas pred začetkom dela izpraša: postavlja vam podrobna vprašanja o nalogi, dokler ne dosežeta skupnega razumevanja. Namen je zapolniti komunikacijsko vrzel pred prvo vrstico kode.

Zveni protislovno. Po pomoč se obrnemo na umetno inteligenco, da bi stvari opravili hitreje, zdaj pa nam pravijo, naj jo upočasnimo in poskrbimo, da najprej sprašuje. Toda pet minut vprašanj pred kodiranjem lahko prihrani eno uro poznejših popravkov.

Težava ni samo v tem, da ste Claudeu slabo razložili stvari. Pogosto naloge niste dobro premislili niti sami—katere primere je treba upoštevati, kje so meje in kaj je najpomembnejše. Grilling vam to pomaga razjasniti z vprašanji. Na koncu pogovora nimate le naloge, ki jo umetna inteligenca razume, ampak tudi svojo nalogo, končno podrobno opredeljeno.

Tako deluje inženiring konteksta: glavnina dela se zgodi pred pozivom, ne med njim. Ne iščete čarobne formulacije poziva; vnaprej opredeljujete, kaj potrebujete od Claudea, dokler ne razume brez dodatnih pojasnil.

Kako dosežete, da vam Claude najprej postavi vprašanja?

Ključna ugotovitev

Claudeu na kratko opišite nalogo in izrecno zahtevajte, naj vas pred začetkom dela izpraša: naj vpraša o podrobnostih, robnih primerih in omejitvah, nato pa naj vse na koncu zapiše v datoteko s specifikacijo. To je uradno priporočilo Anthropica—dokumentacija Claude Code vsebuje že pripravljen vzorec poziva. Kopirajte ga, spremenite opis in ga prilepite na začetek seje.

Anthropic tega pristopa ne le dovoljuje, temveč ga priporoča. V dokumentaciji je razdelek z naslovom »Naj vas Claude izpraša« in že pripravljenim pozivom. Tukaj je praktična različica:

PozivPoziv za grilling—Claude naj vas izpraša

Želim zgraditi [kratek opis naloge].

Preden napišeš kakršno koli kodo, me podrobno izprašaj. Sprašuj o izvedbi, vmesniku, robnih primerih, tveganjih in kompromisih. Ne postavljaj očitnih vprašanj—poglobljeno razišči zapletene dele, o katerih morda še nisem razmišljal.

Naenkrat postavi eno vprašanje in počakaj na moj odgovor. Pri vsakem vprašanju takoj predlagaj odgovor, ki ga priporočaš.

Nadaljuj, dokler ne obdelava vsega. Nato pripravi popolno specifikacijo v datoteki SPEC.md.

Zaradi treh podrobnosti je ta poziv uporaben in ne le okrasen. Prvič: »naenkrat eno vprašanje«. Če umetna inteligenca naenkrat postavi deset vprašanj, vas preobremeni in odgovorite površno. Drugič: »predlagaj svoj odgovor«—ni vam treba vsega izumiti od začetka; predlog lahko sprejmete ali popravite. Tretjič: »pripravi specifikacijo v datoteki«—namen, ki ste ga razjasnili, postane dokument, ki se ne bo izgubil.

Anthropic prednosti opiše z vidika vloženega truda:

Čas, namenjen pravilni pripravi specifikacije, je vrednejši od časa, porabljenega za spremljanje izvedbe.

— Dokumentacija Claude Code, https://code.claude.com/docs/en/best-practices

Po pogovoru odprite novo sejo in ji predajte dokončano specifikacijo. Čist kontekst in jasno izražen namen—in Claude zadene v prvo.

Tehnika »dokaži mi, da je to najboljši načrt«

Ključna ugotovitev

Umetne inteligence ne prosite le, naj postavlja vprašanja—zahtevajte tudi, naj zagovarja svoje odločitve. Nalogi dodam zahtevo: dokaži, da je predlagani načrt najboljši, ne le prva rešitev, ki ti pride na misel, in da je premišljen več korakov vnaprej. Tako Claude iz načina »naredil bom nekaj podobnega« preklopi v način kritika, kjer preveri svoje delo, še preden porabite čas za izvedbo.

Grilling razjasni vaš namen. Umetna inteligenca pa ima še eno navado: zgrabi prvo rešitev, ki je videti verjetna. Anthropic temu pravi vrzel »zaupaj, a preveri«: Claude pripravi verjetno izvedbo, ki ne zdrži preizkusa robnih primerov. Rešitev je, da pred kodo zahtevate dokaze.

Če rezultata ne morete preveriti, ga ne oddajte.

— Anthropic, Claude Code Docs, https://code.claude.com/docs/en/best-practices

Svojemu pozivu skoraj vedno dodam razdelek »dokaži«. Tukaj je natančno besedilo:

PozivPoziv—umetna inteligenca naj zagovarja svoj načrt

Pred pisanjem kode nalogo analiziraj kot kritik.

Poišči 2-3 načine, kako to rešiti. Pri vsakem mi dokaži, da res reši mojo nalogo, namesto da zgolj po nepotrebnem dodaja zapletenost. Ne piši kode samo zato, da bi pisal kodo.

Nato izberi enega in dokaži, da je najboljša rešitev, premišljena več korakov vnaprej. Kaj se bo pokvarilo, ko bo projekt rasel? Kaj trenutno spregledamo?

Šele nato predlagaj izvedbo.

Brez tega razdelka vam Claude ponudi prvo izvedljivo možnost. Z njim sam izloči slepe ulice, pojasni svojo izbiro in vam omogoči vpogled v svoje razmišljanje, še preden se dotakne ene same datoteke. Namesto da eno uro ugotavljate, zakaj dokončana koda ne deluje po pričakovanjih, preberete kratko besedilo, kar vzame dve minuti.

Predhodna analiza neuspeha: naj umetna inteligenca pred začetkom poišče 10 razlogov za neuspeh

Ključna ugotovitev

Predhodna analiza neuspeha je tehnika, pri kateri umetno inteligenco prosite, naj si predstavlja, da je projekt že propadel, in navede razloge. Claude iz optimističnega načina »to bom izpeljal« preklopi v iskanje šibkih točk, ki bi sicer prišle na dan šele po tednu dela. Seznam tveganj dobite, še preden v projekt vložite čas, zato jih lahko odpravite vnaprej.

To je moja najljubša tehnika in temelji na psihologiji. Ko umetno inteligenco prosite, naj »dobro opravi delo«, jo usmerite k uspehu, zato spregleda vrzeli. Prosite jo, naj si predstavlja neuspeh, in začne opažati, kar je prej prezrla. Poziv je kratek:

PozivPoziv za predhodno analizo neuspeha—poišči vrzeli pred začetkom

Predstavljaj si, da je zdaj čez eno leto. Projekt, ki ga načrtujeva, je propadel.

Zapiši 10 razlogov, zakaj se je to zgodilo. Česa na začetku nisva upoštevala, kaj sva podcenila, kje sva ubrala bližnjice in katere predpostavke so se izkazale za napačne?

Nato mi za vsak razlog povej, kaj lahko popraviva že zdaj, da ga odpraviva.

Ta poziv uporabim, preden odobrim načrt. Polovica razlogov se izkaže za nesmisel, druga polovica pa razkrije resnične pasti, v katere bi se ujel čez teden dni. V fazi načrtovanja jih odpravimo v desetih minutah. Če nanje naletimo v dokončanem projektu, nas čaka več dni preiskovanja.

Kombinacija je preprosta: grilling razjasni namen, »dokaži« zagovarja odločitev, predhodna analiza neuspeha pa poišče vrzeli. Trije kratki odlomki besedila, ki jih prilepite pred pisanjem kode. Claudea spremenijo iz prenagljenega izvajalca v sodelavca, ki najprej razmisli.

Zakaj zaradi prepolnega konteksta Claude deluje neumno?

Ključna ugotovitev

Claude ima omejeno kontekstno okno—količino informacij, ki si jih lahko hkrati zapomni. Ko je okno več kot napol polno, začne izgubljati pomembne podrobnosti, meša prejšnje dogovore in ugiba namesto, da bi si zapomnil. Dolga seja o vsem mogočem je pogost razlog, da umetna inteligenca ob koncu dneva naredi nekaj povsem drugega od tistega, o čemer ste se dogovorili zjutraj.

Tudi popolnoma zastavljena naloga se podre, če jo obravnavate v prenatrpanem kontekstu. Deluje takole: vsaka nova zahteva prinese celotno zgodovino klepeta v Claudeov delovni kontekst. Daljša kot je seja, hitreje se okno zapolni. Naj ne bo več kot napol polno; nad to mejo začne umetna inteligenca delovati neumno in izgubljati pomembne stvari, o katerih ste govorili na začetku.

To je pravilo, ki me obvaruje pred največ frustracijami: ena naloga, en klepet. Ste končali funkcijo? Zaprite klepet in za naslednjo nalogo odprite novega. Da, včasih je priročneje narediti vse v enem oknu, vendar boste za to plačali z izgubljenim kontekstom in odgovori, ki zaidejo s teme.

Anthropic ta način odpovedi imenuje »seja predala za šaro«. Rešitev je preprosta: med nepovezanimi nalogami uporabite /clear, da počistite okno in preprečite, da bi se navlaka prejšnje naloge prenesla v novo.

Če delate v dolgih sejah in ne razumete, kam gresta denar in pozornost umetne inteligence, to posebej obravnavam v vodniku o tem, kam gredo žetoni Claude Code. Osnove trajnega konteksta, ki ga Claude prebere ob vsakem zagonu, pa sem zbral v vodniku za nastavitev CLAUDE.md.

Grilling ali Plan Mode—kakšna je razlika in kako delujeta skupaj?

Ključna ugotovitev

Grilling in Plan Mode rešujeta različni polovici istega problema. Grilling z vprašanji razjasni vaš namen, še preden obstaja načrt. Plan Mode vzame že razumljeno nalogo in pokaže načrt sprememb, ne da bi se česar koli dotaknil, dokler ga ne odobrite. Najbolje delujeta skupaj: grilling najprej razjasni, kaj gradimo, nato Plan Mode natančno pokaže kako.

Ljudje ti tehniki pogosto zamenjujejo ali menijo, da potrebujejo samo eno. V praksi se uporabljata na različnih točkah postopka.

ZnačilnostGrillingPlan Mode
Kdaj se zgodiPred načrtom—razjasni namenZatem—pripravi načrt sprememb
Kdo koga sprašujeUmetna inteligenca izpraša vasPreberete in odobrite načrt
Kaj dobiteSpecifikacijo nalogeNačrt sprememb za vsako datoteko
Glavna prednostPrepreči »tega nisem želel«Prepreči »ničesar drugega se ne dotikaj«

Anthropic opisuje uveljavljen štirifazni potek dela: najprej Explore (Claude preuči nalogo in postavlja vprašanja), nato Plan (pripravi načrt brez sprememb), zatem Implement (napiše kodo po načrtu) in nazadnje Commit (zabeleži rezultat). Grilling poteka v prvi fazi, Plan Mode pa v drugi. Podroben opis druge faze najdete v vodniku o Plan Mode v Claude Code.

Anthropic opozarja tudi na pomembno podrobnost: manjših nalog ne obremenjujte s tem postopkom.

Če lahko spremembo opišete v enem stavku, preskočite načrt.

— Uradna dokumentacija Claude Code, https://code.claude.com/docs/en/best-practices

Pri tipkarski napaki, preimenovanju ali spremembi ene vrstice jo preprosto opišite neposredno, brez pogovora ali načrtovanja. Grilling se izplača pri dvoumnih nalogah, kjer je napaka draga. Pri nepomembnih nalogah vas le upočasni.

5 napak pri zastavljanju nalog, zaradi katerih umetna inteligenca naredi napačno stvar

Ključna ugotovitev

Skoraj vsaka napaka umetne inteligence izhaja iz petih napak pri zastavljanju naloge: nejasne enovrstične zahteve, manjkajočih omejitev, zahteve »napiši kodo« brez faze »najprej razumi«, nejasne opredelitve, kaj pomeni »končano«, ter ene neskončne seje za vse. Zaradi vsake Claude nalogo dopolnjuje z ugibanjem. Spodaj je prikazano, kako so videti te napake in kako jih nadomestiti.

Pogoste pasti sem povzel v tabeli. Na levi je to, kar ljudje običajno naredijo narobe; na desni pa, kaj storiti namesto tega.

NapakaKako se slišiKaj storiti namesto tega
Nejasna enovrstična zahteva»Izboljšaj nadzorno ploščo«Opišite nalogo in začnite grilling—naj umetna inteligenca z vprašanji razjasni podrobnosti
Brez omejitev»Dodaj avtorizacijo«Povejte, kaj se ne sme pokvariti, katerih knjižnic ne sme dodati in kaj je zunaj obsega
Takoj »napiši kodo«Poziv—in začetek kodiranjaNajprej »razumi in vprašaj«, nato napiši kodo
Ni opredelitve »končano«Pričakujete, da bo umetna inteligenca uganila rezultatDajte primer, referenčni posnetek zaslona ali test, ki pokaže, kaj pomeni »deluje«
Ena seja za vseVes dan v enem klepetuEna naloga, en svež klepet, da se kontekst ne prenatrpa

Preglejte zadnji poziv, pri katerem vam je umetna inteligenca dala napačen odgovor. Skoraj zagotovo je bila vzrok ena od teh petih napak. Najpogosteje prva: dali ste ji kratko frazo in pričakovali, da bo Claude preostalo pravilno dopolnil. Preostalo je dopolnil—le ne tako, kot ste imeli v mislih.

Kaj sledi: zgradite sistem, da vas bo umetna inteligenca razumela iz nekaj besed

Ključna ugotovitev

Posamezni pozivi rešujejo posamezne naloge. Če želite, da vas umetna inteligenca razume brez dolgih pojasnil vsakič znova, potrebujete sistem: grilling pri vsaki nalogi razjasni namen, Second Brain hrani znanje o projektu, inženiring konteksta pa poveže vse, kar Claude prebere pred pozivom. Tako izgine razlog, zaradi katerega naredi napačno stvar: vedno ima dovolj konteksta, da mu ni treba ugibati.

Trije pozivi v tem vodniku—grilling, »dokaži« in predhodna analiza neuspeha—obravnavajo konkretno nalogo. To že veliko pomeni: ne dobite več diffa, ki spreminja 14 datotek, ko ste želeli le spremembo ene vrstice.

Toda grilling ima svoje meje. Vsakič znova razjasnjevati vaš namen od začetka traja dolgo. Do pravega premika pride, ko je del konteksta vedno na voljo: v mapi z znanjem o projektu, v datoteki CLAUDE.md, ki jo Claude prebere ob vsakem zagonu, in v vaši metodologiji, zapisani v veščinah. Tako se umetna inteligenca naloge loti že z znanjem o vašem poslu, ciljih in slogu—in vas razume iz nekaj besed, ker ste ji polovico konteksta predstavili vnaprej.

Nedavna analiza Anthropica pokaže, koliko dela je potrebnega: razvijalci umetno inteligenco uporabljajo pri približno 60% svojega dela, vendar ji lahko povsem zaupajo le pri 0-20% nalog. Pri preostalem so potrebni vaše razumevanje, nadzor in sposobnost pojasniti, kaj je treba zgraditi. To je veščina, ki jo je vredno razvijati, ne pa loviti najpametnejši model.

Spoznajte Ailoot.

Več podrobnosti

Vprašanja in odgovori: Zakaj Claude naredi napačno stvar: 3 pozivi

Kdaj naj namesto takojšnjega pisanja kode uporabim poziv za intervju?

Uporabite ga, kadar rezultat, robni primeri ali omejitve niso jasni, napake pa bi bile drage. Zastavljajte po eno vprašanje in dogovorjeni rezultat shranite v SPEC.md; tipkarsko napako ali jasno opisano spremembo ene vrstice lahko zahtevate neposredno.

Kaj naj preverim, preden sprejmem predlagani načrt?

Zahtevajte dva ali tri pristope in primerjajte, kako vsak izpolnjuje specifikacijo in omejitve. Nato uporabite poziv za vnaprejšnjo analizo neuspeha, preglejte razloge za morebiten neuspeh in pred izvedbo obravnavajte ustrezna tveganja.

Vsi članki