Yozuvlarga qaytish
4 daq o'qishAIClaude CodeMulti-agentDevTools

To'rt agent, 77 loyiha, 90 daqiqa: prodakshnda ishlatadigan ko'p agentli Claude Code patterni

Umumiy vazifalar tekisligida nomlangan Claude Code agentlari to'dasi — koordinatsiya patterni, uni birinchi kuni buzgan poyga holati va 2200 kommitli kod bazasidagi prodakshn versiyasi.

O'tgan seshanba kuni o'tirib, so'nggi bir necha yilda yozgan har bir loyihamni audit qilishga kirishdim. 77 tasi. Eski kuryer-logistika monorepozitoriylari, tashlab qo'yilgan starterlar, klinik mulohaza dvijoki, yarim o'nlab Telegram botlar, doim qayta ishlatadigan SaaS freymvork, ikkita startap, Rust'dagi jarayon menejeri. Turli steklar, turli yosh, turli ish beruvchilar, git-gigienasining turli holatlari.

Vazifani parallel ishlaydigan to'rtta Claude Code agentiga berdim. Ular taxminan 90 daqiqada uddaladi.

Quyida ular ishlatgan pattern va nima uchun uning bir versiyasi endi asosiy ishimda 2200 kommitli prodakshn kod bazasi ichida ishlashi keltirilgan.

Nega bitta agent yetarli emas

Bitta agentli Claude Code uch devordan biriga urilmaguningizcha yaxshi.

Katta kod bazasida kontekst oynasi bo'g'ila boshlaydi. Ish chuqurligidan ko'ra kengroq, va ketma-ket o'qish real vaqtni behuda sarflaydi. Orkestrator fayl difflariga ko'milib qolmasdan, mulohazani saqlab qolishini xohlaysiz.

To'da uchalasini ham hal qiladi. Har bir agent o'z bo'lagini oladi. Lider xaritani ushlab turadi.

Qiyinchilik agentlarni yaratishda emas. Yaratish — bitta asbob chaqiruvi. Qiyinchilik — ularning to'rttasi bir-biriga xalaqit bermasligini ta'minlashda.

Pattern

Claude Code birlashtirilganda toza to'da beradigan ikkita primitiv bilan keladi.

TeamCreate + nomlangan tiममeytlar. Har bir agentda barqaror nom (analyst1, designer, metrics) bor va u umumiy vazifalar ro'yxati bilan jamoaga qo'shiladi.

Koordinatsiya uchun SendMessage. Lider istalgan tiममeytga nomi bo'yicha murojaat qiladi. Tiममeytlar navbatlar orasida bo'sh turadi va ularga xabar yozilganda uyg'onadi.

Buni TaskList bilan bog'lang — koordinatsiya tekisligini olasiz. Har bir vazifada owner maydoni bor. owner = analyst3 o'rnatish — sizning atomik lokingiz. Bu maydon o'zgarmaguncha vazifa o'sha agentga tegishli.

Audit uchun 77 ta vazifa yaratdim, har bir loyihaga bittadan. Bir xil prompt shabloni bilan to'rtta analyst tiममeytini yaratdim: loyihani kod darajasida o'qish (kommit xabarlarini emas), agar bo'lsa Claude Code sessiya transkriptlarini parslash, har bir loyiha bo'yicha dosye yozish. So'ng ularni qo'yib yubordim.

Birinchi kuni chiqargan poyga holati

Birinchi urinish: har bir tiममeyt bo'sh turganda TaskListni ishga tushiradi, egasiz eng past ID'li vazifani topadi, uni oladi, bajaradi, tugallangan deb belgilaydi, takrorlaydi.

Bu birinchi o'n daqiqa ishladi. Keyin ikki analitik bir soniya ichida bir xil vazifani ushlab oldi. Egani o'rnatgan TaskUpdate ikki marta o'tdi. Ikkalasi ham ishni bajardi. Ikkinchisi birinchi dosyeni bir xil kontentning biroz boshqacha versiyasi bilan qayta yozdi.

