Paralel Antigravity Agents ile Çok Dilli Kod Denetleyicisi Oluşturma

1. Giriş

3072ce11df4b71eb.jpeg

Bu codelab'de, Antigravity'de paralel çoklu aracı düzenlemesini kullanarak çok dilli bir kod kalitesi denetimi ve otomatik düzeltme sistemi oluşturacaksınız. Birden fazla ayrı hizmet dizininin geleneksel, manuel ve doğrusal olarak incelenmesi yerine, farklı dil yığınlarını paralel olarak incelemek için özel yapay zeka alt aracıları dağıtacaksınız.

Proje düzenini keşfetmek, birim testini yürütmek için alt aracıları yönetmek, denetim planı oluşturmak, uygunluk için tarama yapmak, denetim raporu oluşturmak ve kod tabanındaki yüksek öncelikli kodlama sorunlarını bağımsız olarak yeniden düzenlemek için bir koordinatör aracı oluşturacaksınız.

Neler öğreneceksiniz?

  • Proje Keşfi: Karmaşık bir mikro hizmet mimarisinde dizinleri haritalandırmak ve programlama dillerini algılamak için koordinatör aracısının nasıl dağıtılacağı.
  • Düzenlenmiş Paralellik: Kod denetimlerini ve birim testlerini bağımsız, dile özgü yapay zeka alt temsilcileri arasında eşzamanlı olarak dağıtma.
  • İnsan Destekli Denetim: Bir koordinatör ajanı, denetim planı oluşturmaya ve yürütülmeden önce incelemeniz ve onayınız için güvenli bir şekilde duraklatmaya nasıl yönlendirebilirsiniz?
  • Otomatik Düzeltme: Yüksek öncelikli kodlama ve uyumluluk sorunlarını bağımsız olarak yeniden düzenlemek ve çözmek için özel geliştirici alt aracılarını dağıtma.
  • Doğrulama Döngüleri: Regresyon oluşmadığından emin olmak için test paketlerini otomatik olarak yeniden çalıştırarak yapay zeka tarafından oluşturulan kod değişikliklerini doğrulama.

İhtiyacınız olanlar

Bu codelab için aşağıdaki araçların yerel olarak yüklü olması gerekir:

  • Google Antigravity
  • Git
  • Ortamınızda aşağıdaki dillerden biri veya daha fazlası ayarlanmış olmalıdır: Go, Python, C# / .NET, NodeJS, Java

Haydi, başlayalım.

2. Ortam Kurulumu

Öncelikle Antigravity'nin yüklü olduğundan emin olun.

İkinci olarak, bulut mikro hizmetleri demo uygulaması olan Online Boutique'i klonlayın:

git clone https://github.com/GoogleCloudPlatform/microservices-demo.git

Kodla Antigravity'de yeni bir proje oluşturun. Antigravity'de soldaki Projects bölümünde Create New Project simgesini seçin:

e8b14447dfcc289b.png

Depo klasörünü seçin:

b39f0b1843ef1f3d.png

Default için Agent Security Settings modunu seçebilir ve proje için aynı adı microservices-demo kullanabilirsiniz.

3. Discovery

Mikro hizmet mimarisinde, kod tabanı genellikle birden fazla klasör veya depo ve programlama yığınına yayılan birden fazla hizmet içerir. Bu durum, Online Boutique demo uygulaması için de geçerlidir.

Aracıları başlatmadan önce proje düzenini keşfedelim. Bu ilk adımda, Antigravity ile src/ altında farklı dillerde çeşitli mikro hizmetleri keşfeden bir koordinatör aracısı dağıtacaksınız ve sonraki adımlarda her mikro hizmet üzerinde çalışmak için dile özgü alt aracıları koordine edeceksiniz.

Öncelikle koordinatör aracısından kod tabanını incelemesini, hangi dizinlerde hangi hizmetlerin bulunduğunu ve hangi dillerin kullanıldığını belirlemesini isteyelim.

Antigravity'de, daha önce oluşturduğunuz microservices-demo projesinde yeni bir sohbet başlatın. Model olarak, orta düzeyde düşünme seviyesine sahip en yeni Gemini modelini kullanabilirsiniz:

1a88687c5fe37b04.png

Şu istemi deneyin:

Identify all the microservices located under the src/ directory,
detect which programming language each service is written in, and
output the list as a clean markdown table showing: Service Name,
Directory, and Primary Language.

Sonunda Antigravity, hizmetlerin ve birincil dillerinin yer aldığı güzel bir tabloyla geri dönmelidir. Bu tablo, aşağıdakine benzer olmalıdır:

2e37b2e607596573.png

4. Dil seçme

