Təsəvvür edin: agentdən hazır brauzer oyununda bir partiya oynamağı xahiş edirsiniz. O, bir neçə gediş edir, vəziyyəti təsvir edib susur. Partiya hələ davam edir. Siz "davam et" yazırsınız. O, fiqurları yenə hərəkət etdirir və yenə mesaj gözləyir. Bir məqamda məlum olur ki, burada ən yeknəsəq işi siz görürsünüz.

Goal - bu, agentə /goal əmri ilə verdiyiniz tamamlanma şərti olan məqsəddir. Məsələn: "səhifədə partiyanın bitdiyi görünənədək hər iki tərəf üçün oynayın". İşin növbəti gedişindən sonra ayrıca model söhbətə baxıb məqsədə çatılıb-çatılmadığını yoxlayır. Hələ çatılmayıbsa, sizin "davam et" deməyinizə ehtiyac olmadan iş davam edir. Nəticəni gözləyə bilərsiniz, amma maneə və ya xəta işi daha tez dayandıra bilər.

Əvvəlcə oyun üçün hazır şərtə baxaq, sonra axtarış, forma və mobil səhifə üçün məqsədlər quraq. Hər birinin aydın nəticəsi və yoxlama üsulu olacaq. Agentdən şərti sizin əvəzinizə yazmağı necə istəməyi və həqiqi tamamlanmanı nəticəsiz dayanmaqdan necə fərqləndirməyi də nəzərdən keçirəcəyik.

/goal işi necə davam etdirir

Oyun nümunəsində bir-birinə qarışdırmaq asan olan iki fərqli mexanizm iştirak edir. Biri brauzerdə əməliyyatlar edir: klikləyir, gedişləri daxil edir, səhifədə nə göründüyünü oxuyur. O biri heç nəyə klikləmir - bütün söhbəti oxuyur və işi davam etdirmək lazım olub-olmadığına qərar verir.

Birincisi MCP vasitəsilə əvvəlcədən qoşulmuş brauzer aləti Playwright-dır. İkincisini /goal əmri başladır. Playwright fiqurları hərəkət etdirir, /goal isə dayanmaq vaxtının çatıb-çatmadığına qərar verir - kənardan eyni proses kimi görünsə də, bunlar ayrı işlərdir.

Kim işləyirNə baş verir
Playwright vasitəsilə agentbrauzerdə növbəti əməliyyatı yerinə yetirir və müşahidə əldə edir - səhifənin həqiqətən göstərdiyi məlumatı
/goal qiymətləndiricisiagent işin növbəti gedişini bitirəndən sonra söhbəti oxuyur və qərar verir: şərt hələ yerinə yetirilməyib, artıq yerinə yetirilib, yoxsa onu ümumiyyətlə yerinə yetirmək mümkün deyil

Vacib bir məqam: qiymətləndirmə hər siçan klikindən sonra yox, agent iş gedişini - sadə desək, cavabının hamısını - bitirəndən sonra aparılır. Belə bir gedişin içində agent ardıcıl bir neçə əməliyyat edə bilər: fiquru hərəkət etdirər, nəticəni oxuyar, ona reaksiya verər. /goal yalnız bundan sonra, qiymətləndiriləsi nəsə olanda işə qoşulur.

/goal brauzeri özü qoşmur

/goal Playwright-ı və ya başqa alətləri əlavə etmir - yalnız artıq davam edən işi izləyir. Adi icazə sorğularını da ləğv etmir: hansısa əməliyyat üçün parametrlər təsdiq tələb edirsə, agent məqsəd olsa da, olmasa da sizdən eyni qaydada təsdiq istəyəcək.

Oyunu işə salmağa hazırlayın

Şərt qoymazdan əvvəl nümunə işlək vəziyyətdə olmalıdır: səhifə məlum ünvanda açılmalı, oyun üçün alətlər (bizim halda Playwright) qoşulmalı, partiyanın bitib-bitmədiyini göstərən nişan isə səhifədə olmalıdır.

