cem — Compose · Execute · Multiplex
Planlamayı güçlü, kod yazmayı ucuz bir yapay zekâ modeline veren komut satırı aracı. Daha iyi kararlar, daha düşük maliyet.
cem, yapay zekâ ile kod yazarken birden fazla modeli birlikte çalıştıran açık kaynaklı bir komut satırı aracı. Adı Compose, Execute ve Multiplex kelimelerinin baş harflerinden geliyor. Temel fikri şu: düşünme ve karar verme işini güçlü bir modele, kodu yazma işini ise daha ucuz bir modele yaptırıyor. Böylece her satır kod için pahalı model ücreti ödemeden iyi kararlar alınabiliyor.
Amaç
Yapay zekâ destekli kodlama araçlarını her gün kullanırken bir şey dikkatimi çekti. En güçlü modeller iyi plan yapıyor ama pahalı. Daha ucuz modeller ise ne yapacakları açıkça söylendiğinde kodu gayet iyi yazıyor. Her işi baştan sona pahalı modele yaptırmak, aslında ucuz bir modelin de yapabileceği yazma işi için fazladan para ödemek demekti.
cem'i bu iki rolü birbirinden ayırmak için geliştirdim. Bir model düşünüyor, diğeri yazıyor. Kullanıcı hangi modelin hangi rolü üstleneceğini kendisi seçiyor ve bunları tek bir komutla yönetiyor.
Nasıl çalışır
cem'in üç temel kullanım biçimi var. Yalnızca düşünen modele soru sorulabiliyor, yalnızca yazan modele iş verilebiliyor ya da ikisi birlikte "çift" kipinde çalıştırılabiliyor. Aracın asıl amacı bu çift kipi. Bu kipte düşünen modele kodu yazmaması açıkça söyleniyor. Model hangi dosyanın değişeceğini, hangi fonksiyon imzasının kullanılacağını, nasıl bir yaklaşım izleneceğini ve hangi uç durumlara dikkat edileceğini anlatan kısa bir plan çıkarıyor. Bu plan, "yeniden analiz etme, yalnızca uygula" talimatıyla yazan modele veriliyor.
Tasarrufu sağlayan şey bu ayrım. Ayrım olmasaydı iki model de bütün işi baştan çözer ve aynı iş için iki kez ödeme yapılırdı. Yazılacak bir şey yoksa, yani istek bir kod görevi değilse ve düşünen model kod üretmediyse, cem yazan modeli hiç çalıştırmıyor.
İlk çalıştırmada kısa bir kurulum sihirbazı açılıyor. Kullanıcı önce dili (Türkçe ya da İngilizce), sonra hangi yapay zekânın düşüneceğini ve hangisinin yazacağını, ardından her biri için modeli ve düşünme eforunu seçiyor. Gerekli araç kurulu değilse cem onu kurmayı teklif ediyor. Girdi doğrudan komut satırından verilebildiği gibi bir dosyadan ya da başka bir komutun çıktısından da alınabiliyor; örneğin bir git diff çıktısı incelemeye gönderilebiliyor.
Öne çıkan özellikler
- Claude, Codex, Cursor ve Antigravity gibi yapay zekâ komut satırı araçlarını tek bir arayüzden yönetiyor.
- Ollama, LM Studio ve unsloth gibi yerelde ya da kendi sunucunda çalışan modellerle de kullanılabiliyor; bunlar için yalnızca sunucunun adresini vermek yetiyor.
- Model adı hiçbir zaman tahmin edilmiyor. cem yerel sunucuya hangi modellere sahip olduğunu soruyor ve biri seçilene kadar çalışmayı reddediyor.
- Her iki rolün yanıtları önbelleğe alınıyor. Aynı soru ikinci kez sorulduğunda aynı düşünme için tekrar ödeme yapılmıyor; yazan modelin ürettiği dosyalar da önbellekten geri yükleniyor.
- Önbellekten geri yüklenirken, kullanıcının arada değiştirdiği bir dosyanın üzerine asla yazılmıyor.
- Araçların ekrana bastığı başlıklar, oturum kimlikleri ve iç günlükler süzülüyor; böylece kullanıcı yalnızca yanıtı görüyor ve yazan modele giden istem gereksiz yere şişmiyor.
- Hızlı kip açıkken araçların kural ve izin ayarları her çağrıda yeniden yüklenmiyor. Ölçtüğüm bir örnekte bu, bir çağrının süresini 124 saniyeden 8 saniyeye indirdi.
- Birden fazla API anahtarı tanımlanabiliyor. Bir anahtar kullanım sınırına takıldığında cem otomatik olarak sıradakine geçiyor ve uzun bir çalışma yarıda kesilmiyor.
cem doctorkomutu kurulumu denetleyip gerektiğinden fazla ödeme yapılan yerleri gösteriyor.- Her çalıştırma kayıt altına alınıyor ve her rolün ne kadar sürdüğü ayrı ayrı gösteriliyor.
Ayarlar ve maliyet denetimi
cem varsayılan ayarlarıyla maliyeti düşük tutacak şekilde geliyor. Çift kipinde düşünen modelin eforu yüksek, yazan modelinki düşük ayarlı. Kullanıcı bu ayarları genel olarak ya da yalnızca belirli bir proje için değiştirebiliyor. Projeye özel ayarlar kodun yanında duran bir YAML dosyasında tutuluyor ve genel ayarların önüne geçiyor. Bir model seçilen efor düzeyini kabul etmezse cem sessizce hata vermek yerine kabul edilen değerleri kullanıcıya söylüyor.
Terminali olmayan ortamlar için de bir yol düşündüm. IDE eklentisi, kurulum betikleri ya da sürekli entegrasyon ortamları cem'i komut satırı bayraklarıyla yapılandırabiliyor ve durumunu makinenin okuyabileceği JSON biçiminde alabiliyor. Bu sayede cem, ayar dosyasını yazan tek program olarak kalıyor.
Teknik altyapı
cem'i Go ile yazdım. Kurulumla birlikte üç komut geliyor: düzenleyici görevi gören cem, yapay zekâ komut satırı araçlarını kuran cemi ve onları kaldıran cemir. macOS, Linux, WSL ve Windows için tek satırlık bir kurulum komutu var. Node.js gibi bir ön koşul eksikse cem onu da işletim sistemine uygun paket yöneticisiyle kurmayı teklif ediyor.
Yerel model sunucularıyla HTTP üzerinden konuşuyor. Yanıtlar üretildikçe akış hâlinde ekrana geliyor, çünkü yerelde çalışan büyük bir model uzun bir yanıt için dakikalar harcayabiliyor ve bütün yanıtı beklemek programın donduğu izlenimini veriyor. Bağlantı kurmak için ayrı ve kısa bir süre sınırı var; böylece kapalı bir port hemen hata veriyor.
Düzenleyiciler tarafında GoLand, PyCharm ve diğer JetBrains IDE'leri için JetBrains Marketplace'te yayımlanan bir eklenti var. VS Code ve Cursor için ayrı bir eklenti, Claude Desktop ve Continue.dev için bir MCP sunucusu (Model Context Protocol, yapay zekâ uygulamalarının dış araçlara bağlanmasını sağlayan protokol), Vim, Neovim ve Emacs için de hazır tarifler bulunuyor. cem kurulu yapay zekâ araçlarını günde bir kez arka planda kendiliğinden güncelliyor. Sürümleri tarih tabanlı numaralandırırım. Proje MIT lisansıyla yayında.
Kullanım alanları
- Yapay zekâ ile kod yazarken maliyeti düşürmek isteyen bireysel geliştiriciler.
- Güçlü bir modelin planlamasını ucuz ya da yerel bir modelin uygulamasıyla birleştirmek isteyen ekipler.
- Kodunu dışarıya göndermek istemeyip yerel ağdaki bir GPU sunucusunda model çalıştıran geliştiriciler.
- Bir kod değişikliğini komut satırından hızlıca incelemeye göndermek.
- Birden fazla yapay zekâ aracını ve API anahtarını tek bir yerden yönetmek.
- Kategori
- Yapay zekâ araçları
- Yıl
- 2026
Teknolojiler
- Go
- LLM
- CLI
- IntelliJ Plugin
- Open Source
Bağlantılar
- GitHub https://github.com/muslu/cem
- JetBrains Marketplace https://plugins.jetbrains.com/plugin/34196
- cem.pw https://cem.pw