AI agentləri daha bacarıqlı olduqca, tərtibatçılar onlardan saatlarla, hətta günlərlə davam edən mürəkkəb tapşırıqları yerinə yetirmələrini tələb edirlər. Lakin agentlərin çoxsaylı kontekst pəncərələri boyunca ardıcıl irəliləyiş göstərməsini təmin etmək hələ də açıq bir problemdir.
Uzunmüddətli agentlərin əsas problemi ondan ibarətdir ki, onlar diskret sessiyalarda işləməlidir və hər yeni sessiya əvvəlki hadisələr haqqında heç bir yaddaş olmadan başlayır. Növbəli işləyən mühəndislərlə dolu bir proqram təminatı layihəsini təsəvvür edin — hər yeni mühəndis əvvəlki növbədə nə baş verdiyini xatırlamadan gəlir. Kontekst pəncərələri məhdud olduğundan və əksər mürəkkəb layihələr tək bir pəncərə daxilində tamamlana bilmədiyindən, agentlərin kodlaşdırma sessiyaları arasındakı boşluğu aradan qaldırmaq üçün bir yola ehtiyacı var.
Biz Claude Agent SDK-nın çoxsaylı kontekst pəncərələri boyunca effektiv işləməsini təmin etmək üçün ikitərəfli həll hazırladıq: ilk işə salınmada mühiti quran başlatma agenti və hər sessiyada artımlı irəliləyiş əldə edərək növbəti sessiya üçün aydın artefaktlar qoyan kodlaşdırma agenti. Kod nümunələrini müşayiət edən quickstart-da tapa bilərsiniz.
Uzunmüddətli agent problemi
Claude Agent SDK güclü, ümumi təyinatlı agent çərçivəsidir və kodlaşdırmada, eləcə də modelin alətlərdən istifadə edərək kontekst toplamasını, planlaşdırma və icra etməsini tələb edən digər tapşırıqlarda mahirdir. O, sıxlaşdırma (compaction) kimi kontekst idarəetmə imkanlarına malikdir ki, bu da agentə kontekst pəncərəsini tükətmədən tapşırıq üzərində işləməyə imkan verir. Nəzəri olaraq, bu quraşdırma ilə agentin ixtiyari uzun müddət faydalı iş görməsi mümkün olmalıdır.
Lakin sıxlaşdırma kifayət deyil. Standart konfiqurasiyada, hətta Claude Agent SDK üzərində dövrədə çoxsaylı kontekst pəncərələri boyunca işləyən Opus 4.5 kimi qabaqcıl kodlaşdırma modeli belə, yalnız yüksək səviyyəli bir prompt verildiyi halda — məsələn, "claude.ai-ın klonunu yarat" — istehsalata hazır veb tətbiq yaratmaqda uğursuz olacaq.
Claude-un uğursuzluqları iki nümunədə özünü göstərdi. Birincisi, agent bir anda çox şey etməyə çalışırdı — əslində tətbiqi bir cəhddə tamamlamağa çalışırdı. Bu, tez-tez modelin tətbiqin ortasında kontekstinin tükənməsinə gətirib çıxarırdı və növbəti sessiyanı yarımçıq qalmış və sənədləşdirilməmiş funksionallıqla başlamağa məcbur edirdi. Sonrakı agent nə baş verdiyini təxmin etməli və əsas tətbiqi yenidən işlək vəziyyətə gətirmək üçün xeyli vaxt sərf etməli olurdu. Bu, hətta sıxlaşdırma ilə belə baş verir, çünki sıxlaşdırma növbəti agentə həmişə mükəmməl aydın təlimatlar ötürmür.
İkinci uğursuzluq rejimi adətən layihənin sonrakı mərhələlərində baş verirdi. Bəzi funksionallıqlar artıq qurulduqdan sonra, sonrakı agent nümunəsi ətrafına baxır, irəliləyiş olduğunu görür və işin bitdiyini elan edirdi.
Bu, problemi iki hissəyə ayırır. Birincisi, verilmiş promptun tələb etdiyi bütün funksionallıqlar üçün təməl yaradan başlanğıc mühit qurmaq lazımdır ki, agent addım-addım və funksionallıq-funksionallıq işləsin. İkincisi, hər agenti hədəfinə doğru artımlı irəliləyiş əldə etməyə və eyni zamanda sessiyanın sonunda mühiti təmiz vəziyyətdə buraxmağa yönəltməliyik. "Təmiz vəziyyət" dedikdə, əsas branch-a birləşdirmək üçün uyğun olan kodu nəzərdə tuturuq: böyük xətalar yoxdur, kod nizamlı və yaxşı sənədləşdirilmişdir və ümumiyyətlə, bir tərtibatçı əvvəlcə əlaqəsiz bir qarışıqlığı təmizləmədən yeni funksionallıq üzərində asanlıqla işə başlaya bilər.
Daxili təcrübələrimizdə bu problemləri ikihissəli həll ilə aradan qaldırdıq:
- Başlatma agenti: İlk agent sessiyası xüsusi bir prompt istifadə edir ki, bu da modeldən başlanğıc mühiti qurmasını tələb edir:
init.shskripti, agentlərin nə etdiyini qeyd edən claude-progress.txt faylı və hansı faylların əlavə edildiyini göstərən ilkin git commit. - Kodlaşdırma agenti: Hər sonrakı sessiya modeldən artımlı irəliləyiş əldə etməsini, sonra strukturlaşdırılmış yeniliklər buraxmasını tələb edir.¹
Burada əsas kəşf agentlərin təmiz kontekst pəncərəsi ilə başlayarkən işin vəziyyətini tez anlamaq üçün bir yol tapmaq idi ki, bu da git tarixçəsi ilə birlikdə claude-progress.txt faylı vasitəsilə həyata keçirildi. Bu təcrübələr üçün ilham effektiv proqram təminatı mühəndislərinin hər gün nə etdiyini bilməkdən gəldi.
Mühitin idarə edilməsi
Yenilənmiş Claude 4 prompt təlimatında biz çoxsaylı kontekst pəncərəsi iş axınları üçün ən yaxşı təcrübələri, o cümlədən "ilk kontekst pəncərəsi üçün fərqli prompt" istifadə edən çərçivə strukturunu paylaşdıq. Bu "fərqli prompt" başlatma agentindən gələcək kodlaşdırma agentlərinin effektiv işləməsi üçün lazım olan bütün kontekstlə mühiti qurmasını tələb edir. Burada belə bir mühitin bəzi əsas komponentləri haqqında daha ətraflı məlumat veririk.
Funksionallıq siyahısı
Agentin tətbiqi bir cəhddə tamamlamaq və ya layihəni vaxtından əvvəl tamamlanmış hesab etmək problemini həll etmək üçün başlatma agentinə istifadəçinin ilkin promptunu genişləndirən hərtərəfli funksionallıq tələbləri faylı yazmasını tapşırdıq. claude.ai klonu nümunəsində bu, "istifadəçi yeni söhbət aça, sorğu yaza, enter basa və AI cavabını görə bilər" kimi 200-dən çox funksionallığı əhatə edirdi. Bu funksionallıqların hamısı başlanğıcda "uğursuz" olaraq qeyd edilmişdi ki, sonrakı kodlaşdırma agentləri tam funksionallığın necə göründüyünü aydın şəkildə görə bilsinlər.
{
"category": "functional",
"description": "Yeni söhbət düyməsi təmiz bir söhbət yaradır",
"steps": [
"Əsas interfeysə keçin",
"'Yeni Söhbət' düyməsinə basın",
"Yeni söhbətin yaradıldığını yoxlayın",
"Söhbət sahəsinin qarşılama vəziyyətini göstərdiyini yoxlayın",
"Söhbətin yan paneldə göründüyünü yoxlayın"
],
"passes": false
}
Biz kodlaşdırma agentlərini bu faylı yalnız passes sahəsinin statusunu dəyişdirməklə redaktə etməyə yönəldirik və "Testləri silmək və ya redaktə etmək qəbuledilməzdir, çünki bu, funksionallığın əskik olmasına və ya xətalı olmasına gətirib çıxara bilər" kimi güclü ifadəli təlimatlar istifadə edirik. Bir neçə təcrübədən sonra bunun üçün JSON istifadə etməyə qərar verdik, çünki model Markdown faylları ilə müqayisədə JSON fayllarını yersiz dəyişdirmək və ya üzərinə yazmaq ehtimalı daha azdır.
Artımlı irəliləyiş
Bu başlanğıc mühit çərçivəsi ilə kodlaşdırma agentinin növbəti iterasiyasından yalnız bir funksionallıq üzərində işləməsi istənildi. Bu artımlı yanaşma agentin bir anda çox şey etmək meylini aradan qaldırmaq üçün həlledici oldu.
Artımlı işlədikdən sonra da modelin kod dəyişikliyi etdikdən sonra mühiti təmiz vəziyyətdə buraxması vacibdir. Təcrübələrimizdə, bu davranışı əldə etməyin ən yaxşı yolunun modeldən irəliləyişini təsviri commit mesajları ilə git-ə commit etməsini və irəliləyiş faylında xülasələr yazmasını istəmək olduğunu aşkar etdik. Bu, modelə git vasitəsilə pis kod dəyişikliklərini geri qaytarmağa və kodun işlək vəziyyətlərini bərpa etməyə imkan verdi.
Bu yanaşmalar həmçinin effektivliyi artırdı, çünki agentin nə baş verdiyini təxmin etməli və əsas tətbiqi yenidən işlək vəziyyətə gətirməyə vaxt sərf etməli olmasının qarşısını aldı.
Test etmə
Müşahidə etdiyimiz son əsas uğursuzluq rejimi Claude-un düzgün test etmədən funksionallığı tamamlanmış kimi qeyd etmə meyli idi. Açıq prompt olmadan, Claude kod dəyişiklikləri edirdi, hətta unit testlər və ya inkişaf serverinə qarşı curl əmrləri ilə test edirdi, lakin funksionallığın uçdan-uca işləmədiyini dərk edə bilmirdi.
Veb tətbiq yaratma halında, Claude brauzer avtomatlaşdırma alətlərindən istifadə etməyə və bütün testləri insan istifadəçi kimi aparmağa açıq şəkildə yönəldildikdə, funksionallıqları uçdan-uca yoxlamaqda əsasən yaxşı nəticə göstərdi.
Claude-un claude.ai klonunu test edərkən Puppeteer MCP serveri vasitəsilə çəkdiyi ekran görüntüləri.
Claude-a bu cür test alətləri təmin etmək performansı kəskin şəkildə yaxşılaşdırdı, çünki agent yalnız koddan aydın olmayan xətaları müəyyən edib düzəldə bildi.
Bəzi problemlər hələ də mövcuddur — məsələn, Claude-un görmə qabiliyyətinin məhdudiyyətləri və brauzer avtomatlaşdırma alətlərinin hər növ xətanı müəyyən etməyi çətinləşdirməsi. Məsələn, Claude Puppeteer MCP vasitəsilə brauzerin yerli alert modallarını görə bilmir və bu modallara əsaslanan funksionallıqlar nəticədə daha çox xətalı olurdu.
İşə başlama
Yuxarıdakıların hamısı tətbiq edildikdən sonra, hər kodlaşdırma agentinə vəziyyəti anlamaq üçün bir sıra addımları yerinə yetirməsi tapşırılır — bəziləri olduqca sadə, lakin yenə də faydalıdır:
- İşlədiyiniz qovluğu görmək üçün
pwdəmrini işlədin. Yalnız bu qovluqdakı faylları redaktə edə biləcəksiniz. - Son zamanlar nə üzərində işlənildiyini öyrənmək üçün git qeydlərini və irəliləyiş fayllarını oxuyun.
- Funksionallıq siyahısı faylını oxuyun və hələ tamamlanmamış ən yüksək prioritetli funksionallığı seçin.
Bu yanaşma Claude-a hər sessiyada bəzi tokenlərə qənaət etdirir, çünki kodu necə test edəcəyini anlamağa ehtiyac qalmır. Həmçinin başlatma agentindən inkişaf serverini işlədə bilən init.sh skripti yazmasını və yeni funksionallıq tətbiq etməzdən əvvəl əsas uçdan-uca test keçirməsini istəmək faydalıdır.
claude.ai klonu nümunəsində bu o demək idi ki, agent həmişə yerli inkişaf serverini işə salırdı və Puppeteer MCP-dən istifadə edərək yeni söhbət başladır, mesaj göndərir və cavab alırdı. Bu, Claude-un tətbiqin xətalı vəziyyətdə qaldığını tez müəyyən edə bilməsini və mövcud xətaları dərhal düzəldə bilməsini təmin edirdi. Əgər agent bunun əvəzinə yeni funksionallıq tətbiq etməyə başlasaydı, çox güman ki, problemi daha da pisləşdirərdi.
Bütün bunları nəzərə alaraq, tipik bir sessiya aşağıdakı köməkçi mesajları ilə başlayır:
[Assistant] Əvvəlcə vəziyyəti anlayıb layihənin cari vəziyyətini başa düşəcəyəm.
[Tool Use] <bash - pwd>
[Tool Use] <read - claude-progress.txt>
[Tool Use] <read - feature_list.json>
[Assistant] Son işlənmiş tapşırıqları görmək üçün git qeydlərini yoxlayım.
[Tool Use] <bash - git log --oneline -20>
[Assistant] İndi serverləri yenidən başlatmaq üçün init.sh skriptinin olub-olmadığını yoxlayım.
<İnkişaf serverini işə salır>
[Assistant] Əla! İndi tətbiqə keçib bəzi əsas funksionallıqların hələ də işlədiyini yoxlayım.
<Əsas funksionallığı test edir>
[Assistant] Yoxlama testlərimə əsasən, əsas funksionallığın yaxşı işlədiyini görə bilirəm. Əsas söhbət xüsusiyyətləri, tema dəyişdirmə, söhbət yüklənməsi və xəta idarəetməsi hamısı düzgün işləyir. İndi növbəti addımda nəyin tətbiq edilməli olduğunu anlamaq üçün tests.json faylını daha hərtərəfli nəzərdən keçirim.
<Yeni funksionallıq üzərində işə başlayır>
| Problem | Başlatma agentinin davranışı | Kodlaşdırma agentinin davranışı |
|---|---|---|
| Claude bütün layihə üzərində vaxtından əvvəl qələbə elan edir. | Funksionallıq siyahısı faylı qurmaq: daxil olan spesifikasiyaya əsasən, uçdan-uca funksionallıq təsvirləri siyahısı olan strukturlaşdırılmış JSON faylı yaratmaq. | Sessiyanın əvvəlində funksionallıq siyahısı faylını oxumaq. İşə başlamaq üçün tək bir funksionallıq seçmək. |
| Claude mühiti xətalı və ya sənədləşdirilməmiş irəliləyişlə tərk edir. | İlkin git repo və irəliləyiş qeydləri faylı yazılır. | Sessiyanı irəliləyiş qeydləri faylını və git commit qeydlərini oxumaqla başlatmaq və sənədləşdirilməmiş xətaları tutmaq üçün inkişaf serverində əsas test keçirmək. Sessiyanı git commit və irəliləyiş yeniləməsi ilə bitirmək. |
| Claude funksionallıqları vaxtından əvvəl tamamlanmış kimi qeyd edir. | Funksionallıq siyahısı faylı qurmaq. | Bütün funksionallıqları özü yoxlamaq. Funksionallıqları yalnız diqqətli testdən sonra "keçən" kimi qeyd etmək. |
| Claude tətbiqi necə işlədəcəyini anlamağa vaxt sərf etməli olur. | İnkişaf serverini işlədə bilən init.sh skripti yazmaq. |
Sessiyanı init.sh-ı oxumaqla başlatmaq. |
Gələcək işlər
Bu araşdırma uzunmüddətli agent çərçivəsində modelin çoxsaylı kontekst pəncərələri boyunca artımlı irəliləyiş əldə etməsini təmin etmək üçün mümkün həll yollarından birini nümayiş etdirir. Lakin açıq suallar hələ də mövcuddur.
Ən əsası, tək, ümumi təyinatlı kodlaşdırma agentinin kontekstlər arasında ən yaxşı performans göstərib-göstərmədiyi, yoxsa çoxagentli arxitektura ilə daha yaxşı performans əldə oluna biləcəyi hələ aydın deyil. Test agenti, keyfiyyət təminatı agenti və ya kod təmizləmə agenti kimi ixtisaslaşdırılmış agentlərin proqram təminatı inkişaf dövrünün alt tapşırıqlarında daha yaxşı iş görə biləcəyi ağlabatan görünür.
Bundan əlavə, bu demo tam yığma veb tətbiq inkişafı üçün optimallaşdırılmışdır. Gələcək istiqamət bu tapıntıları digər sahələrə ümumiləşdirməkdir. Bu dərslərin bəzilərinin və ya hamısının, məsələn, elmi araşdırma və ya maliyyə modelləşdirməsində tələb olunan uzunmüddətli agent tapşırıqlarına tətbiq oluna biləcəyi ehtimal edilir.
Təşəkkürlər
Justin Young tərəfindən yazılmışdır. David Hershey, Prithvi Rajasakeran, Jeremy Hadfield, Naia Bouscal, Michael Tingley, Jesse Mu, Jake Eaton, Marius Buleandara, Maggie Vo, Pedram Navid, Nadine Yasser və Alex Notov-a töhfələrinə görə xüsusi təşəkkür.
Bu iş, Claude-un uzunmüddətli avtonom proqram mühəndisliyini təhlükəsiz şəkildə həyata keçirməsini mümkün edən Anthropic-in bir neçə komandasının, xüsusən kod RL və Claude Code komandalarının kollektiv səylərini əks etdirir. Töhfə vermək istəyən maraqlı namizədlər anthropic.com/careers saytından müraciət edə bilərlər.
Qeydlər
- Biz bunlara bu kontekstdə yalnız fərqli başlanğıc istifadəçi promptlarına malik olduqları üçün ayrı agentlər kimi istinad edirik. Sistem promptu, alət dəsti və ümumi agent çərçivəsi digər cəhətdən eyni idi.