Bu səhnəni üzdən tanımaq lazımdır, ona görə də ondan başlayaq. Siz oyunu yazıb bitirdiniz, yenidən başladandan sonra xal sıfırlanır və agentdən soruşursunuz:

Niyə yenidən başladıqdan sonra xal itir?

Cavab sakit və səliqəli gəlir:

Layihədə xal artıq saxlanılır, sadəcə yazma heç yerdə aktiv edilməyib.
Bir parametri dəyişmək kifayətdir və nəticə yenidən başladandan sonra da qalacaq.

Yoxlamağa gedirsiniz. Layihədə nə belə parametr, nə də xalın saxlanması var və heç vaxt olmayıb - nə bir sətir, nə bir işarə. Cavab sizin kodunuzun təhlili kimi oxunurdu, amma əslində belə layihələrin adətən necə qurulduğu barədə təxmin idi.

Üstəlik, bundan əvvəl nə fasilə, nə də ehtiyat sözü səslənmədi. Ton əvvəlki, doğru çıxmış bütün cavablardakı ilə tam eynidir. Alət isə bu zaman sazdır və model dünənkindən pis olmayıb.

Səbəb cavabın ümumiyyətlə necə yarandığındadır. Model hazır faktı hansısa anbardan çıxarmır - o, mətninizin ehtimal olunan davamını parça-parça seçir. Ehtimal olunan və doğru isə fərqli şeylərdir, xüsusən söhbət modelin görmədiyi layihənizdən gedəndə. Uydurulmuş, amma inandırıcı detallara hallüsinasiyalar deyirlər.

Yarıya bölünmüş masa: solda qaranlıqda fal kartları və oyun zərləri düzülüb, sağda işıq şüası altında əlfəcinli açıq kitab və böyüdücü şüşə

Sonra - tələlər harada qurulub, səhvin tonu niyə həmişə sakit olur və hansı üç yoxlama belə halların böyük hissəsini bağlayır.

Model sorğunuzda nə görür

Buradakı tələ hamısından sadədir: elə görünür ki, model layihənizə baxır. Əslində o, yalnız ona ötürülənə baxır, ötürülən isə bunlardır:

  • Daxili biliklər. Öyrədilmə zamanı modelin parametrlərində möhkəmlənmiş qanunauyğunluqlar. Fakt və istinad yazılmış kartlar yox, rəqəmlərdir, ona görə də model hətta tanış faktı da qeyri-dəqiq təkrarlaya bilər. Üstəlik, onların zaman sərhədi var: sonradan çıxmış kitabxana haqqında model ona nə qədər göstərilibsə, o qədər bilir.
  • Cari söhbət. Sorğunuz, yazışmanın tarixçəsi, agentin oxuduğu fayllar, onun işə saldığı əmrlərin çıxışı.
  • Tətbiqin yaddaşı. Ayrıca fayllara yazılan və növbəti sessiyanın əvvəlində söhbətə əlavə olunan məlumat. Claude Code-da bu, sizin yazdığınız CLAUDE.md və agentin qeydləri özünün yazdığı auto memory-dir.
  • Xarici mənbələr. Sənədlər, axtarış, verilənlər bazası, layihə faylları - öyrədilmə verilənlərində ola bilməyən və ya o vaxtdan dəyişmiş hər şey.

Son üçü eyni yolla gəlir: cavaba təsir etmək üçün onlar cari söhbətə düşməlidir. Model özü-özünə layihəyə baxmır.

Buradan bir nəticə çıxır ki, onu başınızda bir dəfə yerinə qoymaq dəyər. Heç kimin açmadığı fayl model üçün mövcud deyil. Onun mətni söhbətə düşməyənə qədər "bizdə avtorizasiya harada emal olunur" sualını daha dürüst "belə layihələrdə bu faylı adətən necə adlandırırlar" kimi oxumaq lazımdır. Cavabı hər iki halda alacaqsınız və o, eyni cür görünəcək.

