LLM tabanlı bir kod konvansiyonu linter’ı geliştirdik.
(github.com/DevSymphony)Merhaba! Biz, sym-cli’yi geliştiren üniversiteli ekip SymPhony’yiz.
Bu aralar Cursor ya da Claude Code gibi araçları kullanarak sık sık vibe coding yapıyor musunuz? Bizim ekip de geliştirme sürecinde LLM’leri aktif olarak kullanıyor. Ancak kullanırken bizi rahatsız eden bir nokta oldu.
Yapay zekanın yazdığı kod işlevsel olarak gayet iyi çalışıyor, ancak ekibimize özgü konvansiyonları (değişken adlandırma kuralları, yorum stili, belirli kütüphaneleri kullanma kuralları vb.) sürekli göz ardı ediyordu. Her seferinde prompt’a kuralları yazmak zahmetliydi; ayrıca bunu sürekli yapınca zamanla konvansiyonları unutma sorunu da ortaya çıkıyordu.
Bu yüzden, "LLM kodu yazmadan önce ya da yazarken kendi kendine konvansiyonları kontrol edemez mi?" sorusundan yola çıkarak sym-cli’yi geliştirmeye başladık.
[sym-cli nedir?]
sym-cli, AI kodlama araçları için politika tabanlı bir kod konvansiyonu linter’ıdır. Temel farkı, MCP’yi kullanarak LLM ile doğrudan iletişim kurmasıdır.
Mevcut linter’lardan farklı yönleri şunlardır.
- (Doğal dil tabanlı yapılandırma) Karmaşık yapılandırma dosyaları yerine, "asla
loguprintile yazma" gibi kuralları doğal dille tanımlarsanız LLM bunu anlayıp uygular. - (Bağlam optimizasyonu) LLM projedeki tüm kuralları okumak yerine, MCP aracı üzerinden yalnızca o anki işe gereken kuralları akıllıca getirir.
- (Etkin denetim)
validate_codearacı sayesinde LLM, kodu ürettikten hemen sonra kurallara uyup uymadığını kendi kendine denetleyebilir.
[Nasıl çalışıyor?]
sym komutunu indirip sym init komutunu çalıştırdığınızda MCP sunucusu ayarları otomatik olarak yapılandırılır; böylece MCP destekleyen IDE’lerde (Cursor vb.) veya LLM araçlarında bu kurallara hemen başvurulmaya başlanır.
[Geri bildiriminizi rica ediyoruz!]
Biz hâlâ üniversiteli bir ekibiz ve proje de henüz iskeleti yeni oluşmuş erken bir aşamada. Eksiklerimiz çok olabilir, hatalar da bulunabilir. Ancak sahada çalışan geliştiricilerin ve LLM araçlarına ilgi duyanların desteğine ve geri bildirimine gerçekten ihtiyacımız var.
"Böyle bir özellik olsa iyi olur", "Bu kısım yapısal olarak sorunlu görünüyor", "Gerçek iş hayatında bunu şöyle kullanıyoruz" gibi her türlü görüşü minnetle dinleriz. Proje açık kaynak olduğu için katkılarınız ya da GitHub Star vermeniz ekibimiz için gerçekten büyük bir destek olur!
GitHub Repository: https://github.com/DevSymphony/sym-cli
npm: npm install -g @dev-symphony/sym
Okuduğunuz için teşekkürler.
7 yorum
opencode kullanırsanız lint işlevini iş akışına da dahil edebilirsiniz
https://tr.news.hada.io/topic?id=21883
https://opencode.ai/docs/formatters/
Katılıyorum. Sözdizimi ve tip hataları gibi anında yakalanabilen şeyler için en verimli aşama LSP ya da derleme süreci; token kullanımı açısından da bunun doğru yaklaşım olduğunu düşünüyorum. Biz de LLM’nin bunun yerini almasındansa, doğal dille yazılmış kuralları mevcut lint/test iş akışına otomatik olarak bağlayan bir rol üstlendiğini düşünüyoruz.
Ben de t7vonn gibi, konvansiyonların otomasyon araçlarıyla standardize edilmesi gerektiğini düşünüyorum.
LSP tarafında ise fark oldukça hissediliyor; test ya da derleme çalıştırmadan ancak yakalanabilen sözdizimi hatalarını anında tespit edebildiği için token kullanımı azalıyor.
PR review agent’e konvansiyon dokümanını ve diff’i verip eksik kalan kısımları buldurma seviyesinde şeyler zaten şu anda da yapılıyor.. onun ötesini kullanacağımı sanmıyorum
Benimkine benzer görüşe sahip birinin yazısını ekliyorum
Belirttiğiniz kullanım şeklinin şu an için en gerçekçi yaklaşım olduğunu düşünüyorum. Bizim çözmek istediğimiz sorun, convention belgesini her PR’da tek tek sunma sürecini azaltmak ve doğal dille tanımlanmış kuralları önceden linter/doğrulama kurallarına dönüştürerek PR/CI aşamasında otomatik çalıştırılmasını sağlamak.
Hmm.. sanki
claude hooks/subagents/skillgibi bir özellikle de yapılabilirmiş gibi görünüyor ..Teknik olarak hooks ya da subagent ile de mümkün görünüyor, ancak biz belirli bir LLM'ye bağımlı kalmamak için MCP ve mevcut linter iş akışının üzerine ince bir katman koymayı seçtik. Bu yüzden ajan özelliklerinden ziyade, konvansiyonları yeniden kullanılabilir bir altyapıya dönüştürmeye odaklanıyoruz.