Fəsil 06 · 7 dəq oxu

Planning və multi-agent workflow-lar

Planning və multi-agent workflow-lar

Agentic coding-də ən bahalı səhv yanlış kodu yazmaq deyil, yanlış şeyi düzgün yazmaqdır. on dəqiqə işləyir, yüz sətir dəyişir, test-lər keçir, sonra məlum olur ki, tapşırığı siz nəzərdə tutduğunuzdan fərqli başa düşüb. Bu, model-in zəifliyi deyil; bu, təsvirin natamamlığıdır. İnsan developer-ə də "login-i düzəlt" deyəndə o əvvəlcə suallar verir. isə sual vermək imkanı və planı sizə göstərmək imkanı qəsdən verilməlidir. Bu fəsil həmin imkanı, yəni planning-i, və onun üstündə qurulan workflow-ları izah edir.

Niyə əvvəlcə plan

Agent loop-unda hər addım əvvəlkinin üstünə qurulur. Səhv ilk qərar, məsələn yanlış faylda dəyişiklik və ya mövcud abstraksiyanı görməmək, sonrakı bütün addımları zəhərləyir və context-i boşa xərcləyir. Plan isə ucuzdur: bir neçə yüz token-lik mətn, oxunması bir dəqiqə çəkir və səhvi iş başlamazdan əvvəl tutur.

Praktik qayda belədir: bir-iki fayla toxunan, aydın tapşırıq üçün birbaşa icra. Üçdən çox fayla toxunan, dizayn qərarı tələb edən və ya tanımadığınız kod sahəsinə girən tapşırıq üçün əvvəlcə plan. Plan-ı oxumaq yüz sətir diff oxumaqdan həmişə asandır.

Plan mode

Claude Code-da plan mode xüsusi permission rejimidir: faylları oxuyur, axtarış edir, düşünür, amma heç nəyi dəyişmir və command işlətmir. Nəticə sizə təqdim olunan plandır; siz onu təsdiqləyir, düzəldir və ya rədd edirsiniz. Rejimə keçmək üçün session-da Shift+Tab ilə rejimləri dövr etmək və ya session-ı birbaşa bu rejimdə açmaq olar:

claude --permission-mode plan

Plan mode-un dəyəri read-only olmasındadır. "əvvəlcə araşdır, sonra dəyişmə təklifi ver" demək də olar, amma model bəzən səbirsizlənib dəyişikliyə başlayır. Plan mode bunu harness səviyyəsində qadağan edir: hətta model istəsə də, Edit və Bash icazəsiz keçmir. Təsdiqdən sonra siz rejimi dəyişirsiniz və eyni session plan üzrə icraya keçir, araşdırmanın nəticəsi context-də qaldığı üçün heç nə təkrar oxunmur.

Yaxşı plan sorğusu konkret olur. "Auth modulunu refactor et" əvəzinə: "Session-ların Redis-ə köçürülməsi üçün plan hazırla: hansı fayllar dəyişəcək, hansı interface-lər pozulacaq, hansı test-lər əlavə olunacaq, hansı sıra ilə, və hansı addımda mümkündür." Planın özü də yoxlanılmalıdır: mövcud helper-i yenidən yazmağı təklif edirsə, modelin repository-ni kifayət qədər oxumadığının əlamətidir.

Spec-driven development

Plan mode session daxilində işləyir; spec isə session-dan kənarda yaşayır. Spec-driven development-də əvvəlcə faylda, məsələn specs/search.md, nə qurulacağı yazılır: məqsəd, istifadəçi ssenariləri, qəbul meyarları, qeyri-məqsədlər, məhdudiyyətlər. Sonra spec verilir. Üstünlükləri birinci fəsildən tanışdır: spec disk-də yaşayır, /clear-dən sonra da qalır, başqa session-a və başqa verilə bilir, version control-dadır.

Spec yazmağın iki tələsi var. Birincisi, çox detallı spec: implementasiyanı sətir-sətir diktə etmək araşdırma qabiliyyətini boşa çıxarır. İkincisi, çox ümumi spec: "yaxşı axtarış olsun" cümləsi ilə öz fərziyyələri ilə doldurur. Doğru səviyyə qəbul meyarlarıdır: nə test ediləcəksə, o yazılır. "Axtarış 300 ms-dən tez cavab verir, boş sorğuda bütün nəticələri qaytarır, diakritik işarələrə həssas deyil" kimi cümlələr həm , həm də test-lərə bələdçidir.