Nümunəmizdə bu, data-atributudur: davam edən partiyada data-game-over="false", bitmiş partiyada isə data-game-over="true". Bu qaydanı oyun səhifəsini yazan şəxs müəyyən edir - agent onu uydurmur, sadəcə oxuyur.

Bunu yoxlamaq asandır: agentdən səhifəni açıb atributun dəyərini oxumağı istəyin. Yeni başlayan partiyada agent false alacaq. Bu normaldır, başlanğıcda məhz belə olmalıdır.

Səhifədə atribut ümumiyyətlə yoxdursa, məqsəd qoymağa hələ tezdir. Şərt yalnız həqiqətən oxuna bilən məlumata əsaslana bilər. Ona görə əvvəlcə nişanın özünü qaytarmaq lazımdır, elə prosesin gedişində ona əvəz uydurmaq yox. Nümunə hazırdırsa, partiya vaxtı meyarı dəyişməyin və nümayiş tez bitsin deyə oyuna ayrıca taymer qoşmayın. Şərt əvvəldən axıradək eyni qalır.

Hazır məqsədi başladın

İndi isə əmrin özünə keçək. Nümunəmiz üçün şərt belə ifadə oluna bilər:

/goal səhifənin interfeysi vasitəsilə növbə ilə hər iki tərəf üçün oynayın.
Hər gedişdən sonra data-game-over dəyərini oxuyun və
səhifədə görünəni göstərin. data-game-over true olanda
partiya bitmiş sayılır. 40 gedişdən sonra bu baş verməsə,
dayanın və harada ilişdiyinizi təsvir edin. Oyun kodunu dəyişməyin.

İfadəni hissələrə bölək. Eyni hissələr öz tapşırıqlarınızda da işə yarayacaq:

  • "səhifənin interfeysi vasitəsilə... oynayın" - agentin söhbətdə həqiqətən göstərə biləcəyi ölçülə bilən əməl;
  • "data-game-over true olanda partiya bitmiş sayılır" - burada həqiqi nəticə hesab edilən yeganə meyardır. Qiymətləndirici söhbətdə məhz bunu axtaracaq;
  • "hər gedişdən sonra oxuyun... və göstərin" - qiymətləndiricinin yoxlaya bilməsi üçün lazım olan fakt. Bu sətir olmasa, onun baxacağı heç nə yoxdur;
  • "40 gedişdən sonra bu baş verməsə, dayanın və təsvir edin" - true heç cür baş vermədiyi halda ayrıca göstəriş. Bu, uğurun bir hissəsi deyil, nəticə olmadan işi dayandırmaq üsuludur: məqsədin həcmini məhdudlaşdırır, amma nəticəni əvəz etmir. Bu, hələ də mətndəki göstərişdir, sərt proqram taymeri deyil - onu da söhbətə əsasən qiymətləndirirlər;
  • "oyun kodunu dəyişməyin" - agent nəticəyə çatmağa çalışarkən baş verməməli olan hərəkət.

Nəticənin necə olacağı əvvəlcədən məlum deyil - konkret qalib, partiyanın uzunluğu, hətta onun bitəcəyi də vəd edilə bilməz. Amma agentin nə göstərməli olduğu aydındır: oyunun oxunmuş vəziyyətini və işi davam etdirməsinin, yaxud dayandırmasının səbəbini.

Öz şərtinizi necə qurmalı

