İçeriğe geç

Oturum ve maliyet

Oturumun ne kadar dolduğu ölçülür, tahmin edilmez: her turda okunan gerçek token sayısı, /context’in verdiği değerin aynısı. %75’te bir uyarı, %90’da bir tane daha; ikisi de turunuzu kesmez.

Sabit maliyet gizlenmiyor, yazıyor. Disiplin ile birlikte her ajan ve skill tarifi her oturuma yüklenir: smoke-test.sh’in ölçtüğü 32.107 bayt. Aynı malzemenin 21.804 baytının 9.198 token ettiği gerçek bir claude -p turu oranı veriyor; bu oranla yaklaşık 13,5 bin token. Süitin kapı olarak tuttuğu sayı bayt rakamı. Eklediğiniz her skill, her oturuma ~100 token’lık kalıcı bir vergi bindirir; bu yüzden bileşen başına bayt bütçesi bir kapı olarak uygulanır. Bütçeyi yükseltmek testte açık bir düzenleme ister.

Neden daha az bileşen kurulmuyor? Çünkü kazancı yok denecek kadar az. Bütün ajan ve skill tarifleri toplam 14.946 bayt, aynı oranla yaklaşık 6,3 bin token tutar; dört UI skill’i ile frontend ajanını dışarıda bırakmak bunun 1.587 baytını, kabaca 670 token’ı kazandırır. Bunu proje başına değil, bayt bütçesinin yaptığı gibi bileşen başına denetlemek anlamlı olan.

Bir oturumun maliyetinin çoğu, her işi koşan modeldir; bu yüzden model oturum başına değil iş başına seçilir. Bir crew-* ajanı bir kartla çağrılır (dosyalar, değişiklik türü, işi kanıtlayan komut) ve kararı kart verir: bir komutun denetlediği işte haiku, sıradan işte ve hiçbir şeyin doğrulayamadığı işte sonnet, kritik işte (migration, güvenlik, mimari, nedeni bilinmeyen hata ya da auth, ödeme, migration gibi yollardaki dosya) opus. Düz yazı iki yönde de istisnadır: bir metin değişikliği onu denetleyecek komut olmadan da haiku’da koşar (düz yazıyı zaten yalnız bir okur denetler, commit mesajını da commit hook’u), kritik yolda ise sonnet yazar, denetimi opus’ta kalır. Çağrı bir effort da belirtir: medium, test koşusunda low, hiçbir zaman high’ın üstü değil, çünkü onun bir kademe üstü neredeyse bir üst model kadar tutar. Ajan durduğunda verify komutu koşar; iki kez düşen iş bir kez aynı modelde high effort’la (daha düşükte koştuysa), sonra bir kez bir üst modelle tekrarlanır. Yani küçük kalan bir model ya da effort fazladan bir çalıştırmaya mal olur ve pahalı model ona ihtiyacı olan işe saklanır. Yalnız arayıp okuyan hazır Explore ajanı haiku’da koşar.

Bunun neye mal olduğu, çağrı başına bir satırla .claude/state/model-outcomes.tsv dosyasına yazılır ve projenizde kalır. Studio bunu okur (Studio sayfasına bakın): Models görünümü her iş türü için modeli, ilk denemenin ne sıklıkta geçtiğini, ne sıklıkta bir üst modelle tekrarlandığını ve API liste fiyatıyla tahmini maliyeti gösterir. İlk denemesi çok sık düşen bir sınıf o andan sonra bir üst modelde tutulur; karar verdiğinizde /crew-loosen onu yeniden indirir.

Kartın modeli aynı zamanda varsayılandır. Daha fazlasını isteyen çağrı, kart above: <neden> satırı eklemedikçe kartın modelinde koşar; daha azını isteyen reddedilir. Crew dışındaki ajanların kartı yoktur, bu yüzden yalnız pahalı uç tutulur: above: olmadan opus ya da fable isteyen çağrı sonnet’te koşar; model belirtmeyen bir general-purpose çağrısı (ya da kendi modeli olmayan bir proje ajanı) da öyle, yoksa oturumun modelini alırdı. haiku’daki bir oturuma ve tanımında kendi modeli olan bir ajana dokunulmaz. Bu ajanlar kayda düşmez.

Claude Code’un advisor aracı, modelin iş ortasında ikinci ve genellikle daha güçlü bir modele danışmasını sağlar. Crewforth onu hiçbir zaman açmaz; /crew-doctor açık olup olmadığını, hangi modelde olduğunu ve hangi ayar dosyasından geldiğini söyler.

Maliyeti kendine ait. Her çağrı bütün konuşmayı advisor modelinin fiyatıyla ve önbelleksiz okur: ölçülen bir oturumda Sonnet’in iki cümlelik cevabı $0,06, arkasındaki tek advisor çağrısı $0,15 tuttu. API bu token’ları yanıtın üst düzey kullanımına katmaz. Claude Code onları /usage’da sayar; Studio’nun oturum maliyeti de ekler ve çağrı sayısı ile maliyetiyle bir Advisor satırı gösterir. Hiç çağrı olmayan oturumda bu satır yoktur.

Kartı izlemez. Danışacağı modelin altında kalan bir advisor hiç eklenmez; yani Sonnet advisor varken Opus’taki bir ajan (kritik iş) tavsiye almaz. Advisor model-outcomes.tsv’de yer almaz.

