Claude Code’un Claude.md’yi sunucuya hangi biçimde gönderdiğini ve skill asıl metnini nasıl ilettiğini görebilen bir proxy aracı geliştirdim.
(github.com/kangraemin)Claude Code ile çalışırken bir anda, CLAUDE.md dosyası ya da skill, rules / memory gibi verileri Claude sunucusu nasıl algılıyor acaba diye merak ettim.
Bu yüzden trafiği görebileceğiniz bir MITM proxy’yi bizzat oluşturarak bir araç yaptım.
Mantık şu: Claude Code’u çalıştırırken baseURL değiştirilerek, Claude Code içinde gerçekleşen HTTP iletişimi yakalanıp gösteriliyor.
Bu araçla öğrenebildiğim noktalar şunlar oldu.
hello gibi tek bir söze 12KB ekleniyor
- Bu, Claude Code’u açar açmaz
hellogönderdiğiniz andaki durum. content[0]skill listesi ~2KB,content[1]CLAUDE.md~10KB,content[2]ise gerçek girdi olanhellometni olarak gönderiliyor.- Yani
CLAUDE.md500 satırsa her istekte tamamı gönderiliyor; bu daCLAUDE.mddosyasını neden kısa ve öz tutmak gerektiğini gösteriyor.
Konuşma biriktikçe her istek kartopu gibi büyüyor
- Her istekte
messages[]dizisinin tamamı yeniden gönderiliyor. — 1 tur 15KB, 10 tur 200KB, 30 tur 1MB+ - Hatta Claude’un daha önce verdiği yanıtlar da istek mesajına dahil ediliyor.
- Bağlam penceresini düzenli olarak
/clearile temizlemezseniz, token israfının yanı sıra önceki bağlamın sonraki bağlamla sürekli birlikte taşınması nedeniyle performans düşüşü yaşanabileceğini gördüm.
MCP araçları yalnızca gerektiğinde yükleniyor
- Başta yalnızca yerleşik N adet araç yükleniyor (Claude sürümüne göre değişir); MCP tool kullanmak gerektiğinde sunucu
ToolSearchçağrısı yaparak kullanılacak aracı buluyor. - Sonrasında her çağrıda, yukarıda bulunan araç eklenmiş şekilde çağrı yapılıyor.
- Yani MCP Tool dinamik olarak yüklendiği için, hiç kullanılmamış MCP araçları pratikte büyük bir token tüketimine yol açmıyor.
Alt ajanlar tamamen izole bir bağlamda çalışıyor
- Alt ajanlar, üst konuşma geçmişi hiç olmadan yeni bir oturum açılmasıyla aynı şekilde çalışıyor.
- Inspector’da üst/alt ajan çağrılarını yan yana görsel olarak karşılaştırabilirsiniz.
Tek bir görsel eki yüzlerce KB ekliyor
- Ekran görüntüsü eklendiğinde base64 olarak kodlanıp JSON gövdesine satır içi olarak yerleştiriliyor.
- Görselin isteği ne kadar büyüttüğünü gerçek zamanlı olarak görebilirsiniz.
Aşağıdaki komutla kurabilirsiniz.
brew install --cask kangraemin/tap/claude-inspector && sleep 2 && open -a "Claude Inspector"
GitHub: https://github.com/kangraemin/claude-inspector
Şimdilik yalnızca macOS destekliyor ve erken bir sürüm olduğu için, iyileştirme önerilerinizi memnuniyetle karşılarım.
Dener, öğrenmenize katkı sağlar umarım; teşekkürler!
4 yorum
suspiciously precise floats, or,
how I got Claude's real limits yazısı'nda, API maliyetlerinden farklı olarak abonelik planında önbellek okuma maliyeti olmadığına dair bir analiz vardı. Oturum uzadıkça hesaplanan maliyet ile gerçek maliyet arasında biraz sapma olması da muhtemel görünüyor.
Aa... hiç bilmediğim bir yazıymış... bir kontrol edeceğim! Teşekkürler
https://github.com/badlogic/lemmy/tree/main/apps/claude-trace
Bununla prompt'u ve hangi araçların kullanıldığını inceledim; sizin yaptığınızı da denemem gerekecek gibi görünüyor.
Paylaştığınız için teşekkürler. :+1:
Ek olarak, istekten sonra response içinde o request’te kullanılan token miktarını da görebilirsiniz!
Model: claude-sonnet-4-6
İstek boyutu: 68.9 KB
"usage": {
"input_tokens": 3,
"cache_creation_input_tokens": 12394,
"cache_read_input_tokens": 6499,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 12394
},
"output_tokens": 74,
"service_tier": "standard",
"inference_geo": "not_available"
}
Ayrıca model bazlı fiyatlandırmayı uygulayarak request başına maliyeti de hesapladım, bol bol kullanın haha
Cache okuma: 6.5K tok × $0.3/MTok = $0.0019
Cache yazma: 12.4K tok × $3.75/MTok = $0.0465
Cache’siz giriş: 3 tok × $3/MTok = $0.0000
Çıkış: 74 tok × $15/MTok = $0.0011
Toplam: $0.0495
Cache isabet oranı: 34%