"Tapşırıq o zaman bitmiş sayılır ki..." ifadəsindən başlayın. Davamı "hər şey yaxşılaşdı" kimi səslənirsə, agent nəyi nəzərdə tutduğunuzu özü müəyyən etməli olacaq. Subyektiv rəyi görünən davranışla əvəz edin: "axtarışı təmizlədikdən sonra bütün kartlar yenidən görünür". Bir neçə yoxlama da ola bilər, əgər onların hamısı eyni nəticəni, məsələn, düzəlmiş axtarışı təsvir edirsə.

  • Nəticəni adlandırın. "Axtarışı düzəltmək" istiqaməti göstərir, "axtarış ada görə kartı tapır və təmizləmədən sonra bütün siyahını qaytarır" isə tamamlanma nöqtəsini müəyyən edir.
  • Yoxlamanı göstərin. Nəyi açmaq, nə daxil etmək və hansı cavabı gözlədiyinizi yazın. Qiymətləndiricinin oxuya bilməsi üçün faktiki nəticəni söhbətdə göstərməyi xahiş edin.
  • Dəyişiklikləri məhdudlaşdırın. Yalnız stillər dəyişməlidirsə, bunu deyin. Agent hazır oyunu yoxlayırsa, istədiyiniz nəticəni almaq üçün onun kodunu dəyişməyi qadağan edin.
  • Uğursuz dayanma halını da nəzərdə tutun. Məsələn, düzəliş və təkrar yoxlamadan ibarət üç cəhddən sonra agent qalan problemi təsvir etməlidir. Bu, işin həddidir, tapşırığı tamamlanmış elan etməyin başqa yolu deyil.

Başlamazdan əvvəl agentin lazımi səhifəyə, fayllara və alətlərə çıxışı olduğunu yoxlayın. Şərtdəki ünvan və element adları sizin layihənizə aid olmalıdır. Mətndə verilən cəhd limiti işə nəzarət etməyə kömək edir, amma vaxt və ya xərc üçün sərt texniki limit deyil.

Agent işləyir və yoxlamanın nəticəsini göstərir. Qiymətləndirici söhbəti oxuyur: təsdiqlənmiş nəticə məqsədi tamamlayır, yarımçıq iş davam edir, maneə və ya limit uğursuz dayanma tələb edir./goal şərtiNəticə, yoxlama, sərhədlər, limitAgent işləyir və yoxlayırMüşahidəni söhbətdə göstərirQiymətləndirici söhbəti oxuyurMüşahidəni şərtlə tutuşdururNəticə təsdiqləndiİş tamamlandıManeə və ya limitUğursuz dayanmaHələhazır deyilQiymətləndirici səhifəni özü açmır.Mətndəki limit təlimatdır, taymer deyil.
Məqsəd agentin hərəkətlərini yoxlanıla bilən nəticə ilə bağlayır

Geri qayıdan oxa diqqət yetirin. Nəticəyə hələ çatılmayıbsa, agent növbəti iş gedişini alır, problemi düzəldib yenidən yoxlaya bilər. Amma bu dövrədən çıxmaq həmişə uğur demək deyil: maneəni və ya razılaşdırılmış limiti ayrıca göstərmək lazımdır. Sxem şərtin iş məntiqini göstərir; agent və qiymətləndirici cəhd limitini söhbətə əsasən izləyir.

Öz tapşırıqlarınız üçün üç nümunə

Aşağıda artıq mövcud səhifələr üçün nümunə şərtlər var. Başlamazdan əvvəl ünvanları, məlumatları və gözlənilən davranışı özünüzünkülərlə əvəz edin. Bunlar şərt nümunələridir, görülmüş iş barədə hesabat deyil.

Kataloqda axtarışı düzəldin

Tutaq ki, yerli kataloqda "Atlas" və "Orion" kartları var, amma axtarışı təmizlədikdən sonra siyahı boş qalır. "Axtarışı normal edin" xahişi gözlənilən davranışı izah etmir. Bu halda üç konkret ssenari daha faydalıdır:

/goal http://localhost:3000/catalog ünvanında axtarışı düzəldin.
"atlas" sorğusu "Atlas" kartını tapanda,
"zzzz-no-match" sorğusu "Heç nə tapılmadı" göstərəndə,
axtarış sahəsini təmizləmək isə bütün ilkin kartları qaytaranda hazırdır.
Playwright vasitəsilə bu üç ssenarinin hamısını yoxlayın və söhbətdə
sorğunu, gözlənilən nəticəni, faktiki görünən kartları
və ya mesajı göstərin. Son düzəlişdən sonra hər üç yoxlamanı təkrarlayın.
Yalnız axtarış məntiqini dəyişin; kataloq məlumatlarına və tərtibata toxunmayın.
Yoxlama ilə üç düzəliş cəhdindən sonra problem qalarsa,
dayanın və hələ işləməyən ssenariləri sadalayın.

