tokensave

resmi

Ajanınızı Anlamsal Kod Zekası ile güçlendirin ve bu süreçte 💰 tasarruf edin!

Tokensave MCP ile neler yapabilirsiniz?

  • Find symbols by name or meaning — Use tokensave_search to locate functions, classes, or types across the indexed codebase.
  • Get task-relevant code context in one call — Ask tokensave_context for entry points, related symbols, and code snippets for a given task.
  • Trace callers and callees of a function — Use tokensave_callers and tokensave_callees to navigate the call graph.
  • Analyze the impact of changing a symbol — Use tokensave_impact to see all code affected by a modification.
  • Identify code quality issues — Use tokensave_dead_code, tokensave_complexity, or tokensave_circular to find unreachable symbols, complex functions, or circular dependencies.
  • Persist decisions across sessions — Use tokensave_record_decision and tokensave_session_recall to save and retrieve design choices.

Dokümantasyon

TokenSave

Yapay Zeka Kodlama Aracıları için Semantik Kod Zekası

Daha az token • Daha az araç çağrısı • %100 yerel

GitHub stars crates.io License: MIT Rust

macOS Linux Windows Hypercommit


Neden tokensave?

Yapay zeka kodlama aracıları, kod tabanlarını keşfederken token israf eder. Her grep, glob ve dosya okuması maliyetlidir. Karmaşık görevlerde, aracılar sadece bağlam oluşturmak için yüzlerce dosyayı tarayan birden fazla Keşif alt aracısı başlatır.

tokensave, aracılara önceden indekslenmiş bir semantik bilgi grafiği sunar. Aracı, dosyaları taramak yerine grafiği sorgular ve anında, yapılandırılmış yanıtlar alır -- doğru semboller, ilişkileri ve kaynak kodu, tek bir çağrıda.

Nasıl Çalışır

┌──────────────────────────────────────────────────────────────┐
│  AI Coding Agent (Claude Code, Codex, Gemini, Cursor, ...)   │
│                                                              │
│  "Implement user authentication"                             │
│        │                                                     │
│        ▼                                                     │
│  ┌─────────────────┐       ┌─────────────────┐               │
│  │  Sub-agent      │ ───── │  Sub-agent      │               │
│  └────────┬────────┘       └─────────┬───────┘               │
└───────────┼──────────────────────────┼───────────────────────┘
            │                          │
            ▼                          ▼
┌──────────────────────────────────────────────────────────────┐
│  tokensave MCP Server                                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐           │
│  │   Search    │  │   Callers   │  │   Context   │           │
│  │   "auth"    │  │  "login()"  │  │   for task  │           │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘           │
│         └────────────────┼────────────────┘                  │
│                          ▼                                   │
│              ┌───────────────────────┐                       │
│              │   libSQL Graph DB     │                       │
│              │   • Instant lookups   │                       │
│              │   • FTS5 search       │                       │
│              └───────────────────────┘                       │
└──────────────────────────────────────────────────────────────┘

tokensave olmadan: Aracılar dosyaları taramak için grep, glob ve Read kullanır -- çok sayıda API çağrısı, yüksek token kullanımı.

tokensave ile: Aracılar MCP araçları aracılığıyla grafiği sorgular -- anında sonuçlar, yerel işleme, daha az token.


Temel Özellikler

Akıllı Bağlam OluşturmaSemantik AramaEtki Analizi
Tek bir araç çağrısı, aracının ihtiyaç duyduğu her şeyi döndürür -- giriş noktaları, ilgili semboller ve kod parçacıkları.Kodu metne göre değil, anlama göre bulun. "kimlik doğrulama"yı arayın ve login, validateToken, AuthService'ı bulun.Değiştirmeden önce neyin kırılacağını tam olarak bilin. Çağıranları, çağrılanları ve herhangi bir sembolün tam etki yarıçapını izleyin.
80+ MCP Aracı50+ Dil12+ Aracı Entegrasyonu
Çağrı grafiği gezintisinden ölü kod tespitine, atomik düzenleme ilkellerine, kod sağlığı metriklerine, test eşleştirmeye ve karmaşıklık analizine kadar.Rust, Go, Java, Python, TypeScript, C, C++, Swift, Svelte, Astro ve WGSL/HLSL/Metal gölgelendiriciler ve Markdown dahil 42 dil daha. Üç kademe (lite/medium/full) ikili boyutu kontrol eder.Claude Code, Codex CLI, Gemini CLI, Qwen Code, Kiro, Cursor, OpenCode, Copilot, Cline, Roo Code, Zed, Antigravity, Kilo CLI, Kimi CLI, Mistral Vibe, Grok Build, Factory Droid.
Çoklu Dal İndeksleme (isteğe bağlı)%100 YerelHer Zaman Güncel
Dal başına isteğe bağlı veritabanları. Checkout'unuzu değiştirmeden dallar arası fark ve arama.Verileriniz makinenizden ayrılmaz. API anahtarı yok. Harici servis yok. Her şey yerel bir libSQL veritabanında çalışır.Her MCP çağrısında isteğe bağlı güncellik kontrolü (30 sn bekleme süresi) ve sunucu bağlandığında yakalama senkronizasyonu. Çoklu aracı çalışmasının git worktree'leri kullanması beklenir — her aracı kendi checkout'unu alır ve indeks farklılıkları bir dosya izleyici tarafından değil, git tarafından birleştirilir.
Alt Süreçle İzole Edilmiş ÇıkarmaKod Sağlığı AnalitiğiAtomik Düzenleme İlkelleri
Herhangi bir tree-sitter dilbilgisindeki yerel bir çökme (abort, segfault, herhangi bir şey) yalnızca çalışanı öldürür; havuz onu yeniden başlatır ve senkronizasyon devam eder. Senkronizasyon, hatalı biçimlendirilmiş bir dosyada asla ölmez.Bileşik sağlık puanı (0-10000), Gini eşitsizliği, dosya-DAG derinliği, tasarım-yapı matrisi, risk ağırlıklı test boşlukları ve oturum deltaları.Dosyaları regex veya kabuk alıntılama tehlikeleri olmadan düzenleyin: benzersiz bağlantı str_replace, atomik çoklu değiştirme, AST-yeniden yazma, bağlantılı ekleme. Yazmalardan sonra otomatik olarak yeniden indeksler.

Hızlı Başlangıç

1. Kurulum

Homebrew (macOS):

brew install aovestdipaperino/tap/tokensave

Scoop (Windows):

scoop bucket add tokensave https://github.com/aovestdipaperino/scoop-bucket
scoop install tokensave

Cargo (herhangi bir platform):

cargo install tokensave                          # full (50+ languages, default)
cargo install tokensave --features medium        # medium tier
cargo install tokensave --no-default-features    # lite (smallest binary)

Önceden derlenmiş ikili dosyalar (Linux, Windows, macOS):

En son sürümden indirin ve ikili dosyayı PATH dizininize yerleştirin.

PlatformArşiv
macOS (Apple Silicon)tokensave-vX.Y.Z-aarch64-macos.tar.gz
Linux (x86_64)tokensave-vX.Y.Z-x86_64-linux.tar.gz
Linux (ARM64)tokensave-vX.Y.Z-aarch64-linux.tar.gz
Windows (x86_64)tokensave-vX.Y.Z-x86_64-windows.zip

2. Aracınızı yapılandırın

tokensave install                         # auto-detects installed agents
tokensave install --agent antigravity     # Google Antigravity (formerly Windsurf)
tokensave install --agent auggie          # AugmentCode
tokensave install --agent claude          # Claude Code
tokensave install --agent cline           # Cline
tokensave install --agent codex           # OpenAI Codex CLI
tokensave install --agent copilot         # GitHub Copilot
tokensave install --agent cursor          # Cursor
tokensave install --agent droid           # Factory Droid
tokensave install --agent gemini          # Gemini CLI
tokensave install --agent kilo            # Kilo CLI
tokensave install --agent kiro            # AWS Kiro
tokensave install --agent kimi            # Moonshot Kimi CLI
tokensave install --agent opencode        # OpenCode
tokensave install --agent pi              # Pi (pi.dev)
tokensave install --agent qwen            # Qwen Code
tokensave install --agent roo-code        # Roo Code
tokensave install --agent vibe            # Mistral Vibe
tokensave install --agent zed             # Zed
tokensave install --agent grok            # Grok Build (xAI)
tokensave install --git-hook yes           # auto-install the global post-commit and post-checkout hooks (no prompt)
tokensave install --git-hook no            # skip the post-commit and post-checkout hooks (no prompt)