Yanında daha xırda, amma adamı pərt edən bir tələ də var. Oxunmuş fayl söhbətdə oxunduğu kimi qalır. Siz redaktorda sətri düzəltdiniz, söhbətin tarixçəsində isə köhnə versiya qalır. Claude Code faylın dəyişdiyini qeyd edəcək, amma agentin onu yenidən oxuyub-oxumayacağına artıq model qərar verir. Söhbətin ortasında əl ilə düzəliş etdinizsə - yenidən oxumağı açıq şəkildə xahiş etmək daha etibarlıdır.

Claude Code-da nəyə baxmalı

Claude Code əvvəlcə layihəni oxuyur və əmrləri işə salır, cavabı isə sonra verir. Cavabda adətən görünür ki, o hansı faylları açıb və nəyi işə salıb. Əgər kodunuz haqqında cavab agent heç nə oxumamışdan əvvəl gəlibsə, qarşınızda sizin layihənizin təhlili yox, tipik layihə barədə təxmindir.

Niyə ifadə tərzi nəticəni dəyişir

Söhbətə düşən hər şeyin içində sorğunuz yeganə şeydir ki, onu özünüz yazırsınız. Ona görə də oradakı xırdalıqlar həlledici olur: bir-iki sözün yerini dəyişdiniz, dəqiqləşdirmə əlavə etdiniz - cavab başqa səmtə getdi. Bu, alətin şıltaqlığı deyil.

Burada dolaşmaq asandır, ona görə də bunu ayrıca deyəcəyəm. Eyni sorğu iki dəfə göndəriləndə də fərqli cavablar verir: cavaba mütləq ən ehtimal olunan davam variantı getmir, generasiyanın parametrləri var ki, daha az ehtimal olunan variantın nə qədər həvəslə seçildiyini onlar təyin edir. Sual özü-özünə yaranır: cavab onsuz da dəyişirsə, mənim sözlərimin buna nə dəxli var. Fərq nəyin dəyişdiyindədir. Eyni sorğular arasındakı səpələnmə eyni seçimin ətrafındakı küydür: ifadələr fərqlənəcək, istiqamət isə əvvəlki kimi qalacaq. Sorğudakı sözlər isə istiqamətin özünü dəyişir və bunu sabit şəkildə edir.

Ən pis işləyən qeyri-müəyyən xahişdir. O, seçimi modelin öhdəsinə buraxır, model isə ümumiyyətlə ən ehtimal olanı seçir - gördüyü hər şeyin ortalamasını. Sadə "mətni qısalt" xahişini götürün. Nə qədər - bir faiz, üçdə bir, iki dəfə? Nəyi atmaq olar, nəyə toxunmaq olmaz? Xahişdə bu sualların heç birinə cavab yoxdur, deməli, cavab verəcək olan modeldir və formal olaraq o haqlı çıxacaq. "Təsviri 30% qısalt" və ya "təsviri 300 simvola qədər qısalt" isə seçim sizin olduğu yerdə ona seçim saxlamır.

Bu, eyni şey haqqında iki sorğuda yaxşı görünür. "Sıralamanı düzəlt" hər şeyi açıq qoyur: hansı siyahı, hansı sahə üzrə, ümumiyyətlə nəyi xarab sayırıq. İkinci ifadə isə demək olar ki, heç nəyi açıq qoymur:

Sifarişlər siyahısında tarixlər köhnədən yeniyə doğru gedir, əksinə lazımdır.
Əvvəlcə sıralama qaydasının təyin olunduğu faylı və sətri göstər, sonra düzəliş təklif et.

O, birincidən düz o qədər uzundur ki, birincidə nə qədər təxmin tələb olunurdu. Həm də yoxlamanın yarısını sizin əvəzinizə görür: agent koddakı yeri siz soruşmamışdan əvvəl gətirir.

Nəticə sadədir: sorğuda azadlıq nə qədər azdırsa, cavabda təxmin də o qədər az olur. Söhbət sehrli sözlərdən yox, adi bir şeydən gedir - çərçivəni ya siz qoyursunuz, ya da onu sizin yerinizə seçirlər.

Əmin ton fakt demək deyil