Yaxşı praktika spec-dən plana, plandan isə addım-addım icraya keçməkdir: spec → plan mode-da plan → təsdiq → icra → test. Hər keçid insanın baxış nöqtəsidir və hər biri bir səviyyə yuxarıda səhvi tutur.

Böyük işi bölmək

bir session-da nə qədər çox iş görürsə, context o qədər dolur və keyfiyyət o qədər düşür. Böyük kiçik, yoxlanıla bilən addımlara bölmək context engineering-in birbaşa nəticəsidir. Hər addımın öz meyarı olmalıdır: "data modeli və onun test-ləri", sonra "API endpoint-i", sonra "UI". Addım bitəndə commit və /clear; növbəti addım təmiz context ilə başlayır və planı fayldan oxuyur.

Bu bölgü başqa bir imkan açır: addımlar bir-birindən asılı deyilsə, onları paralel işlətmək olar. Burada workflow-lar başlayır.

Multi-agent workflow-ların üç forması

. Əsas tapşırığın bir hissəsini ayrı işləyən verir və nəticəni alır. Bu, bir session daxilində paralellikdir: üç eyni anda üç fərqli modulu araşdırır və ya üç variant yaradır. 7-ci fəslin mövzusudur.

Paralel session-lar. Bir-birindən asılı olmayan iki üçün iki ayrı Claude Code session-ı açmaq olar. Problem eyni working directory-dir: iki eyni faylı dəyişsə, nəticə qarışır. Həll git worktree-dir: hər session öz worktree-sində, yəni eyni repository-nin ayrı checkout-unda və ayrı branch-ında işləyir.

git worktree add ../relnotes-search feature/search
cd ../relnotes-search && claude

Hər worktree ayrı qovluqdur, amma eyni git tarixçəsini paylaşır. İş bitəndə branch-lar adi qaydada merge olunur. Claude Code-un özündə də session-ı birbaşa yeni worktree-də açan seçim var; əsas prinsip dəyişmir: paralel paralel qovluqlarda.

İerarxik delegasiya. Bir orkestrator planı hissələrə bölür, hər hissəni worker verir, nəticələri birləşdirir və yoxlayır. 2-ci fəsildəki infinite agentic loop bunun sadə nümunəsidir; 11-ci fəsildəki deep isə eyni ideyanı kitabxana səviyyəsində rəsmiləşdirir. İerarxiyanın qiyməti koordinasiyadır: orkestrator hər worker-in nəticəsini context-ində saxlayır, buna görə worker-lər qısa, strukturlu hesabat qaytarmalıdır.

FormaContextKoordinasiyaNə vaxt
Hər biri ayrı, nəticə əsas qayıdırAvtomatik, harness daxilindəAraşdırma, variantlar, review
Paralel session-larTam müstəqilSizin üzərinizdə, git iləAsılı olmayan
İerarxik delegasiyaOrkestrator-da toplanırOrkestrator-un planı iləBöyük, bölünə bilən işlər

Plan-dan icraya

Təsdiqlənmiş plan icra üçün hazır deyil; onu icra edilə bilən addımlara çevirmək lazımdır. Yaxşı plan addımlarının hər birinin üç xüsusiyyəti var: aydın başlanğıc vəziyyəti, yoxlanıla bilən son vəziyyəti və bir commit-ə sığan ölçüsü. "Axtarış funksiyasını yaz" addım deyil; "search(query) funksiyasını və onun beş test-ini yaz, test-lər keçsin" addımdır.

Claude Code icra zamanı addımları task list kimi göstərir: planın bəndlərini yazır, hər birini bitirdikcə işarələyir və siz hər anda işin harada olduğunu görürsünüz. Bu siyahı yalnız sizin üçün deyil; 11-ci fəsildə görəcəyimiz kimi, context-də dayanan plan model-in uzun tapşırıqda məqsədi itirməməsinin əsas mexanizmidir. Addımlar arasında fasilə vermək, yəni commit, qısa review, lazım olanda /compact, hər addımı təmiz context ilə başlatmağın ən sadə yoludur.