Burada "hamısı" sözü vacibdir: bir kartın tapılması axtarışın düzəldiyini hələ təsdiqləmir. Kataloq məlumatları dəyişməz qalır, ona görə kartların adını dəyişib istənilən nəticəni almaq olmaz. Son düzəlişdən sonra təkrar yoxlama da vacibdir, çünki axtarışın təmizlənməsini düzəltmək elə axtarışın özünü poza bilər.

Formanı düzəliş etmədən yoxlayın

Məqsədin nəticəsi müşahidələrin siyahısı da ola bilər. Tutaq ki, hazır qeydiyyat formasını yoxlamaq, düzəlişləri isə ayrıca müzakirə etmək istəyirsiniz. Bu halda səhvlər aşkar edilsə belə, bütün ssenarilər yoxlanandan sonra məqsəd tamamlanır.

/goal http://localhost:3000/signup ünvanındakı formanı
Playwright vasitəsilə, layihə fayllarını dəyişmədən yoxlayın.
Hər dəfə boş formadan başlayaraq iki ssenarini yoxlayın:
1. Sahələri doldurmadan "Qeydiyyatdan keç" düyməsini basın.
Məcburi sahə barədə xəbərdarlıq görünməli, qeydiyyat baş verməməlidir.
2. email sahəsinə "alex" yazın, qalan məcburi sahələri
uyğun nümunə dəyərlərlə doldurun və düyməni basın.
Email formatı xətası görünməli, qeydiyyat baş verməməlidir.
Söhbətdə hər iki ssenari üzrə hesabat olanda hazırdır:
nə daxil edilib, nə gözlənilib, səhifə nə göstərib, fərq varmı.
Düzgün email ilə formanı göndərməyin və hesab yaratmayın.
Səhifəni və ya elementi açmaq mümkün deyilsə, yoxlamanı dayandırın
və hansı ssenarinin niyə yoxlanmadığını qeyd edin.

Fərqə fikir verin: "formanı yoxlamaq" və "formanın işləməsinə nail olmaq" iki ayrı tapşırıqdır. Agent hər iki ssenarini həqiqətən yoxlayıb nəticələri göstəribsə, formadakı xəta hesabatı tamamlamağa mane olmur. Amma səhifənin açılmaması mane olur: müşahidə əvəzinə fərziyyələr məqsədi tamamlamır.

Səhifəni telefona uyğunlaşdırın

"Mobil üçün gözəl edin" agentin zövqünə həddən artıq çox şey buraxır. Konkret səhifəni, pəncərə ölçülərini və əlçatan qalmalı elementləri seçin.

/goal http://localhost:3000 səhifəsinin stillərini
390x844 və 1440x900 ölçülü pəncərələr üçün düzəldin.
Hər iki ölçüdə üfüqi sürüşdürmə olmayanda,
başlıq və "Başla" düyməsi tam görünəndə və bir-birini örtməyəndə,
"Başla" düyməsinə basmaq isə yenə oyun bölməsini açanda hazırdır.
Son düzəlişdən sonra hər iki ölçünü Playwright ilə yoxlayın.
Ekran görüntülərini, klik nəticəsini və səhifənin kök elementinin
scrollWidth və clientWidth ölçülərini göstərin:
scrollWidth clientWidth-dən böyük olmamalıdır.
Yalnız CSS-i dəyişin. Sürüşdürməni aradan qaldırmaq üçün məzmunu gizlətməyin
və ya kəsməyin. Mətni və oyunun davranışını olduğu kimi saxlayın.
Yoxlama ilə üç düzəliş cəhdindən sonra şərtlər yerinə yetməsə,
dayanın və qalan uyğunsuzluğu göstərin.