Əsas tələ isə budur. Modelin "bunu dəqiq bilirəm" üçün ayrıca, "bunu indicə özüm tamamladım" üçün də ayrıca intonasiyası yoxdur: hər iki ifadə eyni üsulla yığılır və eyni dərəcədə sakit çıxır. Burada əlaqə tam sıfır deyil, amma ondan fayda yoxdur: modelin əminliyi həmişə şişirdilmiş olur, ona görə də tona görə yoxlanılmışı tamamlanmışdan ayıra bilməzsiniz.

Adi mətndə qəribə iddia gözə batır və siz özünüz ayaq saxlayırsınız. Kodda bu qoruyucu işləmir: adlar düzgün görünür, konstruksiyalar tanışdır, kitabxananın əsl metodunu isə bənzətmə ilə yığılmış metoddan, kitabxananı əzbər bilmirsinizsə, gözlə ayırmaq olmur. Ona görə də səhv daha çox oxuyanda yox, işə salanda üzə çıxır.

Üstəlik, ad nadir hallarda sıfırdan uydurulur. Generasiya olunmuş kodda mövcud olmayan kitabxanalara istinadların axtarıldığı bir təhlildə belə adların üçdə birindən çoxu iki real adın calağı olub. Etibarlılıq hissi də buradan gəlir: adın hissələrini harasa görmüsünüz, sadəcə bu birləşmədə yox.

Nəyi axtardığınızı bilsəniz, bu dörd hal ilk dəfədən tanınır:

Necə görünürNə baş veribNə ilə tutulur
əmr üçün onda olmayan flaq göstərilibmodel sətri adət etdiyi formaya görə yığıb, ona görə də flaq əsl kimi görünürəmrin arayışı və ya sənədləri
layihədə olmayan fayl, funksiya və ya konfiqurasiya sahəsi göstərilibad belə layihə üçün tipik görünür, amma layihəni heç kim oxumayıblayihədə axtarış, sətri göstərmək xahişi
layihənizin necə qurulduğu əminliklə danışılıbsöhbətdə layihənin bir faylı da olmayıb, ona görə tipik layihə təsvir olunubcavabdan əvvəl hansı faylları açdığını soruşmaq
"hazırdır" deyilib, amma əmr işə salınmayıbhesabat işə salmanın nəticəsindən yox, tapşırığın mətnindən yığılıbözünüz işə salıb çıxışa baxmaq

Dördünün də ortaq cəhəti birdir: cavab görülmüş işin nəticəsi kimi səslənir, halbuki arxasında heç bir iş olmayıb.

Sonuncu halı ayrıca araşdırmaq lazımdır, çünki o, aldatma kimi görünür, amma orada aldatma yoxdur. Agent iş görülmüş kimi görünəndə dayanır. İşə salmağa heç nəyi yoxdursa, "görülmüş kimi görünür" yeganə əlçatan siqnaldır və yoxlayan halqa siz olursunuz.

Bunun qiyməti ölçülə biləndir. Agent loglarının bir təhlilində yalançı "hazırdır"lar bütün uğursuzluqların təxminən yarısını verib. Vəziyyətin agentin öz hesabatından asılı olmayaraq yoxlandığı yerdə isə belə hallar demək olar ki, yox olurdu. Növbəti bölmədəki ikinci yoxlamanın mənası da budur: o, hesabatın yerinə öz gözünüzlə görə biləcəyiniz şeyi qoyur.

Bir sual qalır: model ümumiyyətlə niyə etiraf etmək yox, cavabı tamamlamağı üstün tutur. Məsələ onun necə öyrədildiyində və necə qiymətləndirildiyindədir. Cavab variantları olan bir test təsəvvür edin: boş blank üçün zəmanətli sıfır, təsadüfən işarələnmiş cavab üçünsə bal qazanmaq şansı var. Belə sistemdə susmaq həmişə sərfəsizdir, istənilən qeyri-müəyyənlikdə cavab vermək isə ağlabatandır. İnsan sonra canlı tapşırıqlarda yenidən öyrənir: orada yanlış cavab dürüst "bilmirəm"dən baha başa gəlir. Modeldə belə yenidən öyrənmə yoxdur.

