Semble - Ajanlar için grep'e kıyasla %98 daha az token kullanan kod arama
(github.com/MinishLab)- Semble, ajanların doğal dil ve kod sorgularıyla yalnızca ihtiyaç duydukları kod parçalarını anında bulması için geliştirilmiş bir kod arama kütüphanesidir
grep+readile karşılaştırıldığında yaklaşık %98 daha az token kullanır ve tüm dosyayı okumak yerine yalnızca ilgili parçaları döndürür- Ortalama bir depoyu yaklaşık 250 ms içinde indeksler ve sorgulara yaklaşık 1.5 ms'de yanıt verir; CPU üzerinde API anahtarı, GPU veya harici hizmetler olmadan çalışır
- Benchmark, 19 dilde 63 depo üzerinde yaklaşık 1.250 sorguyla gerçekleştirildi; Semble'ın
CodeRankEmbedHybrid kalitesinin %99'una ulaştığı ve indekslemede 218 kat daha hızlı olduğu belirtiliyor - Token verimliliği benchmark'ında Semble ortalama %98 daha az token kullandı ve yalnızca 2k token ile %94 recall seviyesine ulaştı;
grep+readise 100k bağlam penceresiyle %85 recall'a ulaştı - MCP sunucusu olarak Claude Code, Cursor, Codex, OpenCode ve MCP uyumlu ajanlarda kullanılabilir; depolar gerektiğinde clone edilip indekslenir ve indeks oturum boyunca cache'lenir
- Bash tabanlı kullanım da desteklenir;
AGENTS.mdveyaCLAUDE.mdiçinesemble searchvesemble find-relatediş akışları eklenebilir; Claude Code ve Codex CLI alt ajanlarında bu yöntem gereklidir - CLI hem yerel yolu hem de
https://Git URL'sini kabul eder vepathatlanırsa varsayılan olarak mevcut dizini kullanır - Python kütüphanesi olarak da kullanılabilir;
SembleIndex.from_path,SembleIndex.from_git,search,find_relatedile arama özel araçlara entegre edilebilir - İçeride tree-sitter ile dosyaları kod farkındalıklı parçalara ayırır,
Model2Vec'inpotion-code-16Membedding'i ileBM25'i birleştirir ve puanları Reciprocal Rank Fusion ile bir araya getirir - Sıralama; sembolik sorgular için sözcüksel ağırlıklandırma, tanım parçalarını öne çıkarma, tanımlayıcı kök eşleştirme, aynı dosya içindeki ilgililik ve test, legacy, örnekler ile
.d.tsiçin aşağı yönlü ayarlamalar kullanır - Statik embedding modeli kullandığı için sorgu sırasında transformer forward pass gerekmez; bu da CPU üzerinde milisaniye düzeyinde aramayı mümkün kılar
semble savings, her aramada dönen parçaların ait olduğu benzersiz dosyaların toplam karakter sayısı ile dönen snippet karakter sayısını karşılaştırarak tasarruf edilen token miktarını tahmin eder; istatistikler~/.semble/savings.jsonliçine kaydedilir- Paket, PyPI'de
sembleolarak kurulabilir; MCP kullanımındauvx --from "semble[mcp]" semblebiçimi kullanılır - Lisans MIT'tir
1 yorum
Hacker News yorumları
Bu tür araçları kullanınca, geliştiriciler AI araçlarına fazla bağımlı olduğunda aptallaşıyorsa, AI’ın kendisinin de aptallaştığını gördüğümü düşünüyorum
Ajan tipi AI zaten kod gezintisi ve aramada oldukça optimize yollar bulacak kadar akıllı, ama buna benzer araçlar eklenince arama sonuçları neredeyse her zaman tüm ayrıntılar yerine yalnızca işaretçiler verdiği için fazla agresif davranma eğilimi oluyor
Basitçe Pi ile, belli ölçüde karmaşık bir projede tam toplama·arama yolunu izlettim;
codebase-memory-mcp85k/4.4k giriş·çıkış tokenı kullandı, normal kurulumum 67k/3.2k, hiçbir araç olmadığında ise 80k/3.2k idiSonuç kalitesi ve bilgi miktarı aynıydı; bu araç büyük fark yaratmadı, hatta biraz daha kötüydü
Benim normal kurulumum,
AGENTS.mdveCLAUDE.mdiçine yalnızca “öncePROJECT.mddosyasını oku” diye tek satır yazmakPROJECT.mdiçinde projenin 2-3 satırlık açıklaması, ilgili dosyalar ve tek satırlık açıklamaları, dikkat edilmesi gereken noktalar ve ayrıca LLM için yalnızca şu ifade bulunuyor: “değiştirmeye değerse bu dosyayı güncelle. Bu dosyanın amacı projeye dair kabaca bir his vermek ve gerekirse oradan daha fazla keşif yaptırmaktır”İş yerinde eskiden Augment Code kullanıyorduk; onda önceden indekslenmiş kod üzerinde doğal dil sorgularını yanıtlayan, MCP benzeri bir Context Engine vardı
Sonra Claude Code’a geçtik ama garip biçimde, aralık okuma aracı olmasına rağmen belleğinde kalan satır aralıklarına göre
sedile dosya okumaya çalışıyorBunun gerçekten yüksek derecede optimize bir yol anlamına gelip gelmediğinden emin değilim
codebase-memory-mcpilesembletam olarak aynı şey değil ama ilginç bir karşılaştırma; kontrol edilecek işler listeme ekleyip mümkünse benchmark’a dahil edeceğimAynı karşılaştırmayı
sembleile yapma şansın olursa bu gerçekten faydalı geri bildirim olur. Çünkü bu tür “gerçek” senaryoları benchmark etmek ya da yeniden üretmek zorİlginç. Ben de bu alanda çalışıyorum ama yaklaşımım farklıydı
İndeks oluşturmak yerine, tüm kod tabanı ve genel metin üzerinde sıralama ile kod yapısı farkındalığı eklenmiş daha akıllı bir grep yaptım; zamanımın çoğunu performans sorunlarıyla geçirdiğim için de çok hızlı çalışıyor
Bunu https://github.com/boyter/cs ile karşılaştırma listesine ekleyip, benim sorduğum türden sorularda LLM’lerin neyi tercih ettiğine bakmalıyım
Bu da MCP sunuyor ama arama için indeks oluşturmuyor. Varsayılan BM25 yerine koda özgü semantik varyasyonlar kullandığı için sıralamanın nasıl çıkacağını merak ediyorum
Bu araç “kimlik doğrulama nasıl çalışıyor” gibi sorgulara daha uygun görünüyor;
csiseauthenticate --only-declarationsyaptıktan sonra dosya içeriğine, yani eşleşen konumun kod mu yorum mu olduğuna ve dosyanın genel karmaşıklığına göre sonuçları ağırlıklandırıyorYıldız verdim, takip edeceğim
Bu aracın AI için olduğunu biliyorum ama benim daha çok ilgimi çeken şey, yeni bir kod tabanını ya da kendi kod tabanımı keşfederken bunu bizzat kullanmak
Bir şeyi refactor etmeye çalışırken nereleri değiştirmek gerektiğine dair genel çerçeveyi görmek istediğinde faydalı görünüyor
LSP de böyle şeyler yapıyor ama bu araç bir adım daha ileri gidebilir gibi
Pi ve GPT 5.5 ile birkaç değerlendirme yaptım
RTK açık / headroom açık / ikisi de açık / ikisi de kapalı durumlarını test ettim; hepsinde standart Pi sistem yönergeleri kullanıldı ve
AGENTS.mdyoktuTam olarak hangi testler olduğunu unuttum ama insanların kullandığı bazı standart ajan değerlendirmeleriydi; biri kullandığım dil olan Python, diğeri de TypeScript idi
Bunun kapsamlı ya da iyi bir test olduğunu iddia etmiyorum. Bir gün kadar
AGENTS.mdile Pi sistem promptu·araç yönergelerini ayarlasaydım daha iyi sonuçlar çıkabilirdi. Değerlendirmeleri çalıştırırken öğrendiğim şeylerden biri, bu tür ince farkların sonucu ciddi biçimde değiştirebilmesi olduAma ikisinin de kapalı olduğu durum bariz şekilde daha iyiydi ve 3 turun ardından testi hemen durduracak kadar netti
Sorun şuydu: bağlam kullanımı bazen azalsa da tamamlanana kadar geçen tur sayısı artıyordu; bu yüzden toplam konuşma maliyeti daha yüksek oluyordu
Bu tür araçları paylaşan çok insan var ama değerlendirme ya hiç olmuyor ya yeniden üretmesi şüpheli derecede zor oluyor ya da bu araçta olduğu gibi çok benchmark yapılıp yanlış şey ölçülüyor
Bu aracın
grep’ten daha az token kullandığı doğru ve benchmark’lar da bunu gösteriyor, ama önemli olan bu değil. Önemli olan, ajanın bu aracı kullanarak aynı kalitedeki işi daha hızlı ve daha düşük maliyetle yapıp yapamadığıBu sadece bu araca özgü bir sorun değil; kod tabanına ya da geliştirme akışına AI ekleyen her şeyin sorunu
AI’dan önce de “bu ne kadar hızlı ve ne kadar iyi geliştirildi”yi ölçen testler yoktu, şimdi de eklenmiş değil
Gerçek ajan benchmark’ları görmek isterim. Örneğin Claude Code ya da Copilot CLI’de
grepkaldırılıp yerine bu aracın konması gibiRTK ve çeşitli LSP uygulamalarına baktım; modeller
grepiçin o kadar güçlü biçimde RL ile şekillendirilmiş ki başka tür sonuçlara güvenmeyip sürekli yeniden deniyor ya da tekrar okuyorlarBu yüzden model diğer araç sonuçlarına güvenmediği için token tasarrufunun tamamı kayboluyor
CLAUDE.mdiçine (~/.Claudealtında)grepyerine LSP kullanmasını yazdım; o zamandan beri bu sorun kalmadıYalnız
findiçin belirli CLI bayraklarını desteklemediğinde, komutun tam çıktısını göndermek yerine hata mesajı vermesi sinir bozucuBöyle olunca ajan token harcayarak yeniden deniyor ya da daha kötüsü, prompt yüzünden RTK olmadan komut çalıştırmaması gerektiğinden korkup hiç denemiyor
Anekdot düzeyinde ama tabii ki biz de bu aracı bizzat kullanıyoruz ve şu ana kadar oldukça iyi çalışıyor
Anthropic modelleri bu aracı çağırıyor ve sonuçlara güveniyor gibi görünüyor
Sadece arama çıktısına değil, tam ajan döngüsüne bakmak ve onu ölçmek gerekiyor
grepbazen çok yavaş olduğu içinrgkullan denince dinliyor; ama RTK eklenince bu kez RTK üzerindengrepkullanıyor, bu da biraz sinir bozucuFikir iyi göründüğü için biraz kurcaladım
Testi
browsercode(https://github.com/browser-use/browsercode) deposunda yaptım ve prompt şuydu: “yalnızcasembleCLI kullanarak, Browsercode’un varsayılan OpenCode araçlarına ek olarak ajana sunduğu araçların ne olduğunu yanıtla. Araç giriş·çıkışlarının tam şemasını ve ne yaptıklarını, nasıl çalıştıklarını kısaca özetle.”Buna https://github.com/MinishLab/semble#bash-integration içindeki
AGENTS.mdparçasını ekledimSemble kullanılmayan testte ise aynı soruyu yalnızca
rgvefdCLI kullanacak şekilde değiştirdimHer iki durumda da Pi ve gpt-5.4 medium kullandım; diğer ayarlar çok minimaldi. Gerçekten bir tarafta sadece
rgvefd, diğer tarafta sadecesemblekullanıldığını da doğruladımSemble olmadan model bağlamının %10.9’u ve $0.144 API kredisi kullanıldı; Semble ile %9.8 ve $0.172 kullanıldı
Sonuç yanıtları da neredeyse aynıydı, yani çok yakındılar
OpenCode deposunda da bir kez daha test ettim; soru şuydu: “
OPENCODE_EXPERIMENTAL_EXAortam değişkeninin 1 olarak ayarlandığı noktadan başlayıp bunun OpenCode ajanına sunulan sistem promptu ya da araçlarda görülen sonuca kadar olan yolu izle.”Yukarıdakiyle aynı yönergeleri ve dokümanları dahil ettim
Semble olmayan sürüm biraz daha ayrıntılıydı ve web arama sağlayıcısı olarak Exa ya da Parallel’in etkin olup olmamasına göre araç çağrı yolunun Exa’yı çağırıp çağırmadığını da ele alıyordu; ancak gerçek soruya verilen yanıt her iki sürümde de doğruydu
Semble sürümü bağlamın %14.7’sini / $0.282 API maliyetini kullandı, Semble olmayan sürüm ise %19.0 / $0.352 kullandı
Bağlam verimliliği açısından Semble açıkça kazandı ama Semble olmayan sürümün yaklaşık iki kat daha hızlı bitmesi dikkat çekici
Tabii bu sadece benim biraz kurcalamam; sonuçlar değişebilir
“
grep’ten %98 daha az token kullanıyor” denirken,grepo kadar savurgan ki modelin her seferinde %98 oranında işe yaramaz çöp okuduğuna mı inanmamız bekleniyor?Bu iddia ya temsili değil ya da modele verilecek bağlamın çoğunu atarken başka bir şeyi kaçırıyor gibisiniz
grepçıktısıyla değil, grep+read döngüsüyle karşılaştırmaAjan tanımadığı bir kod tabanıyla karşılaşınca genelde önce
cat fileyapıyor ya da dosyanın tamamını okuyor. En azından benim deneyimim böyleydiAjanı güvenilir şekilde yalnızca
grep -C Nyapıp orada durdurabiliyorsanız kurulumunuzu gerçekten merak ediyorum. Bence bunun sonuç kalitesi yararlı bağlam olarak kullanmak için fazla düşüknode_modulesiçindeki eşleşmeler yüzünden yüzlerce kilobayt çıktı okuması gibi bir sorun vardıripgrepyardımcı olduğu için, bir bellek dosyasına bunu kullanmasını söyleyen tek satır eklemek mantıklı geliyorgrep, eşleşen tüm satırları çıktılarLLM bir arama yaptığında ciddi miktarda gürültü olabilir; ayrıca spesifik arama yapamıyorsa böyle aramalar yapmak zorunda da kalabilir
Hedef odaklı arama, token sayısını azaltabilir
Ama bu karşılaştırma sanki yalnızca gereken parçaları almak ile tüm kod tabanını okumayı karşılaştırıyor
Geri bildirim olarak söyleyeyim, codex-cli bunu MCP üzerinden çağırdığında takılıyor
semblesüreci de zombi gibi kalıp sonsuza dek askıda duruyor. Nedenini bilmiyorum, loglarda da hiçbir şey yokSkill üzerinden CLI çağrısı yöntemiyle çağırınca GPT 5.5,
ripgrep’e alışkınmış gibi aşırı sayıda arama sorgusu atmaya çalışıyorBunun ne kadar etkili olduğundan emin değilim; GitHub’daki kısa dokümantasyon ve ajan yönergeleriyle neyin en iyi olduğu pek net değil
Son olarak bash için kurarken GitHub dışı bağlantılarla ilgili birkaç hata da aldım. Bunun takılmayla ilişkili olup olmadığını bilmiyorum
Ayrıca ajanım sonrasında
ripgrepde kullanmaya çalıştı; bu da yinelenen bir davranış gibi görünüyor. Sanki güven sorunu varmış gibi davranıyorDaha ayrıntılı ajan skill açıklamaları olursa ajana doğru kullanım şeklini yönlendirmek mümkün olabilir
Hata için, kurulum ayrıntılarıyla birlikte bir issue açabilirsen çok iyi olur. Bu kesinlikle araştırıp düzeltmek istediğimiz bir şey
Birden fazla sorgu atma sorunu da gerçekten çok iyi geri bildirim; bunun olmaması için prompt ve yönergeleri güncelleyip ilgili testleri de eklemeye çalışacağız
Kurulum sırasındaki dış bağlantı hataları büyük ihtimalle
uv’nin bağımlılıkları PyPI’dan çekmesinden kaynaklanıyordu; takılmanın sebebi o değildirGüzel görünen bir fikir
İlgili başka bir sorun da şu: küçük kod tabanlarında Claude bazen tüm kod tabanını tek seferde bağlama koyup çok az tokenla işleyebilecekken bile, bir şey bulmak için çok zaman harcıyor
Fena olmayan bir geçici çözüm, başlangıç hook’u ile tüm dizini bağlama enjekte etmek
Böylece Claude her görevdeki “karanlıkta el yordamıyla ilerleme” bölümünü atlıyor
Daha büyük depolarda modele stub içeren bir genel bakış veren harika bir proje de görmüştüm ama adını unuttum
Ama küçük bir kod tabanında aradığın şeyi bulmak da daha kolaydır; bu yüzden arama yine de maliyet düşürmeye yardımcı olabilir
Bu tür çözümlerin daha büyük sorunu, çoğu AI’ın eğitim sayesinde zaten
grepve aramayı çok iyi kullanıyor olmasıAI’a yeni bir araç verirseniz, bu tür araçlar AI’ın bilişsel kapasitesinin bir kısmını elinden alır
İnsanlar normalde bu araçları kullanmayı “öğrenir”, ama LLM’in eğitimi sabittir ve zaten
grepgibi mevcut araçlarda çok derin bir uzmanlığa sahiptirÖrneğin AI zaten
treegibi Linux komutlarıyla bir kod tabanını nasıl keşfedeceğini biliyor ve bu da yeterince öğrenilmiş durumdaBir diğer sorun, bu araçların faydasını gösteren örnekler üretmenin kolay olması ama bu araçların yol açtığı bilişsel eksikliğin uzun çalışmalarda faydayı dengelediğini gerçekten kanıtlamanın zor olması
İlk sezgim, uzun çalışmalarda kullanıma sunulabilir zekanın net biçimde azalacağı ve ajanın mevcut araçları kullandığı duruma kıyasla daha kötü performans göstereceği yönünde
Bunun tersini kanıtlamak kolay bir problem değil ama belki de üstlenmeye değer bir meydan okuma olabilir