CI hatasını yapay zekâya düzelttirmek, en sık tekrar eden ve en sıkıcı işlerden birini elinden alır. Bir push atarsın, on dakika sonra GitHub Actions kırmızıdır. Logu açarsın, iki yüz satır kaydırırsın, bir tip hatası ya da unutulmuş bir snapshot bulursun, düzeltir, tekrar push edersin. Aynı şey PR yorumları için de geçerli: “bu değişkenin adını değiştir”, “burada null kontrolü eksik” gibi küçük yorumlar birikir ve her biri bağlam değiştirmeni ister.
Bu yazıda bu işleri bir yapay zekâ ajanına nasıl devredeceğini anlatıyorum: hangi olayda başladığını, hangi sınırlarla çalıştığını, işi nasıl teslim ettiğini ve sen ana dala almadan önce neye bakman gerektiğini.
Neden elle düzeltmek pahalı?
Kırmızı bir CI’ı düzeltmek çoğu zaman zor değildir. Pahalı olan bağlam değiştirmektir:
- Başka bir işin ortasındasın. Kırmızı CI bildirimi gelince elindeki işi bırakırsın.
- Logu okumak zaman alır. Asıl hata genelde yüzlerce satırın arasındadır; ilk kırmızı satır çoğu zaman asıl hata değildir.
- Yerelde tekrar üretmek gerekir. CI’daki komutu bulup yerelde çalıştırmak, ortam farklarını ayıklamak ayrı bir iştir.
- Yorumlar parça parça gelir. Bir incelemede altı yorum varsa altısını da okuyup her birine dönmen gerekir.
Bu işlerin ortak noktası, adımlarının belli olmasıdır. Belli adımları olan iş, bir ajana devredilebilecek iştir.
Tetikleyiciler: ajan ne zaman başlar?
AgentVera’da otomasyonlar Detaylar → Otomasyon → Otomasyonlar bölümündedir. Bir kural, bir olay olduğunda işi kendiliğinden başlatır. Bu yazıyla ilgili iki tetikleyici var:
CI kırmızı oldu
Bu tetikleyici, CI/CD sekmesine eklediğin sağlayıcıları izler: GitHub Actions, GitLab CI ve Jenkins. Dallar alanını boş bırakırsan tüm dallar izlenir; main, release/* gibi bir liste yazarsan yalnızca bu dallar.
Bazı çalıştırmalar bilerek atlanır. Fork’tan gelen PR’ların çalıştırmaları ve GitLab’in merge request çalıştırmaları kural tetiklemez. Fork’un dalı ve logu deponun dışındaki birine aittir; kural yalnızca düzeltme gönderebileceğin dallara tepki verir.
PR’a yorum geldi
Açık PR’lara gelen yeni inceleme ve sohbet yorumları 2 dakikada bir okunur. Burada da filtreler var:
- Yalnızca depo sahibi, üyesi ya da katkıcısının yorumları sayılır. Rastgele birinin yorumu ajanı çalıştırmaz.
- Botların yorumları sayılmaz. AgentVera’nın kendi yanıtları da işaretlidir ve tekrar işlenmez.
- Aynı PR’da çalışan bir ajan varsa yeni yorumlar ona gider; ikinci bir ajan açılmaz.
- Günlük sınır dolduysa yorumlar kaybolmaz, sonra yeniden okunur.
PR yorumu ve issue tetikleyicileri için deponun origin’i GitHub’da olmalı ve bilgisayarda GitHub girişi yapılmış olmalı.
Olaylar masaüstü uygulaması tarafından izlenir; kuralların çalışması için AgentVera’nın bilgisayarında açık olması gerekir.
Hazır kurallar
Projede hiç kural yoksa AgentVera hazır kurallar önerir. CI ve PR için ikisi doğrudan iş görür:
| Hazır kural | Ne yapar |
|---|---|
| CI kırılınca düzelt | Kırmızı çalıştırmanın logunu alır, düzeltir; özellik dalına push eder, ana dal için PR açar |
| PR yorumlarını işle | Açık PR’lara gelen inceleme yorumlarını uygular, PR dalına push eder ve yanıt yazar |
Diğer ikisi “ajan” etiketli issue’ları yapan ve her pazartesi bağımlılık güncelleyen kurallardır.
Ajan ne yapar?
Kural tetiklenince ajan yeni bir worktree’de, ajan/ ile başlayan yeni bir dalda çalışmaya başlar. Dalın tabanı olayın dalıdır: kırmızı çalıştırmanın dalı ya da PR’ın dalı. Senin çalışma klasörüne dokunulmaz. Git tarafından yok sayılan .env dosyaları worktree’ye kopyalanır ki testler çalışabilsin, ama hiçbir zaman push edilmez.
Ajan, kuralın Şablon alanındaki adımları izler. CI için varsayılan şablon “CI hatasını düzelt”tir:
- Logdaki ilk gerçek hatayı bul.
- CI’daki komutu yerelde çalıştırıp hatayı tekrar üret.
- Kök nedeni düzelt; sorun CI ayarındaysa (workflow, sürüm, ortam değişkeni) onu düzelt.
- CI komutlarını yerelde yeniden çalıştırıp geçtiğini gör.
PR yorumları için varsayılan şablon “PR yorumlarını işle”dir: her yorumu ve işaret ettiği kodu oku, haklı yorumları uygula, katılmadığın yerde gerekçeni yaz, testleri çalıştır ve yanıtta her yorum için ne yaptığını listele.
Şablonları değiştirebilirsin. Kendi şablonunu bu bilgisayara ya da depoya kaydedebilirsin; depoya kaydedilenler .agentvera/playbooks/ altına yazılır, git üzerinden ekiple paylaşılır ve aynı adlı yerleşik şablonun yerine geçer.
Kuralı daraltmak için Ek talimat alanını kullan. Örneğin: “Yalnızca testleri ve tip hatalarını düzelt; API sözleşmesini değiştirme.”
Ajan alanında Claude Code ya da Codex seçersin.
Sınırlar: ajanı ne durdurur?
Otomatik çalışan bir ajanın iyi olması yetmez, sınırlı olması da gerekir. AgentVera’da bu sınırlar şöyle:
- Günlük sınır. Her kuralın bir Günde en fazla değeri vardır: 1 ile 50 arası, varsayılan 5. Son 24 saat sayılır. Elle başlattığın çalıştırmalar bu sınıra takılmaz.
- Dal başına sınır. Aynı dal için günde en fazla 2 otomatik CI düzeltmesi denenir ve aynı dal için aynı anda yalnızca bir düzeltme çalışır ya da sırada bekler. Düzeltme CI’ı yine kırarsa ajan sonsuza kadar dönmez.
- Dış metin talimat değildir. CI logu, PR yorumu ve issue metni ajana güvenilmeyen dış metin olarak verilir; bu metin yalnızca işi tarif eder. Ajana sır paylaşmaması, işle ilgisiz komut çalıştırmaması ve veriyi başka yere göndermemesi söylenir.
- Push’u ajan yapmaz. Ajan yalnızca commit eder. Push etmek ve PR açmak AgentVera’nın işidir, ajan teslim ettikten sonra yapılır.
- Gizli dosya taraması. Push’tan önce her commit ve son hâl gizli dosyalar için taranır:
.envdosyaları,.pemve.keygibi anahtarlar,id_rsa,.npmrc,.netrc,credentials.jsongibi dosyalar..env.examplegibi örnek dosyalar serbesttir. Biri bulunursa hiçbir şey push edilmez ve çalıştırma başarısız olur. - Takılan ajan durur. Ajan yardım isterse, sessiz kalırsa ya da kapanırsa çalıştırma “ilgi bekliyor” durumuna geçer ve sana bildirim gelir.
Teslim: iş nereye gider?
Ajan işini bitirince ne olacağını Teslim edince alanı belirler:
| Seçenek | Ne olur |
|---|---|
| Otomatik (CI dalına push, ana dala PR) | Hata bir özellik dalındaysa o dala push, varsayılan daldaysa PR |
| PR aç | Her zaman PR |
| Aynı dala push et | Olayın dalına push; varsayılan dal ise yine PR |
| Birleştirme kuyruğuna ekle | Dal kuyruğa girer, birleşmiş hâli test edilir |
| Dalda bırak | Hiçbir şey push edilmez, dal sende kalır |
Değişmeyen kural şu: AgentVera varsayılan dala hiçbir zaman doğrudan push etmez. Ajan hiçbir değişiklik yapmadıysa çalıştırma “değişiklik yok” notuyla biter.
PR yorumlarında teslim edilen iş PR dalına push edilir ve AgentVera PR’a, ajanın her yorum için ne yaptığını anlatan bir yanıt yazar.
Birleştirme kuyruğunu seçmenin avantajı, düzeltmenin ana dalın son hâli üzerinde bir kez daha test edilmesidir. Kuyruğun nasıl çalıştığını birleştirme kuyruğu yazısında anlatıyorum.
Ana dala almadan önce inceleme
Otomatik düzeltme, otomatik kabul demek değildir. Ajanın işini gözden geçirmenin birkaç yolu var:
- PR’ın kendisi. Ana dal hataları zaten PR olarak gelir. Diff’e bakar, CI’ın yeşile döndüğünü görür, normal bir PR gibi birleştirirsin.
- Birleştirme kuyruğunda onay. Kuyrukta Geçenleri kendiliğinden ana dala al varsayılan olarak kapalıdır; kontrolü geçen iş senin onayını bekler.
- Dalda bırakmak. Kuralın ilk haftalarında Dalda bırak seçip dalları elle incelemek en temkinli yoldur.
- Çalıştırmalar sekmesi. Her çalıştırmanın durumunu, ajanını ve açılan PR’ı buradan görürsün.
Kendi ajanlarının işi için AgentVera’nın otomatik kod incelemesi de var: bir ajanın turu bitince seçtiğin bir Claude modeli kodu inceler, bulguları önem derecesi ve dosya:satır bilgisiyle verir. Ayrıntısı yapay zekâ ile kod incelemesi yazısında.
İncelerken özellikle şunlara bak:
- Test mi düzeltilmiş, kod mu? Ajan testi geçirmek için beklenen değeri değiştirdiyse bu bir uyarı işaretidir. Ek talimatta bunu yasaklayabilirsin.
- CI ayarı değişmiş mi? Workflow dosyasındaki bir değişiklik meşru olabilir, ama bir adımı atlamak da olabilir.
- Kapsam dışına çıkılmış mı? Bir tip hatası için on dosyalık refactor gelmemeli.
CI/CD merkezinden tek tık düzeltme
Her kırmızı çalıştırma için kural kurmak istemeyebilirsin. CI/CD sekmesi, sağlayıcı başına son 25 çalıştırmayı tek listede gösterir; yeniden çalıştırabilir, yalnızca başarısız işleri yeniden çalıştırabilir (Jenkins hariç) ya da iptal edebilirsin. Kırmızı bir çalıştırmada Ajana düzelttir dersen, çalıştırmanın bilgileri ve başarısız işlerin loglarının son kısmıyla bir ajan açılır. Bu sefer ajanla birlikte sen de oradasın.
Sık yapılan hatalar
- Ana dalı “Aynı dala push et” ile izlemek ve doğrudan push beklemek. AgentVera varsayılan dala push etmez; düzeltme yine PR olarak gelir.
- Günlük sınırı en yükseğe çekmek. Sınır bir güvenlik ağıdır. Kural güven kazanana kadar düşük tut.
- Ek talimatı boş bırakmak. Ajanın neye dokunmaması gerektiğini söylemek, sonuçları belirgin biçimde daraltır.
- Kararsız testleri ajana bırakmak. Ara sıra kırılan bir test için ajan bir şeyler değiştirebilir. Bu tür testleri önce sen ele al.
- Gizli değerleri depoda tutmak. Tarama push’u durdurur, ama asıl çözüm gizli değerleri depoya hiç koymamaktır.
Örnek bir gün
Sabah
Gece birinin main’e attığı bir commit CI’ı kırmış. “CI kırılınca düzelt” kuralı bunu yakalamış: ajan logdaki tip hatasını bulmuş, yerelde tekrar üretmiş, düzeltmiş. Varsayılan dal olduğu için iş PR olarak gelmiş. Kahveni içerken diff’e bakıyorsun, PR’ı birleştiriyorsun.
Öğle
Bir PR’ına ekip arkadaşından dört yorum geliyor. İki dakika içinde “PR yorumlarını işle” kuralı devreye giriyor. Ajan üç yorumu uyguluyor, birine katılmıyor ve gerekçesini yazıyor. AgentVera PR dalına push ediyor ve PR’a bir yanıt bırakıyor. Sen yalnızca katılmadığı yorumu okuyup karar veriyorsun.
Öğleden sonra
Bir özellik dalında CI üst üste kırılıyor. Ajan iki kez deniyor, ikisinde de testler kırmızı kalıyor. Üçüncü deneme olmuyor; çalıştırmalar sekmesinde durumu görüyorsun. Logu açınca sorunun bir test ortamı değişkeni olduğunu anlıyorsun ve bunu kendin düzeltiyorsun.
Kontrol listesi
- CI/CD sekmesine sağlayıcın eklendi mi?
- GitHub depolarında bilgisayarda GitHub girişi yapılmış mı?
- Dallar alanı doğru mu? Boşsa tüm dallar izlenir.
- Ek talimat ajanın dokunmaması gerekenleri söylüyor mu?
- Günde en fazla değeri temkinli mi?
- Teslim edince seçeneği inceleme alışkanlığına uyuyor mu?
- Gizli değerler depo dışında mı?
Sonuç
CI hatalarını ve PR yorumlarını bir yapay zekâ ajanına devretmek, günün en çok bölünen kısmını geri verir. Önemli olan ajanın hızlı olması değil, sınırlı olmasıdır: AgentVera’da ajan kendi worktree’sinde çalışır, push’u kendisi yapmaz, varsayılan dala asla doğrudan yazılmaz, gizli dosya içeren iş push edilmez ve aynı dal için deneme sayısı sınırlıdır. Son karar da PR’da ya da birleştirme kuyruğunda sende kalır.
Daha fazlası için:
AgentVera’yı denemek için ana sayfaya göz at.