Modeldən əmin olmayanda dürüstcə xəbərdarlıq etməsini xahiş etmək kömək edir - amma bu da eyni mexanizmlə yığılmış mətndir. Əlavə siqnal kimi yarayır, yoxlamanın əvəzi kimi yox.

Alətlər kor zonaları azaldır

Burada söhbətdə adətən qarışdırılan iki sözü bir-birindən ayırmaq faydalıdır. Model cəmi bir şey bacarır: söhbəti alıb davamını vermək. Agent isə modelin ətrafındakı proqramdır və onun alətləri var: faylı oxumaq, əmri işə salmaq, layihədə düzəliş etmək.

İndi isə səhvin məhz harada ola biləcəyini müəyyən edən bir detal. Alətləri proqram seçmir. Model öz cavabında filan faylı açmağı və ya filan əmri işə salmağı xahiş edir, proqram isə bu xahişi yoxlayır, icra edir və nəticəni söhbətə qaytarır. Qərarı model verir, hərəkəti proqram yerinə yetirir. Deməli, qərarın özü də səhv ola bilər: lazım olmayan fayl, lazım olmayan əmr, lazım olmayan test.

Fərq yenə də böyükdür. Fayl açılmayana qədər onun haqqında cavab oxşar layihələrin yaddaşı əsasında qurulur. Fayl oxunan, test işə salınan kimi söhbətdə fakt peyda olur: budur məzmun, budur çıxış. Bu artıq xatirə yox, yoxlamadır və ondan sonra cavabların keyfiyyəti nəzərəçarpacaq dərəcədə başqa olur.

Buradan söhbətin əvvəlində bir sətrə başa gələn bir üsul çıxır:

Əvvəlcə bunun layihədə harada olduğunu tap və göstər, yalnız sonra izah et.

Kor zonalar bu zaman daralır, amma yox olmur. Agent lazımi faylın yerinə qonşu faylı aça, əmrin çıxışını öz bildiyi kimi yoza və ya əsl səbəbə çatmadan ilk inandırıcı izahda dayana bilər. Bunların hamısını görmüşəm, özü də bir dəfə yox. Ona görə də xarici siqnal - testin çıxışı, sənədlərin mətni, faylın məzmunu - dayağı olmayan ən əmin mühakimədən daha ağır gəlir.

Bir dəqiqəyə dəyən üç yoxlama

Yaxşı xəbər odur ki, belə səhvləri demək olar ki, zəhmətsiz tutmaq olar. Hər şey bir yol ayrıcına gəlib çıxır.

Cavabın yoxlanmasında yol ayrıcı: cavabda fayla, əmrə və ya testə istinad yoxdursa, onu fərziyyə sayıb yeri göstərməyi xahiş edirlər, istinad varsa, nəticəni özləri təsdiqləyirlərAgentin cavabıFayla, əmrə və ya testəistinad varmı?Fərziyyə sayırıqyeri göstərməyi istəyirikÖzümüz təsdiqləyirikaçırıq, işə salırıqyoxbəli
Yol ayrıcı istənilən tapşırıqda eynidir: əvvəlcə cavabda dayaq axtarırıq, sonra yoxlamaq, yoxsa dəqiqləşdirmək lazım olduğuna qərar veririk

Burada baxmaq lazım olan şey cavabın nə qədər inandırıcı yazılması deyil, onda tutulmağa bir şeyin olub-olmamasıdır: konkret fayl, konkret sətir, çıxışı ilə birlikdə əmr. Dayaq yoxdursa, deməli, qarşınızda hələ nəticə yox, fərziyyədir. Bir çox cavab elə belə başlayır, sual yalnız sizin bundan sonra nə edəcəyinizdədir.

