Blog'a Dön
CLIOpen SourceVersioningDeveloper ToolsRe-ShellAI Agents

re-shell cli'ı 0.29'a Göndermek - Hızlı Yinelemeden Dersler

Umut Korkmaz2026-06-077 min read

Re-Shell platformumun CLI'ı yakın zamanda 0.29 sürümünü geçti ve oraya birkaç büyük planlı yayın yerine uzun bir küçük, hızlı yayın dizisiyle ulaştı. Tek bakımcı (maintainer) benim, dolayısıyla tüm yayın temposu süreçten çok alışkanlıklarla yaşar ya da ölür. Sürüm geçmişine geriye bakmak, biraz kararların bir günlüğünü okumak gibi; bazıları iyi, bazıları bir sürüm sonra sessizce geri aldıklarım. Birkaç ders öne çıkıyor ve çoğu zekilikten çok disiplinle ilgili.

1.0 Öncesi Bir Lisanstır, Bir Bahane Değil

1.0'ın altında olmak özgürleştiricidir. Semantik sürümleme (semantic versioning) size sıfır aralığında bir şeyleri kırmak için açık izin verir ve hâlâ şeklini bulmakta olan bir araç için, o izin, göndermek ile takılıp kalmak arasındaki farktır. Komut adlarını yeniden çalıştım, varsayılan davranışları değiştirdim ve yapılandırmayı birden fazla kez yeniden yapılandırdım. 1.0 öncesi, kullanıcı tabanı küçükken ve kırıcı (breaking) bir değişikliğin maliyeti bir geçiş kılavuzu ve bir destek talepleri dalgası yerine sürüm notlarında bir paragraf olduğunda bunu yapmak için tam doğru zamandır.

Ama özgürlüğün keskin bir kenarı var. Sıfır aralığını hiçbir şeyin sayılmadığı, teknik olarak izinli olduğunuz için yüzeyi sonsuza kadar çalkaladığınız bir yer olarak ele almak caziptir. O alışkanlık, kullanıcılarınızı istikrarsızlık beklemeye eğitir ve sizi arayüz kararları hakkında sıkı düşünmeyi bırakmaya eğitir. Bu yüzden kendime bir kural tutuyorum: bir şeyleri kırabilirim ama bunu kastetmem gerekir. Kırıcı bir değişiklik, beni daha önceki bir seçimle yaşamanın rahatsızlığından kurtarmak değil, açıkça daha iyi bir tasarım satın almalı.

Dürüst Kırıcı Değişiklikler

Bir şeyi kırdığımda, sürüm numarasının gerçeği söylemesi gerekir. Sıfır aralığında bu, bir minor artış demektir ve sürüm notları neyin değiştiğini ve nasıl uyum sağlanacağını açıkça söylemelidir. En çok kaçınmaya çalıştığım başarısızlık modu, sessiz kırıcı değişiklik; bir yama (patch) olarak etiketlenmiş bir yayında sızan ve birinin bağlı olduğu davranışı sessizce değiştiren türden. Güveni gerçekten aşındıran şey budur; açıkça duyurulan bir yeniden çalışmadan çok daha fazlası.

Disiplin gösterişsiz. Bir yayını etiketlemeden önce, önceki sürümü çalıştıran birinin yenisinden şaşırıp şaşırmayacağını sorarım ve cevap evet ise, o sürpriz, açık bir önce ve sonra ile notlara girer. Yayın başına birkaç dakikaya mal olur. Birinin, gerçekte araç altlarından söylemeden değişmişken kurulumunun bozuk olduğuna ikna olduğu türden bir hata ayıklama oturumunu kazandırır.

Küçük Yayınlar Büyük Olanları Yener

En çok yardımcı olan tek uygulama, küçük ve sık göndermektir. Erken sürümler ile 0.29 arasındaki o yayınların birçoğu her biri tek bir şeyi değiştirdi. Küçük bir yayın hakkında akıl yürütmek kolaydır, tarif etmek kolaydır ve yanlış çıkarsa geri almak kolaydır. Bir yayından sonra bir şey bozulduğunda, araştırılacak fark (diff) küçücüktür ve patlama yarıçapı, yirmi başkasıyla dolaşmış değil, tek bir değişikliğe sınırlıdır.

Büyük yayınlar üretken hissettirir çünkü çok sayıda işi tek bir ana bağlarlar ama riski tam olarak yanlış şekilde yoğunlaştırırlar. Sık küçük yayınlar o riski ince yayar. Ayrıca momentumu dürüst tutarlar. Her zaman gönderilebilir bir şey vardır; bu da bir iş parçasını, hiçbir zaman tam olarak inmeyen altı haftalık bir dala yaymak yerine bitirmek için her zaman bir neden olduğu anlamına gelir.

Kendi Ürününü Kullanmak (Dogfooding) Asıl Test Takımıdır

Bu CLI'ı kendi projelerimde, sürekli kullanıyorum. Bu sahip olunması güzel bir şey değil, başkalarının çarpmasından önce pürüzlü kenarların yüzeye çıkmasının birincil yolu. Otomatik testler test etmeyi düşündüğüm şeyleri yakalar. Kendi ürününü kullanmak düşünmediklerimi yakalar; o garip bayrak kombinasyonu, kafa karıştırıcı hata mesajı, soyutta makul görünen ve günlük kullanımda can sıkıcı olan varsayılan. Kendiniz kullanmadığınız bir araç, kullanması iyi olana değil, inşa etmesi kolay olana doğru kayar.

Geri bildirim döngüsü anında ve faydalı bir şekilde affetmez. Bir iş akışı beni bir hafta içinde üç kez rahatsız ederse, o rahatsızlık doğrudan listeye gider ve hızlıca düzeltilme eğilimindedir çünkü onu hisseden benim. Bu, sahip olduğum en ucuz, en yüksek sinyalli geri bildirim; her gün, kimseye sormak zorunda kalmadan mevcut.

Kaliteyi Düşürmeden Hız

Bu tempoyu tek başına bir bakımcı olarak sürdürmek, yapay zekâ ajanlarının gerçekten yerini hak ettiği yer. Aksi takdirde sahip olmadığım zamanı yiyecek çevre işi için onlara yoğun yaslanıyorum: testler taslamak, yeni bir komut için bir uygulama çizmek, kod tabanı genelinde tutarsızlıkları taramak, sürüm notlarının ilk geçişini yazmak. Ajanlar ayak işlerini yapar; kararları ben veririm. O bölünme, makinenin tasarım kararlarını verdiğini iddia etmeme izin vermeden hızı yüksek tutar.

Risk bariz ve adlandırılmaya değer. Çok sayıda üretilen kodla hızlı hareket etmek, tam olarak düşünmediğiniz şeyleri göndermeyi kolaylaştırır. Bu yüzden insan muhakemesi, otomatikleştirilen kısım olamaz. Hâlâ farkları okuyorum, hâlâ neyin kırıcı bir değişikliğe değer olduğuna karar veriyorum ve hâlâ bir şeyin yalnızca çalışmaktan ziyade gerçekten iyi olup olmadığını soruyorum. Ki bu da tüm bunun altındaki soruya getiriyor: bir CLI için yayınlanacak kadar bitmiş ne demek? Birçok yayın boyunca rafine edilmiş cevabım şu: özellik çalışır, arayüz savunacağım bir arayüzdür, kırıcı değişiklikler dürüsttür ve onu yarın kendi makinemde seve seve çalıştırırım. O çıta, kusursuzdan daha düşük ve derleniyor'dan çok daha yüksek. Onu tutarlı biçimde tutmak, aracı 0.29'a dağılmadan getiren şeyin çoğu.