Kod tabanını haritalandırdığınıza göre, artık çalışmak istediğiniz dilleri seçmeniz gerekiyor. Seçtiğiniz diller için gerekli derleyicilere/araçlara (ör. C# için dotnet aracı, Java için javac vb.) sahip olduğunuzdan emin olmanız gerekir.

Çalışmak istediğiniz dilleri seçtikten sonra, ilgili birim testlerini çalıştırarak mevcut kod tabanının durumunu doğrulamanız çok önemlidir.

Her dilde test paketleri çalıştırmak için özel, paralel alt aracılar kullanabilirsiniz. Bu seçenek, çok ajanlı iş akışının temel gücünü vurgular: ayrı dil tabanlı çalışma alanlarında eşzamanlı olarak izole testler çalıştırma.

Aşağıdaki istemi ortamınıza göre uyarlayıp çalıştırın:

I have [C#, Python, Go, Java, Node.js] setup locally. 
Run the unit tests for services in these languages 
in parallel subagents and report back in a clean markdown 
on their pass/fail status.

Her dilde test çalıştıran birden fazla temsilci görmeniz gerekir. Araçları çalıştırmak için izin isteyen her bir alt aracıyı aşağıdaki gibi incelediğinizden emin olun:

a3c1834909975020.png

Tüm alt aracılar tamamlandığında, birim testleriyle ilgili aşağıdaki gibi güzel bir rapor alırsınız:

e8ce8e16f195ea8c.png

5. Denetimi planlama

Plan

Karmaşık iş akışlarında, plan yapmadan kod değişikliklerini başlatmak çakışmalara yol açabilir. Denetlemek istediğimiz şeylerin yapılandırılmış ve şeffaf bir planını oluşturmak istiyoruz. Koordinatör temsilciden kod kalitesi kontrolleri, istisna işleme, sorgu temizliği kontrolleri vb. içeren bir denetim planı oluşturmasını isteyeceksiniz.

İnsan gözetimini (insan müdahalesi) sağlamak için koordinatör, planı bir yapay nesneye yazar ve incelemeniz için hemen duraklatır.

Denetim planı oluşturmak için şu istemi deneyin:

We want to audit these microservices for code quality, 
exception handling and database query formatting standards 
for the languages I have set up locally. Design an audit plan 
detailing what you will check and save it as an Audit Plan artifact.
Do not execute the audit yet. Stop after writing the plan and wait
for my instructions.

Sohbette bir Denetim Planı eseri görmelisiniz:

a7eb6b75b28fd788.png

İncele

Şimdi, doğru dosya ve standartları hedeflediğinden emin olmak için oluşturulan denetim planını inceleyeceksiniz. İsteğe bağlı olarak, devam etme izni vermeden önce özel kısıtlamalar (ör. satır içi yorumları veya stil kılavuzlarını kontrol etme) ekleyebilirsiniz.

Oluşturulan denetim planını tıkladığınızda ayrıntılı planı görürsünüz:

9b36c0ca827fdc53.png

İsteğe bağlı: Planda değişiklik yapmak ve plandan memnun kalana kadar yinelemek istiyorsanız plana yorum ekleyebilirsiniz (ör. "Tüm herkese açık yöntemlerin iyi bir şekilde belgelendiğinden emin olun").

6. Denetimi Yürütme

Yürüt

Denetim planı onaylandıktan sonra denetimi gerçekleştirelim. Koordinatör aracı, her dil yığını için bağımsız paralel alt aracılar oluşturur. Her aracı, kendi hizmet klasöründe eşzamanlı olarak çalışır. Bu sayede dosya çakışmaları önlenir ve tarama süreci hızlandırılır. Koordinatör temsilci, bulguları birleştirerek tek bir kalite kontrol paneli oluşturur.

Bir sonraki denemeniz için istem:

Execute the audit plan by spawning the parallel language subagents.
Once they finish scanning, collect their findings into an audit 
report artifact, sorted by language and then priority. Include the 
file paths, line ranges, snippets, and explanation of why it is a 
finding. Stop after writing the report.

Birden fazla temsilciyi tekrar görmelisiniz:

9c282924eb33cc34.png

Her bir alt aracıyı izlediğinizden ve denetimlerini yapabilmeleri için gerekli izinleri verdiğinizden emin olun. Sonunda bir denetim raporu yapısı görmelisiniz:

6706295f5cf7292b.png

İncele

Denetim raporunu açtığınızda her dil için ayrıntılı bulguları da görmeniz gerekir. Örneğin, C# dilinde cartservice ile ilgili yüksek öncelikli bir sorun aşağıda verilmiştir:

aca90d0da393bffc.png

Bulguları görmek için denetleme raporunun geri kalanına göz atın.

7. Düzeltme

Kod kalitesi sorunlarını teşhis etmek, işin yalnızca yarısıdır. Şimdi sorunları çözmek için temsilcileri kullanacağız. Kodu manuel olarak yazmak yerine yeniden düzenleme işlemini, kodu en iyi uygulamalara uygun şekilde yeniden yazabilen dil kapsamlı geliştirici alt aracılarına devredebiliriz.

Bunu denemenin farklı yolları vardır:

  1. Her dil için birer temsilci oluşturabilir ve tüm temsilcilerin tüm sorunları aynı anda düzeltmesine izin verebilirsiniz. Bu yöntem işe yarayabilir ancak aynı anda takip ve inceleme yapmak çok zor olabilir.
  2. Tek seferde bir dil için bir temsilci oluşturabilir ve bu dilin sorunlarını temsilcinin ele almasını sağlayabilirsiniz. Bu yöntem daha yönetilebilir olsa da aracının birden fazla dosyada birden fazla değişiklik yapabileceğine güvenmeniz gerekir.
  3. Bir temsilcinin her seferinde bir sorunla ilgilenmesini sağlayabilir ve bir sonraki soruna geçmeden önce sonucu kontrol edebilirsiniz. Bu daha temkinli bir yaklaşımdır ancak her değişiklikten haberdar olmanızı da sağlar.

Aşağıdaki istemle birlikte daha tutucu olan 3. yaklaşımı kullanacağız:

Select the top high-priority finding in [pick a language, e.g., C#]
and remediate the finding. Show me the code changes once complete.

Birkaç saniye sonra, aracının seçtiğiniz dilde en yüksek öncelikli sorunu çözdüğünü görmeniz gerekir.

Son olarak, temsilcinin neyi değiştirdiğini gösteren bir Walkthrough (Adım Adım Açıklama) öğesi de alabilirsiniz:

9e79c7bb1e102aee.png

İsteğe bağlı: Bu noktada, temsilciden uygulamayı değiştirmesini isteyebilir veya değişikliklerden memnunsanız değişiklikleri kapsayacak yeni bir birim testi eklemesini isteyebilirsiniz.

8. Doğrulama

Yazılım geliştirmede, düzeltme doğrulanana kadar tamamlanmış sayılmaz. Bu son adımda, kod değişikliklerinin gerilemeye neden olmadığından emin olmak için temsilciden test paketini çalıştırmasını ve sorunun tamamen çözüldüğünü doğrulamak için denetim tarayıcısını yeniden çalıştırmasını isteyebiliriz.

Bu adımda, planlama, tarama, düzeltme ve doğrulama işlemlerinin tamamını içeren otomatik geri bildirim döngüsü gösterilmektedir.

Aşağıdaki istemi çalıştırın:

Rerun the unit tests for the changed language. If they pass, rerun
the relevant audit agent to check if the finding is resolved. If it 
is resolved, mark the issue as resolved in the audit report.

Test Runner alt aracısının testleri çalıştırdığını ve ardından Auditor alt aracısının Denetim Raporu'nu güncellediğini görmeniz gerekir. Son olarak, Denetim Raporu'nun en son durumla güncellendiğini görürsünüz:

36ac20baa92d1602.png

Bir sorun çözüldü. Şimdi, diğer sorunları inceleyebilirsiniz. Belki bu sefer daha az muhafazakar bir yaklaşım benimseyerek incelemeden önce temsilcilerin daha fazla iş yapmasına izin verebilirsiniz.

9. Tebrikler

Tebrikler! Antigravity'yi kullanarak karmaşık bir çok dilli kod incelemesini ve otomatik düzeltme iş akışını tamamladınız.

Antigravity'nin çoklu aracı mimarisinden yararlanarak yalnızca statik kontrolleri otomatikleştirmiş olmadınız, aynı zamanda otomatik bir kalite güvencesi ekibi de oluşturmuş oldunuz. Dil uzmanı temsilciler eş zamanlı olarak dile özgü sorunlar üzerinde çalışırken koordinatör temsilciniz merkezi bir plan ve rapor derledi, ardından hedeflenen bir kod yeniden düzenlemesini yönetti.

Temel Çıkarımlar

  • Düzenlenmiş Paralellik: Denetimleri ve testleri paralel olarak çalışan bağımsız, dile özgü alt aracılar arasında nasıl dağıtacağınızı öğrendiniz. Böylece, doğrusal inceleme darboğazlarını önleyebilirsiniz.
  • Human-in-the-Loop: Oluşturulan denetim planını yürütmeden önce inceleyip açıklama ekleyerek otonom işlemler üzerinde denetimi sürdürdünüz.
  • Otomatik Düzeltme ve Doğrulama: Yapay zeka aracıların yalnızca kod kalitesiyle ilgili tutarsızlıkları teşhis etmekle kalmayıp kodu yeniden düzenleyebileceğini ve kendi değişikliklerini yerel test paketlerine göre doğrulayabileceğini gördünüz.