Plan icra zamanı dəyişə bilər. ikinci addımda birinci addımın fərziyyəsinin səhv olduğunu görəndə dayanıb deməlidir, davam etməməlidir. Bunu açıq yazmaq lazımdır: "plan-dan kənara çıxmalı olsan, əvvəlcə məni məlumatlandır". Plan canlı sənəddir, amma onu dəyişən yox, siz olmalısınız.

Orkestrasiya pattern-ləri

işin bir neçə təkrarlanan forması var və hər birinin öz koordinasiya qaydası var:

Fan-out, fan-in. Bir iş bir-birindən asılı olmayan hissələrə bölünür, hər hissə ayrı gedir, nəticələr bir yerə yığılır. Üç modulun paralel araşdırması, beş variantın paralel generasiyası, on faylın paralel review-u. Qayda: hissələr həqiqətən müstəqil olmalıdır və fan-in mərhələsində birləşdirmə məntiqi, yəni konfliktlərin necə həll olunacağı, əvvəlcədən bilinməlidir.

Pipeline. Hər əvvəlkinin çıxışını alır: spec yazan → plan hazırlayan → icra edən → review edən. Hər mərhələ ayrı context-dir və mərhələlər arasında fayl keçir, söhbət yox. Qayda: hər mərhələnin çıxış formatı sabitdir; mərhələ öz girişini yoxlayır və uyğun gəlməyəndə geri qaytarır.

Generator və reviewer. Bir yazır, ikinci yoxlayır, birinci düzəldir. Bu, insan review-unun arasında təkrarıdır və xüsusilə faydalıdır, çünki yazan öz səhvini görməyə meylli deyil; təmiz context-li reviewer onu görür. Qayda: reviewer-in tool-ları yalnız oxumaqdır və dövrün iterasiya limiti var; iki bir-birini sonsuz düzəltməməlidir.

Üç pattern-in ortaq tələbi aydın interfeyslərdir: arasında keçən şey strukturlu mətn və ya fayldır. Söhbət tarixçəsini bir digərinə ötürmək context-i də, qarışıqlığı da ötürür.

Multi-agent sistemin dizayn qaydaları

Paralellik pulsuz deyil. Bir neçə qayda onu idarə olunan saxlayır:

  • Aydın sərhəd. Hər hansı fayllara toxunduğu əvvəlcədən bilinməlidir. İki eyni modulu dəyişirsə, bölgü səhvdir.
  • Strukturlu nəticə. Worker "bitdi" yox, "dəyişdirilən fayllar, əlavə olunan test-lər, açıq suallar" formatında qaytarmalıdır. Orkestrator-un context-i bu formatla qorunur.
  • Müstəqil yoxlama. Hər hissənin öz test-i olmalıdır; birləşdirəndən sonra ümumi test yenidən işləməlidir. Paralel hər biri "mənim hissəm işləyir" deyə bilər, amma inteqrasiya səhvi yalnız birlikdə görünür.
  • İnsan nöqtələri. Plan təsdiqi, merge öncəsi review, production-a toxunan hər addım. Avtomatlaşdırma bu nöqtələri silməməli, onlara qədər olan işi sürətləndirməlidir.

Bu qaydaların hamısı eyni fikrə qayıdır: workflow planın icrasıdır, planın əvəzi deyil. Plan zəifdirsə, beş səhvi beş dəfə sürətli edir.

Tapşırıqlar

  1. Layihənizdə orta ölçülü bir dəyişiklik seçin və onu plan mode-da planlaşdırın. Planda modelin yanlış fərziyyəsini tapın: mövcud kodu görməyib, yoxsa tələbi fərqli başa düşüb? Sorğunuzu dəqiqləşdirib planı yenidən alın və iki planı müqayisə edin.
  2. Bir üçün spec yazın: məqsəd, qəbul meyarları, qeyri-məqsədlər. Spec-i iki ayrı session-a verin və nəticələrin hansı hissələrdə ayrıldığını yoxlayın. Ayrılan hissələr spec-də natamam idi, yoxsa variasiya məqbuldur?
  3. Asılı olmayan iki kiçik tapşırığı iki git worktree-də paralel session-larla işlədin. Birləşdirəndə konflikt çıxdımı? Çıxdısa, bölgünü necə dəyişmək lazım idi?