Buradakı ölçülər brauzer pəncərəsinin piksel ilə eni və hündürlüyüdür. scrollWidth kənardan daşan hissə də daxil olmaqla məzmunun enini, clientWidth isə əlçatan eni göstərir. Onları müqayisə etmək daşmanı aşkar etməyə kömək edir, amma təkbaşına mətnin kəsilmədiyini və düymənin əlçatan olduğunu sübut etmir. Buna görə şərtdə ekran görüntüləri və klik də var. İki ölçü də bütün cihazlarda rahatlığı sübut etmir - yalnız bu tapşırığın əhatəsini müəyyən edir.

Agentdən goal hazırlamağı istəyin

Şərti sıfırdan yazmaq məcburi deyil. Claude Code Best Practice toplusunda icmanın iki məsləhəti var: agentdən layihə kontekstinə əsasən məqsədlər təklif etməsini istəmək və yazışma ilə faylları oxuduqdan sonra şərt mətnini hazırlamağı ona tapşırmaq. Aşağıda bu üsullar kiçik tapşırığa uyğunlaşdırılıb.

Uzunmüddətli işə nə tapşıracağınız hələ aydın deyilsə, /goal olmadan adi mesajla başlayın:

Cari yazışmanı və tapşırığa aid layihə fayllarını oxuyun.
Yoxlanıla bilən nəticə ilə bitə biləcək üç faydalı məqsəd
təklif edin. Hər biri üçün nəticəni, yoxlama üsulunu,
dəyişikliklərin sərhədlərini və başlamaq üçün çatışmayanları göstərin.
Razılaşdıqlarımıza əsaslanın. Məqsədləri hələ başlatmayın,
faylları dəyişməyin. Niyyət aydın deyilsə, sual verin.

Bir məqsəd seçin. Uzun iş özü-özlüyündə üstünlük deyil: bir neçə saatlıq qeyri-müəyyən "təkmilləşdirmələr"dənsə düzəlmiş axtarış daha faydalıdır. Tapşırıq aydındırsa, ilk sorğunu atlayıb birbaşa şərtin qaralamasını istəyə bilərsiniz:

Seçilmiş tapşırıq üçün /goal mətnini yazışmamıza,
layihə fayllarına və sənədlərinə əsasən hazırlayın. Hələ heç nə etməyin.
Müşahidə edilə bilən nəticəni, onun necə yoxlanacağını və söhbətdə
nəyin göstərilməli olduğunu qeyd edin. Dəyişiklik sərhədlərini və
uğursuzluq halında dayanma şərtini əlavə edin. Ünvan, əmr və ya
hazırlıq əlaməti uydurmayın: layihədə tapın, ya da məndən soruşun.
Bir hazır mətn qaytarın, aydın olmayan məqamları isə ayrıca sadalayın.

Qaralamanı göndərməzdən əvvəl məzmunu yoxlayın. Nəticə istədiyinizlə üst-üstə düşür? Göstərilən səhifə mövcuddur? Agent şərtdə bu arada məlumatları dəyişməyə və ya funksiyalar əlavə etməyə icazə verməyib ki? Sonda aydın olmayan məqamlar qalıbsa, əvvəl onları həll edin. Yalnız dəqiqləşdirilmiş mətni başladın: /goal əmri işi dərhal başladır.

Vəziyyətə baxın və işi dayandırın

Məqsəd aktiv ikən gedişatı izləyə bilərsiniz: arqumentsiz /goal əmri cari vəziyyəti göstərir - şərti, nə qədər vaxt və neçə gediş keçdiyini, qiymətləndiricinin qaytardığı son səbəbi.

Məqsədi vaxtından əvvəl /goal clear əmri ilə də dayandırmaq olar. Partiya bitməsə belə, bu əmr şərti ləğv edir.

Burada təsdiqlənmiş nəticə birdir: şərt yerinə yetirilib və bu, söhbətdə qiymətləndiricinin cavabından görünür. Məqsədi /goal clear əmri ilə ləğv etmək də aydın nəticədir, amma bu, işin görüldüyünün sübutu yox, sizin dayanmaq qərarınızdır. Məqsədin öz-özünə dayanmasının digər üsulları nəticəni təsdiqləmir.

Dayanmaq hələ nəticə deyil