Klassik optimistik-konkurentlik xatosi. Tuzatish zerikarli va ishonchli: past ID'li vazifalar uchun poygalashni to'xtatish. Lider to'dani qayta ishga tushirishdan oldin butun qolgan diapazonga egalarni oldindan tayinlaydi.

Qolgan ishni to'rtta uzluksiz blokka bo'ldim (#33–43, #46–56, #57–67, #68–77) va har bir egani oldindan o'rnatdim. Endi istalgan agent ro'yxatni o'qiganda, har bir vazifa allaqachon kimgadir tegishli. Poygalashga hech narsa qolmagan. Har bir agent o'z blokini ID tartibida qayta ishlaydi va blok bo'shaganda hisobot beradi.

Prognozning qolgan qismida nol to'qnashuv.

Nima chiqdi

Oltmishta dosye fayli. Yigirma ikkitasi showcase, o'ttiz sakkiztasi supporting, o'n yettitasi skip deb belgilangan. O'tkazib yuborishlar halol edi: kommit ulushim 10%dan past bo'lgan mijoz ishlari, tashlab qo'yilgan skaffoldlar, bo'sh zagotovkalar. Maqsad shaxsiy brend auditi bo'lganda, yomon ma'lumot hech qanaqasidan yomonroq.

Eng qiziqarli topilmalar yirik loyihalarda emas edi. Ular kesishmalarda edi. Mening «fullstack» boilerplate'im jimgina to'rtta mahsulot ostidagi poydevorga aylangan edi. Bir xil kod bazasi beshta turli mijozda paydo bo'ldi. Bitta tibbiy CRM'da kommitlarim 2208 dan 962 tasini tashkil qildi (top-hissador), garchi tayangan sirtqi metama'lumotlar atigi ~700 desa ham. Qo'lda yozilgan git tarixi ma'lumot yo'qotadi. Umumiy chiqishli to'da bu tafovutni tutadi.

Prodakshn versiyasi

Bu havaskorlik patterni emas. Xuddi shu ko'p agentli Claude Code vorkflowi asosiy ishimda tibbiy CRM'imizda 2200 kommitli kod bazasida ishlaydi. U yerdagi CLAUDE.md to'rtta maxsus subagent belgilaydi:

  • django-backend-specialist — modellar, vyuxalar, URL'larga egalik qiladi.
  • advertiser-frontend-developer — reklama beruvchi dashbordiga egalik qiladi.
  • patient-frontend-specialist — bemor portaliga egalik qiladi.
  • linting-specialist — oxirgi bo'lib ishga tushadi, diffga egalik qiladi.

Agentlararo aniq shartnoma bor. Backend vyuxani o'zgartirsa, u yangi endpoint, URL, javob shaklini xabar qiladi. Frontendlar boshlashdan oldin bu ma'lumotni so'rashni biladi. Linting zanjirning oxirida ishga tushadi, o'rtasida emas. Orkestrator (men) arxitekturani ushlab turadi. Agentlar fayl difflarini ushlab turadi.

Shu pattern bilan chiqaradigan mahsulotlardan biri — prouniforma_full deb nomlangan ichki-asboblar qayta qurilishi — kommitlarning taxminan 29% mening rahbarligimda AI muallifligida. Qolgan 71% meniki. Bo'linish git shortlogda ko'rinadi. Yashiradigan narsa yo'q, shishiradigan narsa yo'q.

Halol qismi

Bu senior muhandislik mulohazasini o'rniga qo'ymaydi. Orkestrator baribir yaxshi nima ekanini bilishi kerak. Analitik zaif dosye qaytarganda, buni tanib, qayta ishlashni so'rashingiz kerak. Ikki agent bir-biriga qarshimi? Buni siz hal qilasiz.

Bu beradigan narsa — richag. To'dali bitta muhandis staff darajasidagi maydonni qamrab oladi. To'siq yozish tezligidan mulohaza sifatiga siljiydi — bu esa to'g'ri to'siq.

To'da haqiqatda nima ishlab chiqarganini ko'rmoqchi bo'lsangiz, 60 ta dosye davr.dev/projects da. Har biri marketing matni emas, kod darajasidagi audit.

— Davron Yuldashev · github.com/Dave93 · @YulDavr

Muallif
Davron Yuldashevdavr.dev