Tek başına Opus’a karşı ölçüldüğünde hiç çağrılmadı. Aynı beş review vakası ve bir uygulama görevi, her kolda iki kez, 24 koşu: Opus advisor açıkken Sonnet onu 12 koşusunun hiçbirinde çağırmadı, yani o kol Sonnet fiyatına tek başına Sonnet’ti. Ekilmiş 6 kusurun 6’sını yakaladı (tek başına Opus 6’da 5), 31 bulgusunun 15’i bir kusurun üstündeydi (Opus 26’da 9), ikisi de görevi iki kez bitirdi, süreleri yakındı, maliyet 1,06 $’a karşı 2,23 $. Örnek küçük ve advisor çağrıldığında ne kattığı hakkında bir şey söylemiyor; söylediği, onu açmanın bu koşuların yaptığını ve maliyetini değiştirmediği. Bu yüzden Crewforth onun için bir kural eklemiyor. packaging/advisor-bench/ ölçümü yeniden koşar, review-bench --advisor kendi vakalarınızı ölçer.

/advisor off ile, kalıcı olarak da CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 ile kapatılır. Anthropic API ister; Amazon Bedrock, Google Cloud Agent Platform ya da Microsoft Foundry’de yoktur.

İstemin altındaki tek satır, Crewforth’un hook’larının bu oturum hakkında bildiklerini söyler:

🛡 BLOCK §4.2 · ✓ commit approved 24m · ⚙ 2 crew agents · 🔋 34% · ~$1.20

Kapının bu oturumdaki son sözü, bir commit ya da push için verdiğin ve hâlâ geçerli olan onay, bu oturumda başlayıp hâlâ koşan crew ajanları, Claude Code’un ölçtüğü bağlam doluluğu ve Claude Code’un oturum maliyeti tahmini. Her parça yalnız söyleyecek bir şey olduğunda görünür ve oturumdan öncesine ait hiçbir şey göstermez: kapı günlüğü zaman taşımaz, yoksa geçen haftanın bir satırı şimdiki gibi okunurdu.

Kurulum onu yalnız projede ya da kendi ayarlarında hiç durum satırı yoksa ekler, çünkü projenin ayarı seninkini ezer. Kendi satırın varsa dokunmaz; /crew-doctor Crewforth’unkinin nasıl açılacağını söyler. Plugin edisyonu durum satırı ayarlayamaz.

Projede bir plan varsa (/crew-plan’ın yazdığı docs/PLAN.md), satırın sonunda kaç işin bittiği görünür: 📋 7/12. /crew-todo paneli satırın altında açar, aynı komut kapatır:

📋 Export — Plan · 7/12 done · phase 2/3 · AC 3/5
✓ Phase 1 — Parser 4/4
◐ Phase 2 — Panel 3/5
✓ 6. Draw the lines
◐ 7. Wire the toggle
☐ 8. Cache the drawing
☐ Phase 3 — Docs 0/3

Biten işin yanında tik (✓), sürenin yanında yarım dolu daire (◐), bekleyenin yanında boş kutu (☐) var; başlanmış bir faz da ◐ alır. Sürüyor diye işaretli iş yoksa ilk bekleyen iş ☐ … ← next diye görünür, sürüyormuş gibi gösterilmez. Yalnız üzerinde çalıştığın fazın işleri açılır. Liste uzunsa sürdüğün işin çevresi görünür, yüksekliği CREW_TODO_LINES belirler (varsayılan 14 satır). Panel planın kendi kutularını okur: - [ ] bekliyor, - [x] bitti, - [~] sürüyor. Her başlık bir fazdır; planda ## Tasks başlığı varsa yalnız onun altı okunur (birkaç planı alt alta tutan bir dosyada, altında iş olan son Tasks başlığı). Panel kutuları kendisi tiklemez, işaretleri işi yapan koyar: planın kuralı, kontrolü geçen işi hemen tiklemek. Plan dosyası henüz yoksa /crew-todo boş bir tane yazar ve her çağrıda dosyayı konuşmada yapılan planla eşitler (plan modunda onaylanan, crew-planner’ın döndürdüğü ya da sonradan eklenen veya biten işler): panel de Studio da yalnız dosyayı okur. /crew-todo <dosya> başka bir planı okur, /crew-todo show paneli sohbete basar.

Panel diskte duran plana değil, sürmekte olan işe bakar. Planın başındaki status: satırı bunu söyler: bir planın işi durunca status: satırı paused (ya da dropped, done) olur; satırdaki sayı kalkar, panel de kimsenin çalışmadığı bir işi göstermek yerine planın beklemede olduğunu tek satırla söyler. Kullanıcı işi durdurduğunda ya da başka işe geçtiğinde bu satırı güncellemek planın kendi kuralı; /crew-todo pause ve /crew-todo resume satırı doğrudan ayarlar. Plan değişmedikçe panel yeniden çizilmez, önbellekten gelir; durum satırına ek yük getirmez.

Bağlam sıkıştırıldığında model konuşmanın kendi özetini tutar. Hemen öncesinde precompact-snapshot.sh hook’u dosyaların ve kapıların söylediğini yazar: dal, commit’lenmemiş dosyalar, kapı kaydındaki son ret, .crewforth/ altındaki kayıtlı bulgular ve bir devir notu olup olmadığı; en fazla yaklaşık 2 KB, deponun git dizininde, yani asla commit’lenmez. Oturum sıkıştırmadan sonra yeniden başladığında session-rehydrate.sh bunu geri verir, yalnız aynı oturuma. Hook sıkıştırmayı asla engellemez.

Studio’nun oturum kartı bağlamın ne kadar dolu olduğunu ve son sıkıştırmadan bu yana içindeki metnin ne kadarının araç çıktısı olduğunu söyler (141k ctx · 55% tool output); üzerine gelince oturumun kaç kez sıkıştırıldığını ve sonuncusunun önce ve sonraki token sayısını gösterir. Pay token değil karakterle sayılır: transcript mesaj parçası başına token tutmaz.