Qiymətləndirici şərti yerinə yetirməyin mümkün olmadığına qərar versə və ya şərtdə yazılmış limitə çatılarsa, məqsəd sizin əmrinizi gözləmədən özü dayanacaq. Xətalarla iş daha mürəkkəbdir: məqsəd yalnız əl ilə düzəldilməli olan xətada öz-özünə ləğv olunur (məsələn, kreditlər bitəndə). Müvəqqəti nasazlıqdan sonra o aktiv qalır və təkrar cəhdi və ya sizin mesajınızı gözləyir, agent bir neçə addım ardıcıl irəliləmirsə isə Claude Code idarəni sizə qaytarır, yenə də məqsədi ləğv etmədən. Bütün bunlar "partiya oynanıldı" demək deyil: yuxarıda dayanmanı qiymətləndirici təsdiqləyib və ya məqsədi ləğv etmək qərarını özünüz vermisiniz, burada isə bunların heç biri baş verməyib. Şərti sonradan yumşaldıb nümunəni uğurlu statusa uyğunlaşdırmayın. İş ilişibsə, şərti mütləq keçəcək şəkildə yenidən yazmaqdansa, /goal clear əmri ilə məqsədi ləğv edib ilişdiyiniz yeri açıq təsvir etmək daha məntiqlidir.

Yoxlayıcı model nə əldə edir

/goal qiymətləndiricisi səhifənin özünü yox, söhbəti görür: agentin yazdıqlarını və brauzerdəki müşahidələrdən söhbətə köçürdüklərini. Qiymətləndiricinin öz alətləri yoxdur - səhifəni yenidən açmır, əmrləri özü icra etmir, yalnız söhbətdə toplanmış mətni oxuyur.

Buradan sadə nəticə çıxır. Agentin "partiya bitdi" deməsi nə qiymətləndiriciyə, nə də sizə özü-özlüyündə nəyisə sübut edir. Nəticəni agentin səhifədən həqiqətən oxuduğu məlumat sübut edir - həmin data-game-over dəyəri. Birincisi iddiadır, ikincisi müşahidədir; oxşar səslənsələr də, fərqli şeylərdir.

Bu göstəricinin sərhədlərini də anlamaq lazımdır. data-game-over konkret tətbiqin vəziyyətini, yəni səhifə müəllifinin orada nəzərdə tutduğunu bildirir. Bütün partiyanın şahmat qaydalarına uyğun, bir səhv belə olmadan oynanıldığını göstərmir. Eyni qaydada sürüşdürmənin olmaması da düymənin işlədiyini sübut etmir. Həqiqətən almaq istədiyiniz nəticəyə uyğun göstərici seçin və ona əlavə məna yükləməyin.

Bu, iş prosesini necə dəyişir

Öz tapşırığınız üçün də eyni qısa ardıcıllıqdan istifadə edə bilərsiniz:

  • aydın nəticə və onu yoxlamaq üçün əlçatan üsul;
  • dəyişiklik və dayanma sərhədləri olan, /goal əmri ilə verilən şərt;
  • istənilən vaxt baxa biləcəyiniz status - arqumentsiz /goal əmri;
  • müşahidə və yoxlama nəticələri ilə əsaslandırılmış yekun;
  • iş ilişəndə və ya şərt uyğun olmayanda /goal clear əmri ilə əl ilə ləğv edilən məqsəd.

İşin avtomatik davam etməsi və sonra nə etmək barədə qərar vermək ayrı-ayrı məsələlərdir. Birincisini bir sessiya daxilində /goal əmrinə etibar etmək olar. İkincisi - əslində nəyin alındığını araşdırmaq, tamamlanmamış məqsədi ləğv etmək və növbəti tapşırığı vermək - yenə də sizin öhdənizdədir.


Qiymətləndiricinin dəqiq davranışı və status formatı Claude Code versiyasından asılı olaraq bir qədər fərqlənə bilər. Ümumi prinsip - səhifəyə birbaşa çıxışla yox, söhbət əsasında qiymətləndirmə - dəyişmir.