Pathrule neleri hesaplar
Ekibiniz hafıza kayıtları, kurallar ve beceriler yazar. Katmanın tuttuklarının çoğu ise yazılmaz, gerçek işten türetilir. Bu sayfa türetilen her parçayı ve onu neyin beslediğini anlatır.
Bu sayfada
- Her kayıt için bir anlam temsili
- Her iletimin çevresinde ölçülen bir pencere
- İş türüne göre öğrenilen ağırlıklar
- Birlikte değişen dosyaların grafiği
- Bir sürtünme haritası
- Yönlendirmenin doğru olup olmadığının ölçüsü
- Her katman hâlâ beslenip beslenmediğini bildirir
- İş bölümleri ve güncellik değerlendirmeleri
- Kişisel tercihler makinenizde kalır
- Bunlar neyden türetilmez
- Bir klasördeki aynı dosyalar neden aynı şey değildir
Üç tür şey yazarsınız: hafıza kayıtları, kurallar ve beceriler. Bu kısım bilinçli olarak yazılır, özenle düzenlenir ve size aittir.
Ama küçük olan yarı da budur. Katmanın herhangi bir anda tuttuklarının çoğunu kimse yazmamıştır. Bunlar işin gerçekte nasıl ilerlediğinden türetilir, her çalışma alanı için ayrı tutulur ve iş sürdükçe yeniden hesaplanır. Bu sayfa türetilen her parçayı tek tek anlatıyor, çünkü orada ne olduğunu bilmek aramanın neden öyle davrandığını açıklar.
Her kayıt için bir anlam temsili
Her hafıza kaydı, kural ve beceri, ne anlama geldiğinin hesaplanmış bir temsili olarak da bulunur. Bir istek geldiğinde istek de aynı türde bir temsile dönüştürülür ve doğrudan bunlarla karşılaştırılır.
Diller arası eşleşmeyi mümkün kılan kısım budur. Türkçe bir prompt, İngilizce yazılmış bir hafıza kaydıyla hiçbir kelimesi ortak olmasa da aynı fikri taşıyorsa o kaydı bulur. Anahtar kelime araması bunu yapamaz, çünkü eşleşecek ortak bir metin yoktur. Karşılaştırma, "the payment webhook retries twice" ile "ödeme webhook'u iki kez deniyor" ifadelerinin birbirine yakın durduğu bir uzayda yapılır.
Kayıtların içeriği değiştiğinde temsilleri yeniden oluşturulur. Böylece eşleşme, kaydın oluşturulduğu gündeki haline değil, şu an söylediğine göre yapılır.
Her iletimin çevresinde ölçülen bir pencere
Pathrule bir tur için bilgi ilettiğinde bu iletimin bir kaydını açar. Bu kayıt hangi kayıtların, hangi yolda, hangi niyet türü için gönderildiğini tutar.
Ardından tur aynı pencereye şunları bildirir:
- iletilen kayıtlardan hangilerine asistanın yalnızca almakla kalmayıp gerçekten başvurduğu
- turun kaç araç çağrısı sürdüğü ve bunlardan kaçının başarısız olduğu
- hangi dosyaların düzenlendiği, çalışma alanına göreli biçimde
- başarısızlıkların nasıl dağıldığı, hata metni olarak değil kısa kodlar olarak
Aşağıdaki her şeyin ham maddesi bu penceredir. Pathrule'un, kimse bir puan vermeden iyi giden bir turu kötü gidenden ayırabilmesinin nedeni de budur.
İş türüne göre öğrenilen ağırlıklar
Pencereler birikir. Zamanla her kaydın, iletildiği her iş türü için bir konumu oluşur ve bu konum kanıtla birlikte değişir: kayda sorunsuz ilerleyen bir işte başvurulduysa yükselir, zorlanan bir tura iletildiyse düşer.
Sonuç olarak öncelik, kayıt başına tek bir sayı değildir. Aynı hafıza kaydı bir migration için yüksek, bir arayüz ince ayarı için düşük öncelik alabilir, çünkü bunlar farklı iş türleridir ve kanıtları farklıdır. Bir dosyadaki tek bir "önem" alanı bunu ifade edemez; böyle bir alanı elle tutan biri de bunu tahmin etmek zorunda kalırdı.
Öğrenme bilerek temkinlidir. Belirsiz bir sonuç yanlış bir şey öğretmek yerine hiçbir şey öğretmez, tek bir net isabetsizlik geçmişi silmek yerine konumu düşürür ve kod değiştikçe etki azalır. Arama doğru bilgiyi nasıl bulur bu davranışı ayrıntılı olarak anlatır.
Birlikte değişen dosyaların grafiği
Pathrule, turların bildirdiği yollardan ekibinizin hangi dosyaları alışkanlıkla aynı iş içinde değiştirdiğine dair bir resim çıkarır. Böylece bu dosyalardan birine bağlı bilgi, onun komşusu üzerinde çalışan bir oturuma ulaşabilir.
Bu ilişkileri kimse tanımlamaz ve bunları bulmak için hiçbir dosya açılmaz. Kaydedilen işten ortaya çıkarlar; tek bir tesadüfün sayılmaması için bir gürültü eşiği vardır ve dosyalar artık birlikte değişmediğinde etkileri azalır. Cloud çalışma alanında grafik ayrıca önden başlar: bir ajan ilk kez derin bağlam istediğinde, grafik ilk verisini son git geçmişindeki dosya yollarından alır. Böylece ekibiniz henüz pek iş kaydetmeden de işe yarar. Bkz. birlikte değişen dosyalar.
Bir sürtünme haritası
Başarısızlıklar üçlü olarak gruplanır: aracın türü, dosya ve nasıl başarısız olduğunu gösteren kısa bir kod. Haftalara göre gruplandığında bu, bir asistanın kod tabanınızda nerede ve nasıl takılıp kaldığının resmine dönüşür. Bilgi almış bir tur yine de sorun yaşadığında bu harita önceliğe negatif bir sinyal olarak katılır. Bkz. bir asistanı yavaşlatan dosyalar.
Yönlendirmenin doğru olup olmadığının ölçüsü
Her prompt ayrıca bir rota alır: asistan herhangi bir şeyi açmadan önce, işin büyük olasılıkla bulunduğu yollar belirtilir. Pathrule ardından asistanın oraya gidip gitmediğini kaydeder. Kayan bir pencere boyunca bu tek bir doğruluk değerine dönüşür; yanında da yönlendirilmiş bir oturumun, hiç yönlendirilmemiş bir oturuma göre ne kadar dosya aracı işi gerektirdiği yer alır.
Bir yolu göstermenin kulağa yararlı gelmekle kalmayıp gerçekten yararlı olup olmadığını söyleyen tek sayı budur. Yönlendirmenin zevke göre değil kanıta göre ayarlanabilmesinin nedeni de budur.
Her katman hâlâ beslenip beslenmediğini bildirir
Yukarıdaki türetilmiş katmanların her biri kendisine iş akmasına bağlıdır ve hiçbir şey almayı bırakan bir katman hiçbir şey döndürmez. Bu da bildirecek bir şeyi olmayan bir katmanla tıpatıp aynı görünür. Bu iki durum birbirinin tam tersi tepkiler gerektirir, bu yüzden Pathrule ikisinin aynı görünmesine izin vermez.
Her katmana düzenli olarak en son ne zaman veri aldığı sorulur ve yanıt üç durumdan biri olarak kaydedilir: güncel, son zamanlarda hiçbir şey almıyor ya da hiç beslenmemiş. Aynı kontrol, kaydın bazı bölümleri eklenmeden önce çıkmış eski bir istemciden gelen turları da fark eder. Böylece kurmaya değer bir güncelleme, sessizce kötüleşen sonuçlar olarak değil, adı konmuş bir sayı olarak görünür.
Bu yüzden türetilmiş bir katmanın sessizleşmesi, aylar sonra bir sonucun neden kötüleştiğini merak eden birinin fark ettiği bir şey değil, tarihi belli, bildirilmiş bir durumdur.
İş bölümleri ve güncellik değerlendirmeleri
Aynı etkinliğin üzerinde iki türetilmiş katman daha bulunur.
İş bölümleri birbiriyle ilişkili turları birleştirerek bir şeyin nasıl çözüldüğünün hikâyesini çıkarır. Böylece "bunu geçen sefer nasıl yapmıştık" sorusunun yanıtı birinin hatırladıklarına kalmaz. Bkz. bunu daha önce nasıl çözmüştük.
Güncellik değerlendirmeleri bir kaydın iddia ettiği şeyi kodun o zamandan beri geldiği yerle karşılaştırır ve geride kalmış görünenleri sessizce önceliğini düşürmek yerine düzenleme önerisi olarak öne çıkarır. Bkz. öneriler ve öz denetim.
Kişisel tercihler makinenizde kalır
Bir katman kaydedilen işle değil, sizinle başlar. Pathrule'a nasıl çalışmayı sevdiğinizi söylediğinizde, örneğin pathrule me teach "I prefer incremental refactors", isteğe bağlı cihaz üzerindeki model bu cümleyi kısa ve kapsamı belli bir tercihe dönüştürür. Tercih makinenizde saklanır, yüklenmez ve geçerli olduğu yerde ajanlarınıza iletilir.
Kontrol sizde kalır: pathrule me list kullanımda olanları gösterir, pathrule me explain bir tercihin nereden geldiğini gösterir, pathrule me scope tercihi tek bir çalışma alanıyla sınırlar ya da çalışma alanları genelinde geçerli olmasına izin verir, pathrule me forget kullanılmasını durdurur ve pathrule me context bir ajanın bir görev için ne alacağını önizler. Bkz. User Intelligence.
Bunlar neyden türetilmez
Kaynak kodunuzun içeriğinden. Depodaki kaynak kod otomatik olarak yüklenmez. Yukarıdaki türetilmiş katmanların hepsi ekibinizin yazmayı seçtiklerinden ve işin kendisi hakkında bildirdiklerinden gelir; hiçbir diff ya da commit mesajı saklanmaz.
Çalışma kopyanızdan iki şey okunur; ikisi de yalnızca Cloud çalışma alanında ve ikisi de bir ajan ilk kez derin bağlam istediğinde:
- Son git geçmişindeki dosya yolları, hangi dosyaların aynı commit'te değiştiğini bulmak için. Genellikle refactor ya da yeniden adlandırma olan çok büyük commit'ler atlanır. Ortaya çıkan dosya yolu çiftleri, birlikte değişim grafiğinin başlangıç noktası olarak çalışma alanına kaydedilir. Commit mesajları, yazarlar ve diff'ler okunmaz.
- Klasör ağacının üst kısmındaki dosya adları, yapılandırma dosyalarından kullanılan teknolojileri tanımak için; örneğin bir TypeScript, Vite, Docker ya da GitHub Actions kurulumu. Tanınan her teknoloji, çalışma alanı kökünde sorulmadan yazılan kısa bir hafıza kaydına dönüşür. Bu, düzenleyebileceğiniz ya da silebileceğiniz sıradan bir hafıza kaydıdır.
Çalışma alanının kendi geçmişi henüz zayıfken, aynı derin yanıt projenin en üst düzey klasörlerini ve son git geçmişinde en sık değişen dosyaları da belirtir. Bunlar çalışma kopyanızdan okunur ve o yanıt için ajana verilir; Pathrule tarafından saklanmaz.
Hesap olmadan makinenizde tutulan yerel bir çalışma alanı bunların hiçbirini yapmaz: birlikte değişim grafiği yalnızca kaydedilen işten gelir.
Cloud modunda makinenizden iki şey daha çıkar ve ikisi de burada açıkça belirtiliyor:
- Her prompt'un başı. Prompt'un ilk kısmı, yaklaşık ilk 1.000 karakteri, bilgiyi onun için önceliklendirmek üzere Pathrule Cloud'a gönderilir.
- Siz ya da ajanınız
pathrule snapshotkomutunu çalıştırdığınızda bir proje snapshot'ı. Dosya ağacını, manifest dosyalarını, dokümantasyondan kısa örnekleri ve son git meta verilerini yükler. Yalnızca çağrıldığında çalışır.
Proje taraması, ajanınızdan Pathrule'u proje için kurmasını isteyerek kendiniz başlattığınız ayrı bir adımdır. Ajanınız hafıza kayıtları, kurallar ve beceriler önermek için projeyi okur ve yalnızca onayladıklarınız kaydedilir.
Bundan ayrı olarak, giriş yapılmış yönetilen bir CLI anonim kullanım telemetrisini ancak siz pathrule telemetry enable ile izin verdikten sonra gönderebilir. Bu telemetri kod, yol, prompt, bilgi, dosya adı, e-posta ya da hesap kimliği içermez. pathrule telemetry disable, NO_TELEMETRY=1 ve DO_NOT_TRACK=1 telemetriyi kapalı tutar.
Dosya yolları herhangi bir şey saklanmadan önce çalışma alanına göreli biçime dönüştürülür, böylece makineye özgü hiçbir bilgi de taşınmaz.
Bir klasördeki aynı dosyalar neden aynı şey değildir
Aynı hafıza kayıtlarını, kuralları ve becerileri bir dizine koyup bir asistanı oraya yönlendirebilirsiniz. Ekipler bunu yapıyor. O dizinin yapamadığı şey ise bu sayfadaki her şeydir.
Son turda neyin iletildiğini bilmez, dolayısıyla neyin işe yaradığını ayırt edemez. Anlamın bir temsiline sahip değildir, dolayısıyla farklı ifade edilmiş bir soru hiçbir şey bulamaz. Hangi dosyaların birlikte değiştiğini bilmez, dolayısıyla bir dosyaya kaydedilen bilgi asla komşusuna ulaşmaz. Bir görev türünü diğerinden ayıramaz, dolayısıyla her şey her iş için aynı önceliği alır. Üstelik büyür: eklenen her kayıt gelecekteki her turu ağırlaştırır, çünkü bir dizinin yalnızca önemli olan birkaç kaydı göndermenin hiçbir yolu yoktur.
Yazılan kayıtlar sizin kontrol ettiğiniz kısımdır. Türetilmiş katman ise onları bu tur için doğru birkaç kayda dönüştüren şeydir. Yanıtın, yazıldığı gündeki kadar iyi kalmak yerine iş sürdükçe iyileşmesinin nedeni de budur.