Her aracı, MCP sunucusunu yerel yapılandırma formatında kaydeder. Claude Code ayrıca bir PreToolUse kancası (israf eden Keşif aracılarını engeller), bir UserPromptSubmit kancası, bir Stop kancası, CLAUDE.md'de istem kuralları ve otomatik olarak izin verilen araç izinleri alır. Kiro, genel MCP yapılandırması, kaynak olarak yüklenen tokensave.md yönlendirmesi ve izin verilen yerleşik/tokensave araç onayı, yetkilendirme koruma kancaları ve yazma sonrası senkronizasyon içeren tokensave tarafından yönetilen bir varsayılan aracı alır; kullanıcı tarafından yönetilen Kiro aracıları korunur.

Tüm değişiklikler idempotenttir -- yükseltmeden sonra tekrar çalıştırmak güvenlidir. Aracı kurulumundan sonra, size genel git commit sonrası ve checkout sonrası kancaları sunulacaktır.

Proje-yerel kurulum

Varsayılan olarak tokensave install, MCP sunucusunu genel aracı yapılandırmanıza (örn. ~/.claude.json) kaydeder. tokensave'i yalnızca mevcut proje için kaydetmek üzere --local ekleyin:

tokensave install --local --agent claude

Bu, ekibinizle paylaşabileceğiniz ve commit'leyebileceğiniz proje kapsamlı yapılandırma yazar. Claude için bu ./.mcp.json, ./.claude/settings.json ve ./CLAUDE.md'tir. Desteklenen aracılar: claude, cursor, droid, gemini, zed, opencode, roo-code, kiro, auggie (her biri kendi proje dosyasını yazar, örn. .cursor/mcp.json, .factory/mcp.json, .gemini/settings.json, .zed/settings.json, opencode.json, .roo/mcp.json, .kiro/settings/mcp.json, .augment/settings.json). Diğer aracıların proje kapsamlı yapılandırması yoktur ve --local ile bir hata bildirir.

tokensave uninstall --local ile proje-yerel bir kurulumu kaldırın.

3. Projenizi indeksleyin

cd /path/to/your/project
tokensave init

Bu, bilgi grafiği veritabanıyla bir .tokensave/ dizini oluşturur. Başlatma ve senkronizasyon ayrı komutlardır: init proje başına bir kerelik bir katılımdır, sync ise yalnızca önceden başlatılmış projeleri günceller. Bu, genel git kancalarının asla indekslemeyi düşünmediğiniz depolarda sessizce veritabanları oluşturmasını önler. init'dan sonra, artımlı olarak güncellemek için tokensave sync kullanın -- yalnızca değişen dosyalar yeniden indekslenir.

Kurulumun Claude Code için yazdıkları

MCP sunucusu

{
  "mcpServers": {
    "tokensave": {
      "command": "/path/to/tokensave",
      "args": ["serve"]
    }
  }
}

PreToolUse kancası

Kanca, tokensave hook-pre-tool-use'i çalıştırır -- yerel bir Rust komutu (bash veya jq gerekmez). Agent, Grep ve Bash araç çağrılarını yakalar: Keşif aracıları tamamen engellenir ve sembol şeklindeki grep/rg/ag çağrıları (düz tanımlayıcılar, alternasyonlar, \b ile sarılmış adlar) eşleşen tokensave MCP aracına yönlendirilir. Regex desenleri, dosya keşif modları, git grep ve borulu komutlar olduğu gibi geçer; kabuk başına devre dışı bırakmak için TOKENSAVE_DISABLE_GREP_HOOK=1 ayarlayın.

Başsız / alt aracı dağıtımı (claude -p). Bir düzenleme oturumu tarafından dağıtılan alt süreçler, bu kanca dahil olmak üzere ~/.claude/settings.json'ını miras alır. Bir alt öğenin ham aramalar yapmasına izin vermek için, alt öğenin ortamında TOKENSAVE_DISABLE_GREP_HOOK=1 ayarlayın -- yerel ikili bunu onurlandırır ve her yolu (Grep, Bash, Agent) olduğu gibi geçirir, böylece tüm kancaları kaldıran kaba --settings '{"hooks": {}}''a gerek kalmaz. Koruma durumsuzdur: asla alıntı geçmişine danışmaz, bu nedenle yalnızca yukarıda açıklanan sembol şeklindeki aramaları yönlendirir ve yazılmamış araştırma yayılımını yönlendirir; oturum ister etkileşimli ister başsız olsun, sıradan komutlar etkilenmez.

CLAUDE.md kuralları

Claude'a, Keşif aracılarına veya ham dosya okumalarına başvurmadan önce tokensave araçlarını kullanmasını söyleyen talimatları ~/.claude/CLAUDE.md'a ekler.


Çökmeye Dayanıklı Senkronizasyon

Tree-sitter dilbilgileri derlenmiş C/C++ kodudur. Bazen dahili bir iddiaya takılırlar veya Rust panik işlemenin yakalayamayacağı yollarla süreci sonlandırırlar. v4.3.0 itibarıyla, her dosya kısa ömürlü bir çalışan alt süreci içinde ayrıştırılır: bir dilbilgisi segfault yaparsa, abort()'ı çağırırsa veya yığın taşmasına uğrarsa, yalnızca çalışan ölür. Havuz onu yeniden başlatır, sorunlu dosya günlüğe kaydedilir ve atlanır ve sync devam eder.

Çalışan, her oluşturmada 256 bitlik bir belirteçle üst öğeye karşı kimlik doğrulaması yapılan gizli bir extract-worker alt komutudur; hem bir TOKENSAVE_WORKER_TOKEN ortam değişkeni hem de stdin'de alınan ilk 32 bayt olarak gereklidir. Kullanıcılar tarafından doğrudan çağrılması başarısız olur. Varsayılan olarak available_parallelism() çalışandır; TOKENSAVE_DISABLE_SUBPROCESS=1 ile devre dışı bırakın.

Düzenleme ilkelleri (tokensave_str_replace, tokensave_insert_at, vb.) hala süreç içinde çalışır: alt süreç ek yükünün baskın olacağı, her seferinde bir dosyayı hedeflerler ve oradaki bir çıkarıcı çökmesi aracı tarafından hemen görülür.


Çoklu Dal İndeksleme (İsteğe Bağlı)

tokensave, isteğe bağlı olarak git dalı başına ayrı bir kod grafiği tutabilir. Etkinleştirildiğinde, dal değiştirmek size asla güncel olmayan sonuçlar vermez ve başka bir dalda zaten ayrıştırdığınız dosyaları asla yeniden indekslemez. Çoklu dal takibi isteğe bağlıdır -- onsuz, tokensave tüm dallar için tek bir veritabanı kullanır.

Nasıl çalışır

Bir dalı takip ettiğinizde, tokensave en yakın ata veritabanını kopyalar ve yalnızca farklı olan dosyaları senkronize eder. Bu, main'dan ayrılan bir özellik dalını takip etmenin neredeyse anında olduğu anlamına gelir -- yalnızca değiştirdiğiniz dosyaları ayrıştırır.

CLI komutları

tokensave branch add              # track the current branch
tokensave branch list             # see tracked branches and DB sizes
tokensave branch remove <name>    # stop tracking a branch
tokensave branch removeall        # remove all tracked branches except default
tokensave branch gc               # clean up branches deleted from git

Dallar arası MCP araçları

Üç MCP aracı, checkout'unuzu değiştirmeden dallar arası sorgulamalar sağlar:

  • tokensave_branch_search -- başka bir dalın grafiğinde sembolleri ara
  • tokensave_branch_diff -- iki dal arasındaki kod grafiklerini karşılaştır: eklenen, kaldırılan ve değişen semboller (imza farklıysa). Dosya ve tür filtrelerini destekler.
  • tokensave_branch_list -- veritabanı boyutları, üst dal ve senkronizasyon zamanlarıyla takip edilen dalları listele

Dal geri dönüşü

MCP sunucusu mevcut dal için bir veritabanı bulamadığında, en yakın ata dalın veritabanından hizmet verir ve her araç yanıtında tokensave branch add'ı çalıştırmanızı öneren bir uyarı içerir.

Otomatik dal takibi (v7.3.0)

Çoklu dal modu başlatıldıktan sonra (ilk manuel tokensave branch add dal meta verisini oluşturdu), yeni dallar ata veritabanına geri dönmek yerine otomatik olarak takip edilebilir. Bunu iki bağımsız mekanizma kapsar; tek veritabanı modundaki projeler asla etkilenmez ve hiçbir mekanizma varsayılan dalın veritabanına asla dokunmaz.

