Agent'ın bir kara kutu
Claude Code, Codex ve Gemini CLI, başkasının tasarladığı agent harness'larıdır — ve iş gününü bunlardan birinin içinde geçiriyorsan, bu tasarım kararıyla yaşıyorsun demektir. Bir davranışı değiştirmek, bir araç eklemek, bir izin kuralını sıkmak mı istiyorsun? Satıcının canı isteyene kadar bekliyorsun. System prompt'ta ne olduğunu bilmiyorsun, araçları çalıştıran döngüyü görmüyorsun ve bunların hiçbirini değiştiremiyorsun — üstelik bu araçlar binlerce geliştiricinin ana çalışma alanı haline gelmişken.
Bir açık kaynak proje tam tersi yolu seçti: pi, model bağlayıcısından arayüze kadar kendi agent'ını kurman için yedek parçaları veren bir toolkit. İlk yılında 92.000 GitHub yıldızı topladı ve neredeyse her hafta bir sürüm çıkarıyor. Bu yazı pi'ın kutuya gerçekten ne koyduğunu, SDK'sıyla kendi agent'ını nasıl kuracağını ve hazır harness'lara karşı dürüst bir değerlendirmeyi ele alıyor.
Harness gerçekte nedir
Harness, bir dil modelini çalışan bir agent'a dönüştüren, onun çevresindeki tüm mekanizmadır. Tek başına bir model sadece tek bir şey yapabilir: metin okumak ve metin üretmek. Dosyalarını okumaz, tek bir komut çalıştırmaz ve bir oturumdan diğerine hiçbir şey hatırlamaz. Geri kalan her şey harness'tır — modeli çerçeveleyen system prompt, ona sunulan araçlar, araç çağrılarını çalıştırıp sonuçları geri döndüren döngü ve terminalindeki arayüz.
Harness ayrıca her gün fark yaratan detayları da belirler: bağlam taştığında geçmiş nasıl sıkıştırılır, bir araç hatası modele nasıl döner, ne loglanır ve ne loglanmaz. Claude Code bir harness. Codex de öyle. Bir agent seni etkilediğinde, payın büyük kısmı modele değil bu mekanizmaya aittir — aynı modeli iki farklı harness'a bağla, tamamen farklı seviyede iki agent elde edersin.
Earendil Works'ün yaptığı pi, bu mekanizmayı yeniden kullanılabilir bloklara ayırıyor. Coding agent'ını olduğu gibi kullanabilirsin ya da blokları tek tek alıp kendininkini kurabilirsin. Bizim ilgilendiğimiz ikinci seçenek.
pi toolkit'in içinde
pi bir monorepo — tek bir depoda ayrı ayrı yayınlanan beş paket barındırıyor — ve her paket harness'ın bir katını kapsıyor:
| Paket | Ne yapar |
|---|---|
| pi-ai | OpenAI, Anthropic, Google ve gerisine tek bir arayüz: yanıt akışı, düşünme seviyeli akıl yürütme blokları, her sağlayıcının sunduğu modellerin dinamik keşfi. Lab değiştirmek tek bir argümanı değiştirmek kadar kolay. |
| pi-agent-core | Agent döngüsünün kendisi: konuşma durumu, artı mesajı gönderen, araç çağrılarını okuyan, onları çalıştıran ve görev bitene kadar sonuçları döndüren döngü. Başarısız araç, yarıda kesilen yanıt, paralel gelen çağrılar gibi çetrefilli durumlar zaten çözülmüş. |
| pi-tui | Diferansiyel render kullanan bir terminal render kütüphanesi: ekranda sadece değişeni yeniden çizer. |
| pi-coding-agent | Yukarıdaki bloklardan kurulmuş eksiksiz coding agent — kitin bitmiş bir ürün için yeterli olduğunun kanıtı. |
| pi-telemetry | Bir satıcıya bağlı olmadan kendi kullanım metriklerini ekle. |
Agent döngüsü, sıfırdan yazsan kötü yazacağın tam olarak o parça; onu doğru yazmak haftalar sürer, sen bunu bir import'la alırsın. Ekip aynı tarifi başka yerde de uyguluyor: ayrı bir depo olan pi-chat, aynı blokları konuşma otomasyonu için yeniden kullanıyor.
Sayılar formülün işe yaradığını gösteriyor:
| Metrik | Değer |
|---|---|
| GitHub yıldızı | 92.123 |
| Fork | 11.400 |
| Commit | 5.700+ |
| Lisans | MIT |
| Ağustos 2026'nın ilk iki haftasındaki sürümler | 3 (v0.84.2, 14 Ağustos'ta çıktı) |
MIT lisansı, pi'ı ticari bir üründe bile olsa kısıtlama olmadan kullanabileceğin, değiştirebileceğin ve dağıtabileceğin anlamına geliyor. pi sadece bir framework daha değil: parçalara ayrılmış tam bir harness, ve istikrarlı bir tempoda sürdürülüyor.
Pratikte CLI
pi'ın CLI'ı, herhangi bir koda dokunmadan önce elinde bulacağın, zaten kurulmuş coding agent. Buradan başlayacaksın. Kurulum tek satır, ve --ignore-scripts bayrağı önemsiz bir detay değil: bağımlılıklarının kendi kurulum betiklerini çalıştırmasını engelliyor, npm'de en çok istismar edilen saldırı yüzeylerinden biri. pi'ı çalıştır, login komutuyla sağlayıcını bağla, ve terminalinde hemen bir coding agent oluşur. Durum çubuğu mevcut klasörü, oturumu, harcanan token'ları ve gerçek zamanlı maliyeti gösterir — ay sonunda faturayı keşfetmek yerine, her isteğin fiyatını çıktığı anda görürsün.
Slash komutları günlük işi kapsıyor: model modeli değiştirmek için, compact bağlam şiştiğinde geçmişi özetlemek için, export konuşmayı çıkarmak için, settings geri kalanı için. Prompts klasöründeki bir markdown dosyası, adını yazarak tetiklediğin bir komut olur.
pi'ın gerçek imzası oturum yönetiminde. Her konuşma home klasöründe JSONL olarak, projeye göre kaydedilir — ve geçmiş aslında bir çizgi değil, bir ağaçtır. Konuşmanın herhangi bir noktasına geri dönebilir ve fork komutuyla başka bir yol tutabilirsin, sonra tree ile dallar arasında gezersin. Başarısız bir prompt artık hiçbir şeye mal olmuyor: önceki düğüme dön, diğer dalı kaybetmeden yeniden dene. Her şey yerel olarak saklandığı için, resume seni haftalar sonra bile geçmişteki herhangi bir oturuma döndürür. Ne Claude Code ne de Codex bu şekilde bir geçmiş gezintisi sunuyor.
Varsayılan olarak model sadece dört araç alır: read, write, edit ve bash. Piyasadaki agent'lara kıyasla çok az, ve bu kasıtlı (aşağıda buna geri döneceğiz). Yapılandırma da aynı mantığı izliyor: home klasöründe global bir ayar dosyası, onu ezen proje başına bir dosya, ve ilk kez açtığın bir klasörün yerel ayarlarını uygulamadan önce soran bir güven sistemi. Geçiş yapıyorsan, pi mevcut AGENTS.md veya CLAUDE.md dosyalarını otomatik olarak bağlam olarak yükler, yani mevcut talimatların yeniden yazılmadan çalışır.
Kendi agent'ımızı kuruyoruz
pi'ın SDK'sıyla bir agent kurmak tek bir import ile başlıyor: createAgentSession'a bir model runtime ve bir session manager verirsin, o da çalışan bir agent döndürür. Session manager kalıcılık tercihidir — tek kullanımlık bir betik için bellek, ya da bir çalıştırmadan diğerine konuşmalarını bulmak için disk.
Yerel bir projede denedik. Betiğimiz mevcut klasörde ne var diye soruyor; agent read aracını çağırıyor, klasörü okuyor ve cevap veriyor. İşte bu tam döngü, bizim yazdığımız, yaklaşık on satır TypeScript. SDK'nın oluşturduğu oturumlar da CLI'ınkiyle aynı ağaç yapısına sahip — her mesaj ebeveynine bağlı — yani geçmiş dallanması kendi kodunda da çalışıyor.
Özel araçlar burada ilginçleşiyor. defineTool bir isim, bir açıklama, tipli bir parametre şeması ve bir execute fonksiyonu alır, ve aracın modele tam olarak read ya da bash gibi görünür. Kanalın video listesini sorgulayan bir tane yazdık, customTools'a verdik, ve agent ilk ilgili sorudan itibaren onu kendiliğinden çağırdı. Bu temelde bir MCP sunucusuyla aynı mekanizma, sadece her şey kendi dosyanda yaşıyor — ayrı bir işlem ve aralarında bir protokol olmadan. Parametre şeması tipli olduğu için, editörün argümanları otomatik tamamlıyor ve agent zaten doğrulanmış girdiler alıyor.
Modeli de kontrol edebilirsin, tamamen kapalıdan maksimuma düşünme seviyesini, modelin gördüğü araçların tam listesini, ve boş bir sayfadan başlamak istersen bir resource loader üzerinden tüm system prompt'u bile. Görüntülemek için de, session.subscribe sana her olayı — akan metin, araç çağrıları, hatalar — verir, istediğin yere yönlendirirsin: bir terminal, bir mesajlaşma botu, ya da pull request'lerine yorum yapan bir CI pipeline'ı. Bir öğleden sonrada bir agent kullanan biri olmaktan onu yazan birine geçersin, ve döngünün her turunda ne olduğunu sonunda öğrenirsin.
Fork'suz genişletmek
pi'ın CLI'ı dört mekanizmayla özelleştiriliyor, hepsi projendeki ya da home'undaki sıradan klasörlerde:
- Extensions — araç, slash komut, klavye kısayolu ya da UI öğesi kaydeden TypeScript modülleri. Dosyayı extensions klasörüne koyarsın, başlangıçta yüklenir. Örneğin bir izin bekçisini yazacağın yer burası: bash komutlarını yakalayıp tehlikelilerden önce onay isteyen bir extension.
- Skills — Agent Skills standardını izleyen yetenek paketleri, Anthropic'in yaygınlaştırdığı aynı standart, yani mevcut skill'lerin olduğu gibi yeniden kullanılabiliyor.
- Prompts — yeniden kullanılabilir prompt'ları markdown dosyaları olarak.
- Themes — CLI çalışırken sıcak yeniden yükleniyor.
Hepsi herhangi bir paket gibi kurulur: pi install bir npm paketi ya da git repo alır, tek komut hepsini günceller. Dokümanlar felsefeyi tek cümlede özetliyor: pi'ı iş akışına, tersi değil, fork ya da iç yamalar olmadan uydur.
Bu, büyük harness'ların tam tersi. Claude Code sub-agent'ları, plan mode'u ve izinleri ürünün içine koyarken, pi bunları bilerek dışarıda bırakıyor — extension olarak inşa edilmek ya da topluluktan kurulmak üzere. Bahis net: neredeyse hiç kıpırdamayan minimal bir çekirdek, ve tüm özelleştirme senin tarafında yaşıyor, projenle birlikte versiyonladığın dosyalarda.
Gerçek sınır
pi'ın şeffaflığının bedeli emek, ve bu bedel üç parçadan oluşuyor.
Önce guardrail'ler: varsayılan olarak yerleşik izin istemleri yok, yani agent sana hiçbir şey sormadan bir bash komutu çalıştırabilir. Resmi dokümanlar bunu kabul ediyor ve Docker dahil üç izolasyon kalıbı öneriyor — ama önemli bir makinede agent'ı serbest bırakmadan önce bunları kurmak sana kalmış.
Sonra olgunluk: bu v0.84, 1.0 değil, yaklaşık yüz açık sorunla ve son haftalarda eklenen uzak oturum istemcisi gibi hâlâ deneysel işaretli birkaç API ile. Bugün çalışan bir şey bir sonraki sürümde bozulabilir; bu, bu kadar hızlı ilerleyen bir projenin normal bedeli.
Ve son olarak, zaman. Claude Code'un kutudan verdiği her konfor — plan mode, sub-agent'lar ya da ince izinler — burada kendin inşa etmen gereken bir proje oluyor, ya da bakımı sürsün diye peşinden koştuğun bir topluluk paketi. Extension ekosistemi daha bir yıllık: hazır paketlerden çok daha fazla doldurulacak boşluk bulacaksın. Kurulumun kendisi bile --ignore-scripts bayrağıyla ne kadar dikkat gerektiğini gösterdi, ve bu seviyeyi tüm zincir boyunca korumak zorundasın. Hedefin bu gece kod göndermekse, pi seni hızlandırmadan önce yavaşlatacak — sadece bu video yüzünden bu hafta ana harness'ını değiştirme.
pi gerçekten kimin için
pi, sadece bir agent'la değil, agent'larla ürün yapan geliştiriciler için. Onlar için bu, şu an muhtemelen en iyi öğrenme yatırımı: CLI'ı kur, SDK ile yirmi satırlık bir agent yaz, ve ona kendi aracından bir tane ver. Bunu yap ve Claude Code'u çoğu kullanıcısından daha iyi anlarsın.
Bugün sadece üretken bir asistan istiyorsan, entegre harness'ını kullanmaya devam et, 1.0 guardrail'leri getirince dön: pi'ın değeri anlamak ve kontrolde, anlık konforda değil. İkisinin arasında riski olmayan bir orta yol da var — işin için Claude Code'u tut, ve pi'ı ana aracının senden ne sakladığını anlamak için test alanı yap.
En büyük çıkarımımız, harness'ların artık kara kutu olmadığı. Parçalar masanın üstünde, belgelenmiş, MIT lisanslı. Bir dahaki sefere bir agent seni etkileyip sinirlendirdiğinde, hangi parçaya bakacağını tam olarak bileceksin.
AIDive