Sonra üç yoxlama gəlir. Hər biri bir dəqiqədən az vaxt aparır və üçü birdən nadir hallarda lazım olur.

  1. Yeri göstərməyi xahiş edin. "Daha ətraflı izah et" yox, "faylı, sətri və fraqmentin özünü göstər". Belə yer yoxdursa, bu dərhal üzə çıxacaq.
  2. Nəticəni özünüz açın və ya işə salın. Səhifəni brauzerdə, əmri terminalda, testi layihədə. İş haqqında hesabat və işin özü eyni şey deyil.
  3. Alət haqqında iddianı alətin özü ilə tutuşdurun. Əmrin daxili arayışı, kitabxananın sənədləri var. Adı çəkilən flaq və ya konfiqurasiya açarı orada ya var, ya yoxdur və bu, yarım dəqiqəyə aydın olur. Kitabxana metodu ilə isə daha ehtiyatlı olmaq lazımdır: sənədlərə hər şey düşmür, ona görə də metodun orada olmaması hökm yox, yenidən soruşmaq üçün səbəbdir.
Vaxta qənaət edən ifadə

Cavabla mübahisə etmək əvəzinə dayağı birbaşa istəyin:

Bunun təsvir olunduğu faylı və sətri göstər.
Layihədə belə yer yoxdursa, açıq de ki, bu, fərziyyədir.

Əl altında saxlamağa dəyən iki sətir. Birincisi agenti oxşar layihələrin yaddaşı ilə cavab vermək əvəzinə layihəyə göndərir. İkincisi ona çıxış yolu verir: yerin olmadığını demək cavabı inandırıcı görünənə qədər tamamlamaqdan ucuz başa gəlir.

"Hazırdır" hesabatı üçün də eyni xahiş işləyir, sadəcə işə salma haqqında: "işə saldığın əmri və onun tam çıxışını göstər".

Bu, zəmanətə çevrilmir: "bu, fərziyyədir" ifadəsi də qalan hər şey kimi eyni mexanizmlə yığılır. Səhv şansını azaldır, yoxlamanı əvəz etmir.

Və dərhal bir qeyd, yanlış təəssürat qalmasın. Yoxlamaq alətə etibar etməmək demək deyil. Öz diff-inizi də commit-dən əvvəl yenidən oxuyursunuz, halbuki onu özünüz yazmısınız. Burada da eynidir, sadəcə səbəb bir az daha ağırdır.

Bu, Claude Code ilə iş üçün nə deməkdir

Bütün bunlardan klaviatura arxasında birbaşa nə çıxır:

  • fayla, sətrə və ya əmrin çıxışına istinadı olan cavab saniyələr içində yoxlanılır. Bunlar olmayan cavabı yoxlamağa isə heç nə yoxdur: onu ancaq yenidən oxuyub razılaşmaq qalır;
  • sualı verməzdən əvvəl agentə lazım olanı oxumağa imkan verin. Bir əlavə addım bütöv bir səhv sinfini aradan qaldırır;
  • əminliyə görə mühakimə yürütmək olmaz: sözlərin arxasında yoxlama da dursa, təxmin də dursa, o, şişirdilmiş olur;
  • "düzgün səslənir" və "düzgün işləyir" fərqli şeylərdir və onları yalnız işə salma ayırd edir;
  • səhvin qiyməti nə qədər böyükdürsə, söhbətdə xarici bir şey - test, sənədlər, real fayl - bir o qədər tez peyda olmalıdır. Kiçik düzəlişdə diff-ə bir nəzər salmaq kifayətdir;
  • agent səhv edibsə, bunu ona qiymət kimi yox, fakt kimi deyin. "Layihədə belə funksiya yoxdur, qovluqda olanlar bunlardır" işi irəli aparır, "sən yenə hər şeyi uydurdun" isə heç yerə aparmır. Bunu da yadda saxlayın: əmin etiraza agent mübahisə etməkdən çox uyğunlaşmağa meyillidir, hətta haqlı olan o olsa belə. Agentin razılaşması sizin haqlı olduğunuzun təsdiqi deyil.

Bəzən əminliklə səhv edən mexanizm bununla belə son dərəcə faydalı olaraq qalır. Onun sərhədlərini bilmək elə buna görə lazımdır ki, təəccüblənməyə vaxt itirməyəsiniz və dərhal yoxlamaya keçəsiniz.