Git kancası (dal checkout'unda). tokensave install'in kurduğu post-checkout kancası, bir dal checkout'unu (bir dosya checkout'unun aksine) tanır ve arka planda tokensave branch add'ı çalıştırır. Bu komut, dal zaten takip ediliyorsa veya varsayılan dal ise hiçbir şey yapmaz, bu nedenle bilinen dallar arasında sıradan geçiş yapmanın hiçbir maliyeti yoktur.

Açılışta otomatik takip (isteğe bağlı). TokenSave::open çalıştığında — CLI komutu veya MCP sunucusu başlangıcı — ve aktif dal takip edilmiyorsa, tokensave en yakın takip edilen atanın veritabanını kopyalayarak ve dal meta verisine kaydederek onu anında takip edebilir. Bu, auto_track yapılandırma alanı (varsayılan false) veya çalıştırma başına yapılandırmayı geçersiz kılan TOKENSAVE_AUTO_TRACK ortam değişkeni tarafından kontrol edilir (0, false, no, off veya boş hariç herhangi bir değer etkinleştirir). Kopya, manuel bir branch add'in gerçekleştirdiği aynı neredeyse anlık ata-veritabanı kopyasıdır; o anda hiçbir senkronizasyon çalışmaz — post-commit kancası, siz commit yaptıkça yeni dal veritabanını güncel tutar veya hemen yenilemek için tokensave sync'ı çalıştırın. Otomatik takip kesinlikle en iyi çabadır: herhangi bir başarısızlık bir uyarı olarak bildirilir ve open() olağan ata geri dönüşüyle devam eder, böylece bir araç çağrısını asla bozamaz.

