session-watch
Bu session'ın durumunu sidebar'da gösteren bir Claude Code Mod'u: context doluluğu, token toplamları, maliyet, model ve thinking seviyesi, Claude Code sürümü, git branch'i ve durumu.
Ne gösterir
Sidebar'ın en üstünde bir bölüm (order: 5), Claude Code 2.1.282 üzerinde ölçüldü:
session-watch: session
context 8% · 81k / 1.0M
tokens T 81k · I 2 · O 8 · CR 74k · CW 7k
cost $0.07
model opus-5-5[1m] · thinking medium
Claude Code 2.1.282
main · 1 untracked · no upstream
context: son cevabın input token'ı, modelin context window'u ve ikisinin oranı. %50 altı yeşil, %50 ile %80 arası sarı, %80 üstü kırmızı. Üç değeri de engine verir ($.session.usage().context), mod hiçbirini hesaplamaz. İlk cevaptan önce satırcontext: no reply yetyazar.tokens: session'ın toplamları:Thepsi,Iinput,Ooutput,CRcache read,CWcache write. Toplamı tutulmamış bir session, toplamları bir kez kendi transcript'lerinden (main loop'unkinden ve her subagent'ınkinden) okur ve her model cevabını bir kez sayar. Ondan sonra her turn kendi token'larını ekler, bir subagent'ınki de. Hiçbir transcript'in kaydetmediği bir request döndüğü anda sayılır: bir plugin'in kendi model çağrısı ($.model.fork,$.model.complete, örneğin memory-save'in her turn sonunda çalıştırdığı fork) ve bir compaction özeti. 2.1.282 üzerinde ölçüldü: 16 input token'lık bir fork ve 14'lük bir completionI'yı 2'den 32'ye çıkardı, ve bir forkturn.completetetiklemez, bu yüzden bir kez sayılır. Toplamlar session başına$.storeiçinde tutulur, böylece reload edilen bir modül kaldığı yerden devam eder. Transcript'ler okunurken satırtokens: reading the transcriptsyazar. 2.1.282 üzerinde resume edilen bir session'da ölçüldü: toplamlar/cost'un session modeline ait satırına eşitti,6 input, 19 output, 222.3k cache read, 21.5k cache write.cost: session'ın maliyeti,/cost'un toplamı olarak ABD doları.model: main loop'un modeli ve main loop'un son model request'inin thinking ayarı (effort):lowilemaxarası, bir budget, effort'u olmayan bir model içinno thinking setting, ya da ilk request'ten öncethinking: not read yet. Modelin adı ailesine göre renklenir, en pahalısı en sıcak renkte: opus kırmızı, fable sarı, sonnet yeşil, haiku soluk. Thinking seviyesi ne kadar zorladığına göre renklenir:lowsoluk,mediumyeşil,highsarı,xhighvemaxkırmızı. Tek bir kelimeyi renklendirmek için sidebar 0.11.0 veya sonrası gerekir; daha eski bir sidebar satırı tek renkle çizer.Claude Code: engine'in sürümü.- Git satırı: branch (ya da
detached at <sha>), staged, modified, untracked ve conflicted dosyalar, upstream'in önünde ve arkasında olan commit'ler (↑1 ↓0, ya dano upstream). Ağaçta değişiklik varken sarı, temizken yeşil. Bir repository dışındagit: not a repositoryyazar.
Bir status line, sidebar kapalıyken ya da kurulu değilken bölümün yerine:
session-watch: ctx 8% · $0.07 · main*
Branch'ten sonraki *, değişiklik olan bir ağacı işaretler. Sidebar bölümü tuttuğu sürece status line temizlenir.
Ne zaman okur
- Session başında.
- Her main loop turn'ünün sonunda.
gitadını geçen her Bash komutundan sonra, böylece bir commit, checkout ya da pull hemen görünür.- Interactive bir session'da her 10 saniyede bir, böylece session dışında yapılan bir değişiklik (başka bir terminalde bir checkout) da görünür. Önceki 30 saniyelik timer ile ölçüldü: dışarıdan stage edilen bir dosya, bir tick içinde
1 untrackedsatırını1 stagedyaptı. - Bir plugin'in kendi model çağrısından (
$.model.fork,$.model.complete) ya da bir compaction'dan sonra, böylece memory-save'in turn sonundaki fork'u hemen görünür. Yeniden çizim bir timer'dan çalışır, bu yüzden çağrıyı yapan taraf onun git çalıştırmasını beklemez. /session-watchçağrısında. Bu komut bölümün satırlarını da yazar.
Her okuma, session'ın başladığı dizinde bir kez git status --porcelain=v2 --branch çalıştırır. Başarısız bir okuma bir kez cannot read the session: <hata> olarak loglanır.
Komut
/session-watch bölümün satırları, şimdi okunmuş
Kurulum
claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install session-watch@kilimcininkoroglu-mods
Function hook'lar early access. Flag olmadan hiçbir şey yüklenmez. Flag'i kalıcı yapmak için ~/.claude/settings.json dosyasına ekleyin:
{ "env": { "CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1" } }
Kurulumdan sonra
- Claude Code'u yeniden başlatın.
- sidebar mod'unu kurun ve
/sidebarile açın. O olmadan mod kısa status line'ı yazar. gitkurun. O olmadan git satırı hatayı yazar.
Nereye uzanır
Claude Code 2.1.282 üzerinde claude plugin validate ile doğrulandı:
❯ ./register.ts hooks: session.start, turn.step, turn.complete, model.fork, model.complete, session.compact, tool.call{tool=Bash}, command.run{command=session-watch}
❯ ./register.ts calls: $.clock.after (via countCall, startTotals), $.clock.every, $.command.register, $.env.get (via configDirOf), $.fs.exists (via transcriptsOf), $.fs.list (via transcriptsOf), $.fs.stat (via transcriptsOf), $.process.run (via readGit), $.process.spawn (via readTotals), $.session.id, $.session.model (via readNow), $.session.root, $.session.usage (via readNow), $.session.version, $.sidebar.set (via show), $.store.delete (via startTotals), $.store.get (via keepTotals, startTotals), $.store.set (via keepTotals), $.ui.log (via refresh, seedTotals, startTotals), $.ui.status (via show)
Reach L2, git ve head çalıştırır.
1. Okur: session'ın usage değerlerini (context, maliyet), modelini, id'sini, başlangıç dizinini ve engine sürümünü; her turn'ün token sayılarını, her plugin model çağrısının ve compaction'ın usage'ını ve her request'in thinking ayarını; git adını geçip geçmediğini görmek için her Bash komutunun metnini; toplamı tutulmamış her session'da bir kez, <config dizini>/projects/ altındaki transcript'lerini, yalnız model cevaplarının usage alanını
2. Çalıştırır: her okumada session'ın başlangıç dizininde git status --porcelain=v2 --branch; her transcript üzerinde bir kez head -c <boyut>; interactive bir session'da bir 10 saniyelik timer
3. Gönderir: makineden hiçbir şey çıkmaz
4. Saklar: $.store içinde son 20 session'ın token toplamlarını
5. Düşman girdi: git'in çıktısı satır biçimine göre parse edilir ve yalnız sayılır; bir transcript satırı JSON olarak parse edilir ve yalnız dört token sayısı eklenir, başka tipte bir sayı hiçbir şey eklemez; başka biçimde saklanmış bir değer yok sayılır
Sınırlar
- Engine'in kendi yan çağrıları (
/cost'takihaikusatırının bir kısmı) hiçbir hook'a ulaşmaz ve sayılmaz; 2.1.282 üzerinde ölçüldü, bir probe session'ında 902 haiku input token'ının 888'i.$.model.classifyusage bildirmez ve o da sayılmaz.costher request'i sayar. - Modül yüklenmeden önce yapılmış bir plugin model çağrısı ya da compaction hiçbir kayıt bırakmadı, bu yüzden kurulumdan önce açılmış bir session onları kalıcı olarak kaçırır.
- Transcript'lerin boyutlarının okunduğu anı aşan bir turn iki kez sayılabilir: o andan önce yazılan cevapları transcript'ten okunur,
turn.completede bütün turn'ü ekler. - Thinking ayarı main loop'un son request'inindir; bir subagent'ın kendi ayarı gösterilmez.
git statussession'ın başladığı dizini okur; başka bir repository'ye yapılan bir Bashcdonu taşımaz.- git'i adını geçmeden bir script üzerinden çalıştıran bir Bash komutu, git satırını yalnız turn sonunda ya da timer'da yeniler.
Geliştirme
make install # eslint, typescript-eslint, typescript
make lint # complexity limiti 10, üstünde build'i düşürür
make typecheck # /plugin-types ile üretilen .claude/types/ gerekir
make validate
make test # claude plugin test