Kısacası: kanca kurulu olduğunda, yeni bir özellik dalına geçiş yapmak, ona şeffaf bir şekilde kendi dal başına grafiğini verir; auto_track etkin olduğunda, bir checkout dışında oluşturulan bir dal bile (örneğin, yeni bir worktree'de) tokensave projeyi ilk kez açtığında alınır.

Tam kılavuz için docs/BRANCHING-USER-GUIDE.md dosyasına bakın.


Oturumlar Arası Bellek

Üç MCP aracı, kararları ve kod alanı bağlamını oturumlar arasında kalıcı kılar ve proje başına .tokensave/tokensave.db içinde saklanır.

AraçAmaç
tokensave_record_decisionİsteğe bağlı neden, dosyalar ve etiketlerle bir tasarım/mimari kararını kaydet
tokensave_record_code_areaAjanın üzerinde çalıştığı bir yolu işaretle (dokunma sayacı + last_touched_at)
tokensave_session_recallKaydedilmiş kararlar üzerinde FTS5 sorgusu; iki yazma aracıyla eşleştirin

Ajanın mimari seçimleri oturumdan oturuma yeniden açıklamak zorunda kalmaması için bunları kullanın.


Tasarruf Defteri

Her MCP çağrısı, ~/.tokensave/global.db (savings_ledger tablosu) dosyasına yalnızca ekleme yapılabilir bir satır yazar. tokensave gain ile inceleyin:

tokensave gain                    # current project, last 30 days
tokensave gain --all              # all projects
tokensave gain --history --range 7d
tokensave gain --json

Dolar tahminleri mevcut fiyatlandırma modülünü kullanır (Sonnet girdi fiyatlandırması, LiteLLM aracılığıyla günlük olarak yenilenir).

tokensave gain history output


Tekrarlanabilir Kıyaslama

tokensave bench, tokensave_context üzerinden sabit bir sorgu kümesi çalıştırır ve tam dosya taban çizgisine karşı elde edilen getiri tasarruflarını raporlar (CCE metodolojisini yansıtır):

tokensave bench                                    # ships with 10 default queries
tokensave bench --queries my-queries.toml --json
tokensave bench --max-nodes 5

tokensave bench output

Bu depoya (tokensave kendisi) karşı, birlikte verilen genel sorgu kümesi kullanılarak ölçülmüştür:

#SorguTaban ÇizgisiBağlamTasarrufDosyalarDüğümler
1Yapılandırma başlangıçta nasıl yükleniyor?45.3k454%9945
2Komut satırı argümanları nerede ayrıştırılıp dağıtılıyor?948402%5833
3Ana giriş noktası nasıl organize edilmiş?6.1k251%9638
4Hatalar nasıl tanımlanıyor, sarılıyor ve yayılıyor?3.5k819%7723
5Günlükleme veya tanılama çıktısı nerede yayılıyor?8.6k514%94614
6Testler nasıl organize edilmiş ve hangi test çerçevesi kullanılıyor?3.5k818%7723
7Veriler diske veya bir veritabanına nasıl kalıcı hale getiriliyor?11.9k330%9736
8Eşzamansız görevler veya arka plan işleri nasıl başlatılıyor?29.4k364%9923
9Derleme, bağımlılıkları nasıl bağlıyor ve durumu nasıl başlatıyor?10.9k1.4k%8845
10Genel API yüzeyleri nasıl açığa çıkarılıyor (HTTP uç noktaları, kütüphane dışa aktarımları veya CLI komutları)?22.5k235%9945

Toplam: %88 ortalama getiri tasarrufu (10 sorguda 142.8k → 5.5k token).

Varsayılan sorgu kümesi, çoğu uygulama kod tabanında (CLI'lar, arka plan programları, servisler) bulunan desenleri hedefler. Kendi numaralarınızı görmek için tokensave bench ile kendi projenizde çalıştırın veya daha sıkı geri çağırma için özel bir sorgu dosyası (--queries my.toml) yazın.

Büyük gerçek dünya depolarına karşı Criterion kıyaslaması

benches/large_repos.rs, MCP araçlarını sabit referanslarda sabitlenmiş dört büyük açık kaynak kod tabanına karşı uçtan uca çalıştıran bir criterion mikro kıyaslamasıdır. Her araç, depo başına bir kez indekslenmiş grafikten örneklenen argümanlarla (düğüm kimlikleri, nitelikli adlar, dosya globları, …) en az 5 sorgu tarafından yönlendirilir, böylece zamanlamalar çalıştırmalar arasında tekrarlanabilir.

Depolar ve sabitlenmiş referanslar (benches/repos.rs içinde tanımlanmıştır):

DepoURLRef
polkadot-sdkhttps://github.com/paritytech/polkadot-sdkpolkadot-stable2412
emacshttps://github.com/emacs-mirror/emacsemacs-30.1
scipyhttps://github.com/scipy/scipyv1.14.1
nodehttps://github.com/nodejs/nodev22.11.0

Her depo ilk kullanımda sığ klonlanır (git init + git fetch --progress --depth 1 origin <ref> + checkout FETCH_HEAD) ve yerel olarak önbelleğe alınır; sonraki çalıştırmalar ödemeyi yeniden kullanır. Git çıktısı terminale akıtılır, böylece çoklu GB getirme gerçek zamanlı ilerleme gösterir.

Kapsanan araçlar (her biri 5 sorgu). Okuma araçları — search, context, callers, callees, node, by_qualified_name, signature, impact, body, files, complexity, doc_coverage, largest, hotspots, god_class, module_api, derives, dead_code, rank, coupling, circular. Yazma araçları — str_replace, multi_str_replace, insert_at ve (eğer ast-grep, PATH üzerindeyse) ast_grep_rewrite.

Her çalıştırmada zorla senkronizasyon. Herhangi bir kıyaslama başlamadan önce, çalıştırma düzeneği her depoda tokensave sync --force eşdeğerini çalıştırır (.tokensave/ güncelliğine bakılmaksızın index_all()), böylece zamanlamalar her zaman sabitlenmiş kaynağı yansıtır.

Yazma kıyaslamaları ve temizlik. Yazma araçları dosyaları değiştirir. "Eşleşme benzersiz olmalı" ön koşulunun korunması için, çalıştırma düzeneği criterion'un iter_batched özelliğini kullanır — <repo>/.tokensave-bench-scratch/ altındaki küçük bir karalama dosyası her zamanlanmış yinelemeden önce bilinen içerikle yeniden yazılır, ardından düzenleme aracı ona karşı çalışır. Tüm kıyaslamalar tamamlandıktan sonra, çalıştırma düzeneği hazırlanan her depo içinde git stash --include-untracked && git stash drop çalıştırır, böylece çalışma ağacı sabitlenmiş referansa geri döner.

Criterion yapılandırması. Kıyaslama, criterion'un varsayılanlarını sample_size = 10 ve measurement_time = 30s olarak geçersiz kılar (stok 100 / 5s'ye karşı), bu da sorgu başına zamanlamaya ~30 saniye ölçüm verir — polkadot-sdk üzerindeki tokensave_context gibi yavaş araçların kararlı sayılar üretmesi için yeterlidir.

Çalıştırın:

# Required: a writable cache directory for the cloned repos + their indexes.
# Expect several GB of disk and a long first run (shallow clone + full index of each repo).
export TOKENSAVE_BENCH_REPOS_DIR=~/tokensave-bench-cache

cargo bench --bench large_repos

Eğer TOKENSAVE_BENCH_REPOS_DIR ayarlanmamışsa, kıyaslama bir uyarı yazdırır ve sıfır kıyaslama kaydeder (böylece cargo bench --all katkıda bulunanların makinelerinde ucuz kalır).

Yapılandırma (tümü isteğe bağlı, ortam aracılığıyla):

DeğişkenEtki
TOKENSAVE_BENCH_REPOS_DIRGerekli. Her deponun $DIR/<repo-name>/ dizinine klonlandığı kök dizin.
TOKENSAVE_BENCH_REPOSKıyaslanacak depo adlarının virgülle ayrılmış alt kümesi, örn. TOKENSAVE_BENCH_REPOS=emacs,scipy. Varsayılan olarak dördü de.
TOKENSAVE_BENCH_SKIP_CLONEAyarlanırsa, kıyaslama, getirme yerine zaten sabitlenmiş referansında olmayan herhangi bir depo için hızlıca başarısız olur. CI / çevrimdışı çalıştırmalarda kullanışlıdır.

Kıyaslamaları filtreleme standart criterion CLI'sini kullanır — örneğin, yalnızca scipy üzerindeki search aracı:

cargo bench --bench large_repos -- 'scipy/tokensave_search'

Raporlar (HTML + ham örnekler) target/criterion/ altına iner.

Sabitlenmiş referansları değiştirmek için (örneğin daha yeni bir sürüme veya belirli bir SHA'ya), benches/repos.rs içindeki REPOS düzenleyin ve bir sonraki çalıştırmanın yeniden getirmesi için ilgili $TOKENSAVE_BENCH_REPOS_DIR/<repo>/.bench-ref işaretçisini silin. Çalıştırma sonrası temizliği atlarsanız (örneğin kıyaslama ortasında Ctrl-C yaparsanız), her depo dizini içinde git stash --include-untracked && git stash drop çalıştırmak onu manuel olarak geri yükler.

MCP test matrisi sondası (scripts/mcp_probe)

scripts/mcp_probe/, tokensave serve'ü stdio üzerinden yapılandırılabilir bir gerçek depo kümesine karşı çalıştıran ve dil başına 5 sorgu varyantı ile her salt okunur MCP aracını çalıştıran, araç başına / depo başına bir durum tablosu üreten bir Python çalıştırma düzeneğidir. Aynı düzenek iki amaca hizmet eder:

  • Regresyon taraması. Yeni dil desteği, yeni araç veya bir yeniden düzenleme — matrisi yeniden çalıştırın ve yeni hata veren, zaman aşımına uğrayan veya boş sonuç döndüren herhangi bir hücre 🚩 olarak öne çıkar.
  • Performans sondası. Çağrı başına zamanlamalar TSV olarak günlüğe kaydedilir; aynı sabit depo külliyatı, kaba bir çapraz sürüm karşılaştırması olarak ikiye katlanır. Mevcut tokensave_inheritance_depth döngü hatası, polkadot-sdk üzerindeki tek bir araç >60 s'de zaman aşımına uğradığında bu düzenek tarafından bulunmuştur.

Düzenprobe.py sürücüdür (kimlik eşlemeli JSON-RPC, böylece yavaş bir araç sonraki çağrıları zehirleyemez), isolated.py çağrı başına yeni bir sunucu ile tek bir aracı yeniden çalıştırır (sunucu kuyruklamasından kaçar), build_matrix.py TSV'yi okur ve markdown yayar, tools/<lang>.py modülleri dil başına sorgu kümelerine katkıda bulunur (Rust birlikte verilir; yeni bir modül bırakarak Python/Go/… ekleyin), repos.toml hedef depoları listeler ($TOKENSAVE_PROBE_REPOS aracılığıyla geçersiz kılın).

Hızlı çalıştırma:

cargo build --release --bin tokensave
python3 scripts/mcp_probe/probe.py
python3 scripts/mcp_probe/build_matrix.py > matrix.md

Çıktı hücreleri ✓ 5/5 (temiz), 🐛 e/N (hatalar), ⏱ N/N (zaman aşımları), ∅ E/N (boş), 🐢 ok/slow (>10 s çağrılar) şeklindedir. Hata veya zaman aşımı taşıyan herhangi bir hücre, en sağdaki sütunda bir 🚩 kazanır. Her hatanın ilk 100 karakterini içeren çağrı başına ayrıntı, takip için TSV günlüğüne iner.

Yukarıdaki criterion kıyaslamasından farklıdır: criterion, sabitlenmiş referanslarda odaklanmış bir araç kümesi için yineleme başına gecikmeyi ölçer ve target/criterion/ altında istatistiksel raporlar üretir; mcp_probe, işaret ettiğiniz herhangi bir depoda daha geniş bir sorgu kümesiyle her aracı çalıştırır, ölçüm hassasiyetinden ziyade kapsam genişliği için optimize eder.


80'den Fazla MCP Aracı

Sunucu 80'den fazla araç sunar (isteğe bağlı ast-grep ikili dosyası PATH üzerinde olmadığında bir eksik); aşağıdaki tablolar en yaygın kullanılanları kategoriye göre gruplandırır. Çoğu salt okunurdur, paralel olarak çağrılması güvenlidir ve readOnlyHint ile açıklanmıştır. Düzenleme temelleri tek dosyalarla sınırlıdır ve yerinde yeniden indekslenir; oturum taban çizgisi ve bellek kaydetme araçları da yerel .tokensave durumunu değiştirir ve salt okunur değil olarak açıklanmıştır. Üç temel araç (tokensave_context, tokensave_search, tokensave_status) anthropic/alwaysLoad olarak işaretlenmiştir, böylece istemcinin araç arama gidiş-dönüşünü atlarlar.

Keşif

AraçAmaç
tokensave_contextBir görev için ilgili kod bağlamını al -- giriş noktaları, ilgili semboller, kod parçacıkları
tokensave_searchİsme göre sembolleri bul (fonksiyonlar, sınıflar, türler)
tokensave_nodeBelirli bir sembol için ayrıntıları + kaynak kodunu al
tokensave_filesFiltreleme ile indekslenmiş proje dosyalarını listele
tokensave_module_apiBir dosya veya dizinin genel API yüzeyi
tokensave_similarBenzer adlara sahip sembolleri bul
tokensave_annotationsÖznitelik/ek açıklama/dekoratör iç gözlemi -- tüm ek açıklamaların histogramı veya hedef filtreleriyle site başına listeler
tokensave_dependencies17 ekosistemde paket manifestosu iç gözlemi -- çalışma alanı özeti, paket başına arama, lisans yüzeyi, sürüm kayması
tokensave_statusİndeks durumu, istatistikler, kaydedilen tokenlar

Çağrı Grafiği ve Etki

AraçAmaç
tokensave_callersBir fonksiyonu neyin çağırdığını bul
tokensave_calleesBir fonksiyonun neyi çağırdığını bul
tokensave_impactBir sembolü değiştirmekten neyin etkilendiğini gör
tokensave_affectedKaynak değişikliklerinden etkilenen test dosyalarını bul
tokensave_rename_previewBir sembole tüm referanslar (yeniden adlandırma etkisini önizle)
tokensave_hotspotsEn bağlantılı semboller (en yüksek çağrı sayısı)

Kod Kalitesi

AraçAmaç
tokensave_complexityFonksiyonları döngüsel ve bilişsel karmaşıklık, yuvalama derinliği, Halstead metrikleri, sürdürülebilirlik endeksi, CRAP ve güvenlik metriklerine göre sırala
tokensave_dead_codeUlaşılamaz sembolleri bul (gelen kenar yok)
tokensave_god_classÇok fazla üyesi olan sınıfları bul
tokensave_couplingDosyaları fan-in/fan-out'a göre sırala
tokensave_inheritance_depthEn derin kalıtım hiyerarşilerini bul
tokensave_circularDairesel dosya bağımlılıklarını tespit et
tokensave_recursionÖzyinelemeli/karşılıklı özyinelemeli çağrı döngülerini tespit et
tokensave_unused_importsHiç referans verilmeyen içe aktarma ifadeleri
tokensave_doc_coverageBelgeleri eksik genel semboller
tokensave_simplify_scanDeğiştirilen dosyaların kalite analizi (çoğaltmalar, ölü kod, karmaşıklık)

Kod Sağlığı Analitiği

Beş araç, mevcut grafikten yapısal kalite sinyallerini yüzeye çıkarır. Bileşik puan, hiçbir tek boyutun oyuna getirilememesi için bağımsız boyutlar üzerinde geometrik bir ortalama kullanır.

AraçAmaç
tokensave_healthDöngüsüzlük, derinlik, eşitlik, fazlalık ve modülerlikten bileşik kalite sinyali (0-10000)
tokensave_giniHerhangi bir metrik için Gini eşitsizlik katsayısı (karmaşıklık, satırlar, fan-in/out, üyeler) -- tanrı dosyalarını ve eşit olmayan dağılımı bulur
tokensave_dependency_depthTarjan SCC döngü kırmadan sonra tam zincir yeniden yapılandırması ile en uzun dosya düzeyinde bağımlılık zincirleri (Lakos seviyelendirmesi)
tokensave_dsmstats, clusters veya matrix biçiminde Tasarım Yapı Matrisi -- katmanlama ihlallerini ve gizli bağlantıyı ortaya çıkarır
tokensave_test_riskKarmaşıklığı, fan-in'i, kapsamı ve 90 günlük git dalgalanmasını tek bir puanda birleştiren risk ağırlıklı test açığı analizi

Oturumlar

Bir AI kodlama oturumunun başlangıcında sağlık metriklerinin anlık görüntüsünü alın, ardından neyin iyileştiğini veya gerilediğini görmek için sonunda farkı alın.

AraçAmaç
tokensave_session_startMevcut sağlık metriklerini daha sonra karşılaştırmak üzere bir JSON temel çizgisi olarak kaydet
tokensave_session_endTemel çizgiye karşı yeniden hesapla ve farkı al -- boyut başına deltalar, geçti/kaldı, otomatik temizlik

Düzenleme Temelleri

Ajanların regex veya kabuk alıntılama tehlikeleri olmadan dosyaları değiştirmesine izin veren dört yazıcı araç. Her biri tek dosyalı, sabitlenmiş ve yazma işleminden sonra yerinde bir yeniden indeksleme tetikler, böylece grafik asla güncelliğini yitirmez.

AraçAmaç
tokensave_str_replaceBenzersiz bir old_str öğesini new_str ile değiştir; 0 veya >1 eşleşme varsa başarısız olur (çoklu düzenleme hatalarına karşı korur)
tokensave_multi_str_replaceN adet (old, new) değişimini atomik olarak uygula -- ya hep ya hiç işlemi
tokensave_insert_atBenzersiz bir sabitleyici dize veya satır numarasından önce veya sonra içerik ekle
tokensave_ast_grep_rewrite--rewrite modunda ast-grep CLI aracılığıyla yapısal kod yeniden yazımı

Git & İş Akışı

AraçAmaç
tokensave_diff_contextDeğişen dosyalar için anlamsal bağlam -- değiştirilen semboller, bağımlılıklar, etkilenen testler
tokensave_commit_contextCommit mesajı taslağı için commit edilmemiş değişikliklerin anlamsal özeti
tokensave_pr_contextPull request açıklamaları için git referansları arasındaki anlamsal fark
tokensave_changelogİki git referansı arasındaki anlamsal fark
tokensave_test_mapSembol seviyesinde kaynak-test eşlemesi, kapsanmayan sembol tespiti ile
tokensave_test_coverageGeçişli çağrı kenarı genişletmesi ile dosya/sembol/test-fonksiyonu başına kapsam toplamı

Tip Sistemi

AraçAmaç
tokensave_type_hierarchyTrait'ler, arayüzler ve sınıflar için özyinelemeli tip hiyerarşi ağacı
tokensave_rankİlişki sayısına göre düğümleri sırala (en çok uygulanan arayüz, en çok genişletilen sınıf)
tokensave_distributionDosya veya dizin başına düğüm türü dağılımı
tokensave_largestBoyuta göre düğümleri sırala -- en büyük sınıflar, en uzun metotlar

Taşıma

AraçAmaç
tokensave_port_statusTaşıma ilerlemesini izlemek için kaynak/hedef dizinler arasındaki sembolleri karşılaştır
tokensave_port_orderTaşıma için sembollerin topolojik sıralaması -- önce yaprakları, sonra bağımlı olanları taşı

Çoklu Dal

AraçAmaç
tokensave_branch_searchBaşka bir dalın grafiğinde sembol ara
tokensave_branch_diffDallar arasındaki sembolleri karşılaştır (eklenen/kaldırılan/değişen)
tokensave_branch_listVT boyutları ve senkronizasyon zamanları ile izlenen dalları listele

MCP Kaynakları

resources/list ve resources/read aracılığıyla dört kaynak sunulur:

  • tokensave://status -- JSON olarak grafik istatistikleri
  • tokensave://files -- dizine göre gruplandırılmış indekslenmiş dosya ağacı
  • tokensave://overview -- dil dağılımı ve sembol türleri ile proje özeti
  • tokensave://branches -- VT boyutları ve üst öğe bilgisi ile izlenen dallar

Token Takibi

tokensave, her MCP araç çağrısında tasarruf ettiği token'ları ölçer. Her araç yanıtı, o belirli çağrı tarafından kaç tane ham dosya token'ından kaçınıldığını gösteren bir tokensave_metrics: before=N after=M satırı içerir.

Maliyet gözlemlenebilirliği

tokensave cost                     # 7-day cost summary (default)
tokensave cost today               # today only
tokensave cost --by-model          # breakdown by Claude model
tokensave cost --by-task           # breakdown by task category (coding, debugging, exploration, ...)
tokensave cost --export json       # JSON export to stdout
tokensave cost --export csv        # CSV export to stdout

Claude Code oturum transkriptlerini (~/.claude/projects/**/*.jsonl) ayrıştırır, her API dönüşünü 13 görev kategorisinden birine sınıflandırır, model fiyatlandırmasını kullanarak dolar maliyetini hesaplar ve hızlı toplu sorgular için sonuçları ~/.tokensave/global.db içinde saklar. Fiyatlandırma her 24 saatte bir LiteLLM adresinden yenilenir ve çevrimdışıyken gömülü bir tabloya geri döner.

tokensave status başlığı, bugünkü harcamayı, 7 günlük toplamı ve verimlilik oranını (tasarruf edilen token'lar / toplam token'lar) gösteren bir maliyet satırı içerir. tokensave monitor TUI, tasarruf akışının yanında canlı bir maliyet paneli gösterir. Her Claude Code oturumunun sonunda, hook_stop işleyicisi terminale tek satırlık bir makbuz yazdırır.

Görev sınıflandırma kategorileri: Kodlama, Hata Ayıklama, Özellik Geliştirme, Yeniden Düzenleme, Test, Keşif, Planlama, Yetkilendirme, Git İşlemleri, Derleme/Dağıtım, Beyin Fırtınası, Sohbet, Genel. Sınıflandırma deterministiktir (araç adları ve Bash komutları üzerinde desen eşleştirme), LLM çağrısı gerektirmez ve AgentSeal/codeburn adresinden uyarlanmıştır.

Canlı izleyici

tokensave monitor

~/.tokensave/monitor.mmap adresindeki paylaşılan bir bellek eşlemeli halka arabellek aracılığıyla tüm projelerden MCP araç çağrılarını gerçek zamanlı olarak gösteren küresel bir TUI. Her giriş proje adını, araç adını ve token deltasını gösterir. Üst kısımdaki bir maliyet paneli bugünkü harcamayı, tasarrufu, verimliliği ve en çok kullanılan modeli gösterir (her 30 saniyede bir yenilenir).

tokensave monitor TUI

Oturum ve ömür boyu sayaçlar

tokensave current-counter          # show per-project session counter
tokensave reset-counter            # reset the session counter
tokensave status                   # shows project + global lifetime totals + cost

tokensave status proje indeks istatistiklerini, dil dağılımını, maliyet satırını (bugün / 7g / verimlilik) ve proje + dünya çapında ömür boyu toplamları gösterir:

tokensave status output

Dünya çapında sayaç

Tüm tokensave kullanıcıları anonim bir toplu sayaca katkıda bulunur. tokensave status hem proje toplamınızı hem de dünya çapındaki toplamı gösterir. Yükleme, tanımlayıcı bilgi olmadan yalnızca tek bir sayı (örn. 4823) gönderir. tokensave disable-upload-counter ile devre dışı bırakabilirsiniz.


İndeks Güncelliği

tokensave, arka plan servisi veya işletim sistemi seviyesinde bir dosya izleyicisi olmadan grafiği güncel tutar.

İsteğe bağlı güncellik kontrolü. Her MCP araç çağrısı, son senkronizasyondan bu yana herhangi bir indekslenmiş dosyanın değiştirilip değiştirilmediğini kontrol eder. Güncel olmayan dosyalar bulunursa, araç yanıtı döndürülmeden önce yeniden çıkarılırlar. 30 saniyelik bir bekleme süresi, arka arkaya yapılan çağrıların her tuş vuruşunda ağacı yeniden taramasını engeller.

Bağlantıda yakalama senkronizasyonu. MCP sunucusu başladığında, hiçbir ajan bağlı değilken yapılan değişiklikleri (bir git pull, bir IDE düzenlemesi, bir derleme adımı) alan, engellemeyen bir yakalama senkronizasyonu hemen çalıştırır -- böylece bir oturumun ilk araç çağrısı güncel bir indeks görür.

Çoklu ajan çalışması ve git çalışma ağaçları. Birden fazla ajan aynı proje üzerinde eşzamanlı çalıştığında, güçlü varsayım her ajanın kendi git çalışma ağacında çalıştığıdır. Çalışma ağaçları, aynı deponun bağımsız dosya sistemi kopyalarıdır: ajan A ve ajan B'nin her birinin kendi dosya kopyası vardır, bu nedenle birbirlerinin uçuş halindeki düzenlemelerinin üzerine asla yazmazlar. tokensave, bir sorgunun ana checkout içinde yuvalanmış bir çalışma ağacından geldiğini otomatik olarak algılar ve sonuçları doğru dal grafiğinden sunar. Değişiklikler bağımsız olarak birikir ve sonunda git merge veya rebase yoluyla uzlaştırılır -- diğer herhangi bir paralel geliştirme için kullanılan süreçle aynı. Bu tasarım, paylaşılan değişken bir dizin üzerinde çapraz ajan kilitlemenin karmaşıklığından ve başarısızlık modlarından kaçınır.

Yalnızca CLI iş akışları. Bağlı bir ajan olmadan (MCP sunucusu yok) tokensave komutlarını çalıştırırsanız, güncellik kontrolü komutlar arasında çalışmaz. Her commit veya clone işleminden sonra indeksi otomatik olarak güncel tutmak için git kancaları yükleyin:

cp scripts/post-commit scripts/post-checkout .git/hooks/
chmod +x .git/hooks/post-commit .git/hooks/post-checkout

5.x'ten Yükseltme

Bağımsız tokensave daemon komutu ve onun launchd/systemd/Windows Hizmeti otomatik başlatması 6.0.0'da kaldırıldı. Servisin yerini alan gömülü işletim sistemi seviyesindeki dosya izleyicisi 6.1.0'da kaldırıldı (derin node_modules veya target ağaçlarına sahip büyük monorepo'larda aşırı CPU ve bellek kullanımına neden oldu). Yukarıdaki isteğe bağlı güncellik modeli mevcut tasarımdır.

Hala 5.x'ten kalma bir servis otomatik başlatmanız varsa, onu kaldırın:

  • macOS: launchctl unload ~/Library/LaunchAgents/com.tokensave.daemon.plist && rm ~/Library/LaunchAgents/com.tokensave.daemon.plist
  • Linux: systemctl --user disable --now tokensave-daemon && rm ~/.config/systemd/user/tokensave-daemon.service
  • Windows: sc.exe delete tokensave-daemon (yönetici yetkili bir terminalden)

Tam adı hatırlamıyorsanız: launchctl list | grep tokensave / systemctl --user list-units | grep tokensave / sc.exe query state= all | findstr -i tokensave.


Kendi Kendine Yükseltme

tokensave upgrade                  # upgrade to latest in current channel
tokensave channel                  # show current channel (stable/beta)
tokensave channel beta             # switch to beta channel
tokensave channel stable           # switch back to stable

tokensave upgrade GitHub sürümlerinden doğru platform ikili dosyasını indirir ve çalışan ikili dosyayı yerinde değiştirir. Kararlı ve beta kanallarını bağımsız olarak destekler.


Sürümleme & yükseltmeler

tokensave sürüm numaraları SemVer gibi görünür ancak onu takip etmez: değişen bileşen, güncellemenin gerektirdiği bakımı kodlar ve tokensave bunu bir sonraki başlatmada otomatik olarak gerçekleştirir -- asla elle yeniden yükleme veya yeniden indeksleme yapmazsınız.

ArtışÖrnekGüncelleme gerektirirOtomatik eylem
Yama (x.y.Z)7.2.0 → 7.2.1Hiçbir şeyYok -- yeniden yükleme yok, yeniden indeksleme yok
Küçük (x.Y.0)7.2.0 → 7.3.0Yeniden yükleme (yeni koşum takımları, yeni araçlar, yeni yapılandırma)Yüklü her ajan entegrasyonunun küresel yeniden yüklemesi (izinleri, kancaları ve MCP yapılandırmasını yeniler)
Büyük (X.0.0)7.2.0 → 8.0.0Yeniden yükleme + tam yeniden senkronizasyonKüresel yeniden yükleme ve proje başına zorunlu yeniden indeksleme (sync -f eşdeğeri)

Küresel yeniden yükleme. Yeni bir küçük veya büyük derlemenin ilk çalıştırmasında, tokensave kaydettiği her ajan için sessizce install komutunu yeniden çalıştırır, böylece ajan yapılandırması her zaman mevcut ikili dosyayı işaret eder ve mevcut araç setini sunar. Yama artışları bunu atlar -- çalışan sürüm işaretçisi basitçe ilerletilir.

Proje başına zorunlu yeniden indeksleme (yalnızca büyük). Büyük bir artış, proje indekslerinin yeniden oluşturulması gerektiği anlamına gelir. tokensave bunu tembelce ve proje başına yapar: büyük bir yükseltmeden sonra bir projedeki ilk MCP araç çağrısında, araç yanıtını asla engellemeyen bir arka plan tam yeniden indeksleme (tokensave sync --force eşdeğeri) başlatır.

Brew / cargo geri dönüşü. tokensave upgrade dışında ikili dosyayı değiştiren harici yükseltmeler -- brew upgrade tokensave veya cargo install tokensave -- aynı şekilde algılanır: çalışan sürüm, bir yükleme gerçekleştiren son sürümden daha yeniyse, yeniden yükleme, tıpkı bir kendi kendine yükseltmeden sonra olduğu gibi bir sonraki başlatmada çalışır.

tokensave'in SemVer'den neden ayrıldığı (bakımı sürüme kodlamak, sıfır dokunuşlu yükseltmeleri mümkün kılan şeydir), işaretçi mekaniği, bağımsız veritabanı şema sürümü ve sürüm çıkarmak için bakımcı kuralları için TOKENSAVE-VERSIONING.md dosyasına bakın.


CLI Referansı

tokensave init [path]              # Initialize a new project (full index)
tokensave sync [path]              # Incremental sync (must be initialized first)
tokensave sync --force [path]      # Force a full re-index
tokensave sync --doctor [path]     # Sync and list added/modified/removed files
tokensave status [path]            # Show statistics + cost summary
tokensave status [path] --json     # Show statistics (JSON output)
tokensave status --details         # Include node-kind breakdown
tokensave cost [range]             # Token cost summary (default: 7d)
tokensave cost --by-model          # Cost grouped by model
tokensave cost --by-task           # Cost grouped by task category
tokensave cost --export json|csv   # Export cost data
tokensave query <search> [path]    # Search symbols
tokensave files [--filter dir] [--pattern glob] [--json]   # List indexed files
tokensave affected <files...> [--stdin] [--depth N]        # Find affected test files
tokensave install [--agent NAME]   # Configure agent integration
tokensave reinstall                # Refresh settings for all installed agents
tokensave uninstall [--agent NAME] # Remove agent integration
tokensave serve                    # Start MCP server
tokensave monitor                  # Live TUI showing MCP calls across all projects
tokensave upgrade                  # Self-update to latest version
tokensave channel [stable|beta]    # Show or switch update channel
tokensave doctor [--agent NAME]    # Check installation health
tokensave branch add|list|remove|removeall|gc   # Multi-branch management
tokensave current-counter          # Show per-project token counter
tokensave reset-counter            # Reset per-project token counter
tokensave disable-upload-counter   # Opt out of worldwide counter uploads
tokensave enable-upload-counter    # Re-enable worldwide counter uploads

tokensave doctor

tokensave kurulumunuzun kapsamlı bir sağlık kontrolünü çalıştırın:

tokensave doctor

Kontroller: ikili dosya konumu, proje indeksi, küresel VT, kullanıcı yapılandırması, ajan entegrasyonu (MCP sunucusu, kancalar, izinler, istem kuralları) ve ağ bağlantısı. Bir yükseltmeden sonra herhangi bir araç izni eksikse, size tokensave install komutunu çalıştırmanızı söyler. Yalnızca belirli bir ajanı kontrol etmek için --agent kullanın.

Doctor ayrıca yüklü her kancanın doğru tokensave alt komutunu kullandığını doğrular ve bozuk kancaları otomatik olarak onarır.


Claude Code ile Nasıl Çalışır

Yapılandırıldıktan sonra, Claude Code kod tabanınızı anlaması gerektiğinde ham dosyaları okumak yerine otomatik olarak tokensave kullanır. Üç katman birbirini güçlendirir:

KatmanNe yaparNeden önemli
MCP sunucusuClaude'a 80'den fazla tokensave_* aracı sunarClaude grafiği doğrudan sorgulayabilir
CLAUDE.md kurallarıClaude'a ajanlar/dosya okumaları yerine tokensave'i tercih etmesini söylerModelin pahalı desenlere geri dönmesini engeller
PreToolUse kancasıYerel Rust kancası Keşif ajanlarını engellerModelin CLAUDE.md kurallarını yok saydığı durumları yakalar
UserPromptSubmit kancasıİstem gönderiminde çalışırToken muhasebesi için yaşam döngüsü takibi
Stop kancasıOturum sona erdiğinde çalışırToken sayaçlarını temizler

Sonuç: Claude aynı kod anlayışını çok daha az token ile elde eder. Tipik bir Keşif ajanı 20-50 dosya okur; tokensave ilgili sembolleri, ilişkileri ve kod parçacıklarını önceden oluşturulmuş indeksinden döndürür.


Ağ Çağrıları ve Gizlilik

tokensave'in temel işlevselliği (indeksleme, arama, grafik sorguları, MCP sunucusu) %100 yereldir -- kodunuz makinenizden asla ayrılmaz.

ÇağrıGönderilen veriNe zamanDevre dışı bırakma
Dünya çapında sayaç yüklemeToken sayısı (bir sayı) + ülke (IP'den)sync, status, MCP oturumlarıtokensave disable-upload-counter
Dünya çapında sayaç okumaHiçbir şey (GET isteği)statusYok (salt okunur, 1sn zaman aşımı)
Sürüm kontrolüHiçbir şey (GET isteği)status (5dk önbellek), sync (paralel)Yok (1sn zaman aşımı, başarısızlıkta işlem yapılmaz)
Model fiyatlandırma yenilemeHiçbir şey (GET isteği)tokensave cost (24s önbellek)Yok (5sn zaman aşımı, gömülü fiyatlandırmaya geri döner)

Dünya çapında sayaç yükleme, {"amount": 4823} gibi bir JSON gövdesiyle tek bir HTTP POST gönderir. Çerez yok, izleme yok, kullanıcı kimliği yok. Cloudflare Worker, toplu coğrafi istatistikler için IP adresinizin ülkesini (istek başlıklarından türetilir) günlüğe kaydeder -- gerçek IP adresiniz saklanmaz.

Model fiyatlandırma yenileme, tokensave cost için Claude model fiyatlandırmasını güncel tutmak amacıyla GitHub'dan (raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json) genel bir JSON dosyası alır. Hiçbir veri gönderilmez -- düz bir HTTPS GET isteğidir. Yanıt ~/.tokensave/pricing.json adresinde 24 saat boyunca önbelleğe alınır. Getirme başarısız olursa, tokensave derlenmiş fiyatlandırma tablosunu kullanır.


50'den Fazla Dil

tokensave, Cargo özellik bayraklarıyla kontrol edilen üç kademede düzenlenmiş 50'den fazla programlama dilini destekler. Her kademe, altındaki kademedeki tüm dilleri içerir. Markdown başlıkları, belge yapısının kaynak koduyla birlikte graf sorgularına katılması için hiyerarşik Contains kenarlarına sahip Module düğümleri olarak çıkarılır.

Lite -- --no-default-features

Her zaman derlenir. En popüler diller için en küçük ikili dosya, ayrıca Svelte ve Astro (TypeScript çıkarıcı aracılığıyla betik bloğu çıkarma, ek dil bilgisi bağımlılığı yok).

DilUzantılar
Rust.rs
Go.go
Java.java
Scala.scala, .sc
TypeScript.ts, .tsx
JavaScript.js, .jsx
Python.py
C.c, .h
C++.cpp, .hpp, .cc, .cxx, .hh
Kotlin.kt, .kts
C#.cs
Swift.swift
Svelte.svelte
Astro.astro

Medium (Lite + 9 tane daha) -- --features medium

DilUzantılarÖzellik bayrağı
Dart.dartlang-dart
Pascal.pas, .pp, .dprlang-pascal
PHP.phplang-php
Ruby.rblang-ruby
Bash.sh, .bashlang-bash
Protobuf.protolang-protobuf
PowerShell.ps1, .psm1lang-powershell
Nix.nixlang-nix
VB.NET.vblang-vbnet

Full (Medium + diğer her şey) -- varsayılan

DilUzantılarÖzellik bayrağı
ActionScript.aslang-actionscript
Lua.lualang-lua
Zig.ziglang-zig
Objective-C.m, .mmlang-objc
Perl.pl, .pmlang-perl
Batch/CMD.bat, .cmdlang-batch
Fortran.f90, .f95, .f03, .f08, .f18, .f, .forlang-fortran
COBOL.cob, .cbl, .cpylang-cobol
MS BASIC 2.0.baslang-msbasic2
GW-BASIC.gwlang-gwbasic
QBasic.qblang-qbasic
QuickBASIC 4.5.bi, .bmlang-qbasic
DockerfileDockerfile, .dockerfilelang-dockerfile
GLSL.glsl, .vert, .frag, .complang-glsl
WGSL.wgsllang-wgsl
HLSL.hlsl, .fxlang-hlsl
Metal.metallang-metal
Markdown.md, .markdownlang-markdown
R.r, .Rlang-r
SQL.sqllang-sql
Julia.jllang-julia
Haskell.hs, .lhslang-haskell
OCaml.ml, .mlilang-ocaml
Clojure.clj, .cljs, .cljclang-clojure
Erlang.erl, .hrllang-erlang
Elixir.ex, .exslang-elixir
F#.fs, .fsi, .fsxlang-fsharp
F*.fst, .fstilang-fstar
Quint.qntlang-quint
TOML.tomllang-toml
Lean.leanlang-lean

Bireysel diller, tam bir kademe olmadan da seçilebilir:

cargo install tokensave --no-default-features --features lang-nix,lang-bash

Tüm çıkarıcılar aynı derinliği paylaşır: fonksiyonlar, sınıflar, metotlar, alanlar, içe aktarmalar, çağrı grafları, kalıtım zincirleri, docstring'ler, karmaşıklık metrikleri, dekoratör/ek açıklama çıkarma ve dosyalar arası bağımlılık takibi.


tokensave vs CodeGraph

tokensave, CodeGraph (Node.js/TypeScript) aracının sıfırdan Rust ile yeniden yazılmış halidir. Her ikisi de AI kodlama ajanları için anlamsal kod grafları oluşturur, ancak kapsam ve yetenekler açısından önemli ölçüde farklılaşırlar.

tokensaveCodeGraph
Çalışma ZamanıYerel ikili dosya (Rust)Node.js 18+
Kurulumbrew install, cargo install, scoop installnpx @colbymchenry/codegraph
Diller50+ (3 kademe: lite/medium/full)19+
MCP araçları80+9
Ajan entegrasyonları12+ (Claude, Codex, Gemini, Qwen, OpenCode, Cursor, Cline, Copilot, Roo Code, Zed, Antigravity, Kilo, Kiro, Kimi, Vibe, Grok, Factory Droid)1 (Claude Code)
Dizin tazeliğiHer MCP çağrısında isteğe bağlı güncellik kontrolü; bağlantıda yakalama senkronizasyonu; çok ajanlı çalışmanın git worktree'leri kullanması beklenirYerel işletim sistemi düzeyinde dosya izleyici (FSEvents/inotify/ReadDirectoryChangesW, 2 sn gecikme); bağlantıda yakalama senkronizasyonu
Çok dallı indekslemeEvet, isteğe bağlı (dal başına VT, dallar arası diff/arama)Hayır
Karmaşıklık metrikleriAST'den çıkarılan (dallar, döngüler, yuvalama derinliği, döngüsel & bilişsel karmaşıklık, Halstead, sürdürülebilirlik endeksi, CRAP)Hayır
Taşıma araçlarıEvet (port_status, port_order)Hayır
Graf görselleştiriciKaldırıldı (v4.0.1)Evet
Anlamsal aramaAjan güdümlü anahtar kelime genişletme (sıfır maliyet)Yerel gömme vektörleri (ONNX aracılığıyla nomic-embed-text-v1.5)
MCP kaynakları4 (status, files, overview, branches)Hayır
MCP ek açıklamalarıEvet (readOnlyHint, alwaysLoad)Hayır
Ölü kod tespitiEvetHayır
Döngüsel bağımlılık tespitiEvetHayır
Tür hiyerarşisiEvetHayır
Tanrı sınıfı / bağlaşıklık analiziEvetHayır
Commit / PR bağlamıEvetHayır
Test eşlemeEvetHayır
Yeniden adlandırma önizlemeEvetHayır
Token takibiÇağrı başına metrikler, canlı TUI monitörü, oturum + ömür boyu sayaçlarHayır
Kod sağlığı analitiğiBileşik puan, Gini, bağımlılık derinliği, DSM, risk ağırlıklı test boşlukları, oturum deltalarıHayır
Düzenleme temelleriOtomatik yeniden indekslemeli 4 atomik yazıcı (str_replace, multi_str_replace, insert_at, ast_grep_rewrite)Hayır
Çökme dayanıklılığıAlt süreç izole çıkarma; yerel dil bilgisi iptalleri dosyayı atlar, senkronizasyon devam ederHayır
Kendi kendine yükseltmeKararlı/beta kanallarıyla tokensave upgradenpm update
VT motorulibsql (SQLite çatalı, WAL, asenkron)better-sqlite3 / wa-sqlite (WASM)
İndeksleme hızı1.782 dosya için ~1.2sn1.782 dosya için ~4sn
İkili dosya boyutu~25 MB (tüm dil bilgileri paketlenmiş)~80 MB (node_modules + WASM)

CodeGraph bu yaklaşımın öncüsüdür ve npm araçlarını tercih ediyorsanız ve yalnızca Claude Code entegrasyonuna ihtiyacınız varsa sağlam bir seçim olmaya devam eder. tokensave, daha derin analiz, daha fazla ajan, çok dallı destek ve çalışma zamanı bağımlılığı olmayan yerel bir ikili dosya ile konsepti genişletir.

CodeGraph, Dual-Graph (GrapeRoot), code-review-graph ve OpenWolf ile ayrıntılı karşılaştırmalar için docs/COMPARABLE-TOOLS.md adresine bakın.


Alternatifler Karşısında Neden tokensave

Birçok araç, AI kodlama ajanları için token kullanımını azaltır. İşte tokensave'in neden öne çıktığı.

Tek yerel ikili dosya, sıfır bağımlılık

Her alternatif bir çalışma zamanı gerektirir: Python, Node.js veya her ikisi. tokensave, tüm 50'den fazla tree-sitter dil bilgisi paketlenmiş olarak ~25 MB'lık tek bir Rust ikili dosyası olarak gelir. Kurulacak başka bir şey yok.

En derin kod zekası

tokensave sembol düzeyinde çalışır: fonksiyonlar, yapılar, alanlar, çağrı kenarları, tür hiyerarşileri, karmaşıklık metrikleri. Dual-Graph (GrapeRoot) gibi alternatifler dosya düzeyinde çalışır -- hangi dosyaların var olduğunu bilirler ancak "bu fonksiyonu kim çağırıyor?" veya "bu yapıyı değiştirirsem ne bozulur?" sorularına cevap veremezler. tokensave'in 80'den fazla özel MCP aracı; çağrı grafı gezinimi, etki analizi, ölü kod tespiti, test eşleme, yeniden adlandırma önizleme, tür hiyerarşileri, döngüsel bağımlılık tespiti, karmaşıklık sıralaması, kod sağlığı analitiği (Gini, DSM, bağımlılık derinliği, risk ağırlıklı test boşlukları), atomik düzenleme temelleri ve daha fazlasını kapsar. En yakın rakip (code-review-graph) 22 araca sahiptir; diğerleri 5-9 arasındadır.

En geniş ajan desteği

Ajan başına yerel yapılandırma formatlarıyla bir düzineden fazla AI kodlama ajanı entegrasyonu. Başka hiçbir araç bu kadar çok ajanı bu kadar derin bir entegrasyonla kapsamaz. Claude Code; kancalar, istem kuralları ve otomatik izin verilen araç izinleri alır. Kiro; genel MCP yapılandırması, kaynak olarak yüklenen tokensave.md yönlendirmesi, izin verilen yerleşik/tokensave araç onayına sahip yönetilen bir ajan ve yetki devri korumaları ile yazma sonrası senkronizasyon için kancalar alır. Diğer ajanlar, kendi yerel yapılandırma formatlarında MCP sunucu kaydı alır.

Çok dallı indeksleme

İsteğe bağlı dal başına graf veritabanları ve dallar arası diff ve arama özelliğine sahip bu alandaki tek araç. Etkinleştirildiğinde, dallar arasında geçiş anında gerçekleşir -- yeniden indeksleme gerekmez.

Çağrı başına token takibi

Her bir MCP araç çağrısının tam olarak kaç token tasarrufu sağladığını, ayrıca tüm projeler genelinde canlı bir TUI monitörü ve ömür boyu sayaçları raporlayan tek araç.

Tamamen açık kaynak

MIT lisanslı Rust, uçtan uca denetlenebilir. Dual-Graph'ın çekirdek motoru (PyPI'da graperoot) özeldir -- kod grafiğinizle ne yaptığını göremezsiniz. OpenWolf AGPL-3.0'dır, bu da türev çalışmaların açık kaynak olmasını gerektirir.

Performans

1.782 dosyalık karma Rust/Java/Scala kod tabanında (57K düğüm, 103K kenar) tam indeks kıyaslaması:

AraçSüreHızlanma
CodeGraph (TypeScript)31.2sn1x
tokensave (Rust)1.2sn26x

Sorun Giderme

"tokensave başlatılmadı"

Projenizde .tokensave/ dizini mevcut değil.

tokensave init

MCP sunucusu bağlanmıyor

AI ajanı tokensave araçlarını görmüyor.

  1. Ajan yapılandırmasının tokensave MCP sunucusunu içerdiğinden emin olun (tokensave doctor komutunu çalıştırın)
  2. Ajanı tamamen yeniden başlatın
  3. tokensave dosyasının PATH'inizde olduğunu kontrol edin: which tokensave

Aramada eksik semboller

  • Dizini güncellemek için tokensave sync komutunu çalıştırın
  • Dilin desteklendiğini kontrol edin (yukarıdaki tabloya bakın)
  • Dosyanın .gitignore tarafından hariç tutulmadığını doğrulayın

İndeksleme yavaş

Büyük projeler ilk tam indekslemede daha uzun sürer.

  • Sonraki çalıştırmalar artımlı senkronizasyon kullanır ve çok daha hızlıdır
  • Günlük güncellemeler için tokensave sync kullanın (--force değil)
  • Bir ajan bağlıyken her MCP araç çağrısında güncellik otomatik olarak kontrol edilir

Belirli projeler için tokensave'i devre dışı bırakma

Bir proje çok büyükse ve tokensave çok fazla RAM kullanıyorsa, MCP sunucu ortamında DISABLE_TOKENSAVE=true ayarlayarak proje bazında devre dışı bırakabilirsiniz. Sunucu başlatma yapmadan temiz bir şekilde çıkar.

Claude Code — projenizin .claude/settings.json dosyasına ekleyin:

{
  "mcpServers": {
    "tokensave": {
      "command": "tokensave",
      "args": ["serve"],
      "env": {
        "DISABLE_TOKENSAVE": "true"
      }
    }
  }
}

Diğer ajanlar — ajanınızın MCP sunucularını başlatmak için kullandığı yapılandırmada ortam değişkenini ayarlayın.

Ayrıca kabuk üzerinden global olarak da ayarlayabilirsiniz (DISABLE_TOKENSAVE=true claude), ancak bu oturumdaki tüm projeler için tokensave'i devre dışı bırakır.


Köken

Bu proje, @colbymchenry tarafından geliştirilen orijinal CodeGraph TypeScript uygulamasının bir Rust portudur. Port, performans ve yerel tree-sitter bağlamaları için Rust'tan yararlanırken aynı mimariyi ve MCP araç arayüzünü korur.


Derleme

cargo build --release                          # full (50+ languages, default)
cargo build --release --features medium        # medium tier
cargo build --release --no-default-features    # lite (smallest binary)

cargo test                                     # run all tests (requires full)
cargo check --no-default-features              # verify lite compiles
cargo clippy --all

Yıldız Geçmişi

Star history

Sponsorlar

SignPath Windows'ta ücretsiz kod imzalama SignPath.io tarafından sağlanmaktadır, sertifika SignPath Foundation tarafından verilmiştir

Lisans

MIT Lisansı -- ayrıntılar için LICENSE dosyasına bakın.

tokensave.dev