tokensave

resmi

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

Tokensave MCP ile neler yapabilirsiniz?

  • Semantik kod araması — Kodu yalnızca metinle değil, anlamıyla arayın: tokensave_search sorgusuyla "kimlik doğrulama" için login, validateToken ve AuthService sonuçlarını tek çağrıda alın.
  • Etki analizi — Herhangi bir sembolü değiştirmeden önce tam olarak neyin bozulacağını görmek için tokensave_callers ve tokensave_callees izleyin.
  • Bağlam oluşturma — Dosyaları taramak yerine tek bir araç çağrısıyla giriş noktalarını, ilgili sembolleri ve kod parçacıklarını almak için tokensave_context kullanın.
  • Çapraz dal sorgularıtokensave_branch_diff ile dallar arasındaki kod grafiklerini karşılaştırın veya checkout değiştirmeden tokensave_branch_search ile başka bir dalın sembollerini arayın.
  • Oturum belleği — Tasarım kararlarını tokensave_record_decision ile kalıcı hale getirin ve daha sonra tokensave_session_recall ile hatırlayın; böylece mimari seçimler yeniden açıklanmak zorunda kalmaz.
  • Atomik düzenlemeler — Regex veya shell alıntılama tehlikeleri olmadan benzersiz çapa tokensave_str_replace veya AST yeniden yazımları uygulayın; yazma işlemlerinden sonra otomatik yeniden indeksleme yapılır.

Dokümantasyon

MCP Toplist

TokenSave

Yapay Zeka Kodlama Ajanları için Anlamsal Kod Zekası

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

GitHub stars crates.io License: MIT Rust Built with AI — part of Enzo Lombardi's AI portfolio

macOS Linux Windows Hypercommit Listed in the Lulu MCP marketplace


tokensave neden?

Yapay zeka kodlama ajanları kod tabanlarını keşfederken token israf eder. Her grep, glob ve dosya okuma işlemi maliyetlidir. Karmaşık görevlerde ajanlar, yalnızca bağlam oluşturmak için yüzlerce dosyayı tarayan birden fazla Explore alt ajanı başlatır.

tokensave, ajanlara önceden indekslenmiş bir anlamsal bilgi grafiği sunar. Ajan 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 ç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: Ajanlar dosyaları taramak için grep, glob ve Read kullanır -- çok sayıda API çağrısı, yüksek token kullanımı.

tokensave ile: Ajanlar 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şturmaAnlamsal AramaEtki Analizi
Tek bir araç çağrısı, ajanın ihtiyaç duyduğu her şeyi döndürür -- giriş noktaları, ilgili semboller ve kod parçacıkları.Kodu yalnızca metinle değil, anlamla bulun. "authentication" arayın ve login, validateToken, AuthService bulun.Değiştirmeden önce tam olarak neyin bozulacağını bilin. Herhangi bir sembolün çağıranlarını, çağrılanlarını ve tam etki yarıçapını izleyin.
80+ MCP Aracı50+ Dil12+ Ajan Entegrasyonu
Çağrı grafiği gezinmesinden ölü kod tespitine, atomik düzenleme ilkellerine, kod sağlığı metriklerine, test eşlemesine ve karmaşıklık analizine kadar.Rust, Go, Java, Python, TypeScript, C, C++, Swift, Svelte, Astro ve WGSL/HLSL/Metal shader'ları, CUDA/HIP ve Markdown dahil 43 dil daha. Üç katman (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, OMP, Pi, Plank.
Çok Dallı İndeksleme (opsiyonel)%100 YerelHer Zaman Güncel
Dal başına isteğe bağlı veritabanları. Kontrol ağacınızı değiştirmeden dallar arası fark ve arama.Hiçbir veri makinenizden çıkmaz. API anahtarı yok. Harici hizmet yok. Her şey yerel bir libSQL veritabanında çalışır.Her MCP çağrısında isteğe bağlı bayatlık kontrolü (30 sn bekleme) ve sunucu bağlandığında yakalama senkronizasyonu. Çok ajanlı çalışmanın git worktree'leri kullanması beklenir -- her ajan kendi kontrol ağacını alır ve indeks sapmaları bir dosya izleyici tarafından değil, git tarafından birleştirilir.
Alt Süreç İzoleli ÇıkarmaKod Sağlığı AnalitiğiAtomik Düzenleme İlkelleri
Herhangi bir tree-sitter dilbilgisindeki yerel bir çökme (abort, segfault, her neyse) yalnızca çalışanı öldürür; havuz onu yeniden başlatır ve senkronizasyon devam eder. Senkronizasyon asla bozuk bir dosya nedeniyle ölmez.Bileşik sağlık puanı (0-10000), Gini eşitsizliği, dosya-DAG derinliği, tasarım yapısı matrisi, risk ağırlıklı test boşlukları ve oturum farkları.Dosyaları regex veya kabuk tırnak tehlikeleri olmadan düzenleyin: benzersiz çapa str_replace, atomik çoklu değiştirme, AST yeniden yazma, çapalı ekleme. Yazma işlemlerinden sonra otomatik 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 / cargo-binstall (her platform):

# Fast install prebuilt binary without compiling:
cargo binstall tokensave

# Or compile from source:
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):

Son sürümden indirin ve ikili dosyayı PATH dizinine 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. Ajanı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 omp             # Oh My Pi (OMP)
tokensave install --agent opencode        # OpenCode
tokensave install --agent pi              # Pi (pi.dev)
tokensave install --agent plank           # Plank (macOS only)
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)
tokensave githooks                         # show which global git hooks tokensave owns
tokensave githooks off                     # remove them, leaving any hook content you wrote

Her ajan, MCP sunucusunu yerel yapılandırma formatında kaydeder. Claude Code ayrıca bir PreToolUse kancası (israf eden Explore ajanlarını engeller), bir UserPromptSubmit kancası, bir Stop kancası, CLAUDE.md içinde komut kuralları ve otomatik izinli araç izinleri alır. Kiro, global MCP yapılandırması, kaynak olarak yüklenen tokensave.md yönlendirmesi ve izinli yerleşik/tokensave araç onayı, delegasyon koruma kancaları ve yazma sonrası senkronizasyon ile tokensave tarafından yönetilen bir varsayılan ajan alır; kullanıcı tarafından yönetilen Kiro ajanları korunur.

Global OMP kurulumları, çıplak omp config path tarafından bildirilen profile hedeflenir ve <resolved-agent-dir>/mcp.json ile <resolved-agent-dir>/rules/tokensave.md yazar. Adlandırılmış bir profile kurarken OMP_PROFILE veya OMP'nin uyumlu PI_PROFILE değerini dışa aktarın; OMP'nin çözücüsü ayrıca PI_CONFIG_DIR ve PI_CODING_AGENT_DIR değerlerini onurlandırır. Tokensave, OMP'nin profil mantığını kopyalamak yerine o yerel çözücüye güvenir. Tokensave, OMP için MCP ve danışma kuralları kurar; OMP kanca uygulamasını kurmaz.

Tüm değişiklikler idempotenttir -- yükseltmeden sonra tekrar çalıştırmak güvenlidir. Ajan kurulumundan sonra, size global git post-commit ve post-checkout kancaları sunulacaktır. tokensave uninstall bu kancaları ajan entegrasyonlarıyla birlikte kaldırır; --keep-git-hooks ile onları bırakın veya tokensave githooks ile kendi başlarına yönetin.

Proje yerel kurulumu

Varsayılan olarak tokensave install, MCP sunucusunu global ajan yapılandırmanıza kaydeder (örn. ~/.claude.json). tokensave'i yalnızca geçerli proje için kaydetmek istiyorsanız, --local ekleyin:

tokensave install --local --agent claude
tokensave install --local --agent omp

Bu, ekibinizle taahhüt edip paylaşabileceğiniz proje kapsamlı yapılandırma yazar. Claude için bu ./.mcp.json, ./.claude/settings.json ve ./CLAUDE.md; OMP, OMP CLI'sını çağırmadan ./.omp/mcp.json ve ./.omp/rules/tokensave.md kullanır. Desteklenen ajanlar: claude, cursor, droid, gemini, zed, opencode, roo-code, kiro, auggie, omp, plank (her biri kendi proje dosyasını yazar, örn. plank için .cursor/mcp.json, .factory/mcp.json, .gemini/settings.json, .zed/settings.json, opencode.json, .roo/mcp.json, .kiro/settings/mcp.json, .augment/settings.json, .omp/mcp.json, .mcp.json). Diğer ajanların proje kapsamlı yapılandırması yoktur ve --local ile bir hata bildirir.

Proje yerel kurulumunu tokensave uninstall --local ile 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 kez yapılan isteğe bağlı bir işlemdir, sync ise yalnızca zaten başlatılmış projeleri günceller. Bu, global git kancalarının indekslemeyi hiç düşünmediğiniz depolarda sessizce veritabanları oluşturmasını önler. init sonrasında, artımlı güncelleme için tokensave sync kullanın -- yalnızca değiştirilen 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 çalıştırır -- yerel bir Rust komutu (bash veya jq gerektirmez). Agent, Grep, Glob ve Bash araç çağrılarını yakalar: Explore ajanları tamamen engellenir, 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 ve kod uzantıları üzerindeki yol şeklindeki keşif (Glob, find -name, fd --extension) tokensave_files adresine yönlendirilir. Regex desenleri, git grep, borulu komutlar, kod dışı uzantılar, indeks dışındaki arama kökleri ve komutun ne yaptığını değiştiren find yüklemleri (-exec, -delete, -mtime) tümü dokunulmadan geçer; kabuk başına devre dışı bırakmak için TOKENSAVE_DISABLE_GREP_HOOK=1 ayarlayın.

Filtreler en özelden en genele okunur: açık bir type yetkilidir, ardından açık bir dosya glob'u, ardından arama yolu gelir. Bu nedenle glob: "**/*.md" ile yapılan path: "." gibi bir belge araması, geniş yolda bir kod araması olarak ele alınmak yerine geçer; kod yalnızca glob (**/*.rs) ise kod dışı bir yol altında bile yine de yönlendirilir. Karışık globlar (**/*.{rs,md}) geçer, çünkü belge döndürebilirler.

Başsız / alt ajan dağıtımı (claude -p). Bir orkestrasyon oturumu tarafından gönderilen alt süreçler, bu kanca dahil olmak üzere ~/.claude/settings.json değerini miras alır. Bir alt sürecin ham aramalar yapmasına izin vermek için, alt sürecin ortamında TOKENSAVE_DISABLE_GREP_HOOK=1 ayarlayın -- yerel ikili dosya bunu onurlandırır ve her yolu (Grep, Glob, Bash, Agent) geçirir, böylece tüm kancaları kaldıran kaba --settings '{"hooks": {}}' kullanımına gerek kalmaz. Koruma durumsuzdur: alıntı geçmişine asla danışmaz, bu nedenle yalnızca yukarıda açıklanan sembol şeklindeki aramaları yönlendirir ve türsüz araştırma fan-out'unu yönlendirir; oturum etkileşimli veya başsız olsun, sıradan komutlar etkilenmez.

CLAUDE.md kuralları

Claude'a Explore ajanlarına veya ham dosya okumalarına ulaşmadan önce tokensave araçlarını kullanmasını söyleyen talimatları ~/.claude/CLAUDE.md dosyasına ekler.


Çökmeye Dayanıklı Senkronizasyon

Tree-sitter dilbilgileri derlenmiş C/C++ kodudur. Bazen dahili bir iddiaya takılır veya Rust panik işlemenin yakalayamadığı yollarla süreci sonlandırır. v4.3.0 itibarıyla, her dosya kısa ömürlü bir çalışan alt süreç içinde ayrıştırılır: bir dilbilgisi segfault olursa, abort() çağırırsa veya yığın taşması yaşarsa, 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, üst sürece karşı 256 bitlik her doğumda bir token ile doğrulanan 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ı başarısız olur. Varsayılan olarak available_parallelism() çalışan; TOKENSAVE_DISABLE_SUBPROCESS=1 ile devre dışı bırakın.

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


Çok Dallı İndeksleme (İsteğe Bağlı)

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

Nasıl çalışır

Bir dalı izlediğinizde, tokensave en yakın ata DB'sini kopyalar ve yalnızca farklı olan dosyaları senkronize eder. Bu, main üzerindeki bir özellik dalını izlemenin neredeyse anlık 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ı, kontrol ağacınızı değiştirmeden dallar arası sorguları etkinleştirir:

  • tokensave_branch_search -- başka bir dalın grafiğinde sembol arayın
  • tokensave_branch_diff -- iki dal arasındaki kod grafiklerini karşılaştırın: eklenen, kaldırılan ve değiştirilen semboller (imza farklı). Dosya ve tür filtrelerini destekler.
  • tokensave_branch_list -- DB boyutları, ana dal ve senkronizasyon süreleriyle izlenen dalları listeleyin

Dal geri dönüşü

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

Otomatik dal izleme (v7.3.0)

Çok dallı mod başlatıldıktan sonra (ilk manuel tokensave branch add dal meta verilerini oluşturdu), yeni dallar ata DB'sine geri dönmek yerine otomatik olarak izlenebilir. İki bağımsız mekanizma bunu kapsar; tek DB modundaki projeler asla etkilenmez ve hiçbir mekanizma varsayılan dalın veritabanına asla dokunmaz. Git hook (dal değişikliğinde). post-checkout hook'unun tokensave install kurduğu, bir dal değişikliğini (dosya değişikliğinin aksine) tanır ve tokensave branch add komutunu arka planda çalıştırır. Bu komut, dal zaten izleniyorsa veya varsayılan dal ise hiçbir işlem yapmaz; bu nedenle bilinen dallar arasında sıradan geçişlerin maliyeti yoktur. Yeni bir git clone ve yeni bir git worktree add'nin ilk kontrolü de bir dal değişikliğidir ve varsayılan olmayan bir dala (git clone -b feature, git worktree add -b feature) denk gelebilir; burada hook önce tokensave init komutunu, ardından tokensave branch add komutunu bu sırayla çalıştırır. Daha önceki bir sürüm tarafından yazılmış bir hook, kurulduğu gövdeyi korur — yükleyici mevcut olanı asla yeniden yazmaz — bu nedenle bu kurulumlarda yeni bir çalışma ağacı yine de aşağıdaki auto_track adımına veya manuel bir tokensave branch add komutuna ihtiyaç duyar.

Açılışta otomatik izleme (isteğe bağlı). TokenSave::open çalıştığında — CLI komutu veya MCP sunucu başlangıcı — ve aktif dal izlenmiyorsa, tokensave en yakın izlenen atanın veritabanını kopyalayıp dal meta verilerine kaydederek onu anında izleyebilir. Bu, auto_track yapılandırma alanı (varsayılan false) veya TOKENSAVE_AUTO_TRACK ortam değişkeni tarafından kontrol edilir; ortam değişkeni yapılandırmayı her çalıştırmada geçersiz kılar (0, false, no, off veya boş değerler hariç herhangi bir değer etkinleştirir). Kopyalama, manuel bir branch add komutunun gerçekleştirdiği neredeyse anlık ata-veritabanı kopyalamasıyla aynıdır; o anda hiçbir senkronizasyon çalışmaz — post-commit hook'u, siz commit yaptıkça yeni dal veritabanını güncel tutar veya hemen yenilemek için tokensave sync komutunu çalıştırın. Otomatik izleme kesinlikle en iyi çaba ilkesine dayanır: herhangi bir hata bir uyarı olarak bildirilir ve open() olağan ata geri dönüşüyle devam eder; bu nedenle bir araç çağrısını asla bozamaz.

Kısacası: hook kurulu olduğunda, yeni bir özellik dalını kontrol etmek — taze bir klonun veya çalışma ağacının başladığı dal dahil — ona şeffaf bir şekilde kendi dal başına grafiğini verir; auto_track etkinleştirildiğinde, bir kontrol dışında oluşturulan bir dal bile tokensave projeyi ilk açtığında yakalanır.

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


Oturumlar Arası Bellek

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

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

Bunları kullanın ki ajan, mimari seçimlerini oturumdan oturuma yeniden açıklamak zorunda kalmasın.


Tasarruf Defteri

Her MCP çağrısı, ~/.tokensave/global.db (savings_ledger tablosu) içine yalnızca eklenebilir 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 giriş fiyatlandırması, LiteLLM aracılığıyla günlük yenilenir).

tokensave gain history output


Tekrarlanabilir Kıyaslama

tokensave bench, tokensave_context aracılığıyla sabit bir sorgu seti çalıştırır ve tam dosya taban çizgisine kıyasla alma tasarrufunu 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'nın kendisi) gönderilen genel sorgu setiyle ölçüldü:

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

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

Varsayılan sorgu seti, çoğu uygulama kod tabanında (CLI'ler, arka plan hizmetleri, hizmetler) bulunan kalıpları 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, sabit referanslara sabitlenmiş dört büyük açık kaynak kod tabanına karşı MCP araçlarını uçtan uca çalıştıran bir criterion mikro kıyaslamasıdır. Her araç, depo başına bir kez dizinlenmiş grafikten örneklenen argümanlarla (düğüm kimlikleri, nitelikli adlar, dosya glob'ları, …) en az 5 sorgu ile sürülür; böylece zamanlamalar çalıştırmalar arasında tekrarlanabilir.

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

DepoURLReferans
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 kontrolü yeniden kullanır. Git çıktısı terminale akışlandırılır; böylece çok GB'lık getirme gerçek zamanlı ilerlemeyi 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 (ast-grep PATH üzerinde açıksa) ast_grep_rewrite.

Her çalıştırmada zorunlu senkronizasyon. Herhangi bir kıyaslama başlamadan önce, test düzeneği her depoda tokensave sync --force eşdeğerini çalıştırır (.tokensave/ tazeliğinden bağımsız olarak 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 geçerli kalması için test 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 bittikten sonra test düzeneği, hazırlanan her depoda 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, her sorgu başına zamanlamaya ~30 saniye ölçüm verir — polkadot-sdk üzerindeki tokensave_context gibi yavaş araçların istikrarlı sayılar üretmesi için yeterlidir.

Çalıştırın:

# Required: a writable cache directory for the cloned repos + their indexes.

<p align="center">
  <a href="https://ai.enzolombardi.net/"><img src="https://img.shields.io/badge/built%20with-AI-D97757?style=flat-square&labelColor=101010&logo=anthropic&logoColor=white" alt="Built with AI — part of Enzo Lombardi's AI portfolio"></a>
</p>

# 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

TOKENSAVE_BENCH_REPOS_DIR ayarlanmamışsa kıyaslama bir bildirim 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_DIRZorunlu. Her deponun $DIR/<repo-name>/ konumuna 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 dördünün tamamıdır.
TOKENSAVE_BENCH_SKIP_CLONEAyarlanırsa, kıyaslama getirme yerine sabitlenmiş referansında olmayan herhangi bir depo için hızlı 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ında toplanır.

Sabitlenmiş referansları değiştirmek için (örn. 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 karşılık gelen $TOKENSAVE_BENCH_REPOS_DIR/<repo>/.bench-ref işaretçisini silin. Çalıştırma sonrası temizliği atlarsanız (örn. kıyaslama ortasında Ctrl-C yaparsanız), her depo dizininde 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/, yapılandırılabilir bir gerçek depo setine karşı stdio üzerinden tokensave serve süren ve her salt okunur MCP aracını dil başına 5 sorgu varyantıyla çalıştıran, araç başına / depo başına durum tablosu üreten bir Python test düzeneğidir. Aynı test düzeneği 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'de günlüğe kaydedilir; aynı sabit depo bütünü kaba bir sürümler arası karşılaştırma görevi görü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 test düzeneği tarafından bulundu.

Düzenprobe.py sürücüdür (kimlik eşleşmeli JSON-RPC, böylece yavaş bir araç sonraki çağrıları zehirleyemez), isolated.py tek bir aracı çağrı başına taze bir sunucuyla yeniden çalıştırır (sunucu kuyruğundan kaçar), build_matrix.py TSV'yi okur ve markdown üretir, tools/<lang>.py modülleri dil başına sorgu setlerine katkıda bulunur (Rust gönderildi; yeni bir modül ekleyerek Python/Go/… ekleyin), repos.toml hedef depoları listeler ($TOKENSAVE_PROBE_REPOS ile 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 🚩 kazanır. Her hatanın ilk 100 karakteriyle birlikte çağrı başına ayrıntı, takip için TSV günlüğüne düşer.

Yukarıdaki criterion kıyaslamasından farklıdır: criterion, sabitlenmiş referanslarda odaklanmış bir araç seti 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 setiyle her aracı çalıştırır, ölçüm hassasiyetinden ziyade kapsam genişliğini optimize eder.


80+ MCP Aracı

Sunucu 80'den fazla araç sunar (isteğe bağlı ast-grep ikilisi PATH üzerinde olmadığında bir eksik); aşağıdaki tablolar en yaygın kullanılanları kategoriye göre gruplar. Çoğu salt okunurdur, paralel olarak çağırmak güvenlidir ve readOnlyHint ile açıklanmıştır. Düzenleme ilkelleri tek dosyalarla sınırlıdır ve yerinde yeniden dizinler; oturum taban çizgisi ve bellek kaydetme araçları da yerel .tokensave durumunu değiştirir ve salt okunur olmayan 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.

Başka bir başlatılmış projeyi sorgulama

Anlamsal okuma araçları, MCP sunucusunu yeniden başlatmadan açıkça seçilmiş bir yerel grafiği sorgulayabilir:

{
  "query": "screenGate",
  "graph_root": "/absolute/path/to/typewhisper"
}

Seçilen sonuçlar kanonik kök/dal kaynağını içerir. Düğüm kimlikleri o grafiğe ad alanlıdır ve eşleşen seçiciler takip çağrılarında tekrarlanmalıdır. Örneğin, dal seçimli bir sorguya takip, her iki değeri de içerir:

{
  "node_id": "graph:<fingerprint>:function:<raw-id>",
  "graph_root": "/absolute/path/to/typewhisper",
  "graph_branch": "feature/auth"
}

graph_root, zaten başlatılmış bir projenin tam mutlak kökü olmalıdır. graph_branch isteğe bağlıdır ve sağlandığında izlenen bir dalı adlandırmalıdır. Seçili açılışlar salt okunurdur: asla başlatmaz, senkronize etmez, taşımaz, otomatik izlemez veya grafik/kaynak verisi yazmaz. Ayrıca tasarruf muhasebesine katkıda bulunmazlar. Seçicisiz çağrılar tam olarak eskisi gibi davranır. graph_root, yalnızca diğer projenin var olduğunu biliyorsanız kullanışlıdır; bu nedenle sunucu size şunu söyler: sunulan kök dizinin hemen yanında bulunan başlatılmış projeler, MCP instructions, tokensave_status ve boş tokensave_search / tokensave_context sonuçlarında adlandırılır — bir oturumun, bir sembolün var olmadığı sonucuna varacağı nokta, yan kapıya bakmak yerine (#375). Yalnızca doğrudan kardeşler sunulur, en fazla beş tane ve onlar adına hiçbir şey açılmaz veya dizinlenmez; birini sorgulamak yine de açık bir graph_root gerektirir.

Seçiciler, yazan, kabuk komutu çalıştıran veya mevcut kontrol noktasına bağlı olan araçlarda kasıtlı olarak kullanılamaz: düzenleme ilkelleri, VCS ve dal araçları, tanılama ve test yürütme, bağımlılık ve çalışma zamanı içgörüsü, iş akışı ve oturum belleği araçları, kalıcı önbellek aracı (tokensave_redundancy) ve sunucu yönetimi. Bu araçlar, bir seçiciyi sessizce yok saymak yerine reddeder.

Keşif

AraçAmaç
tokensave_contextBir görev için ilgili kod bağlamını alın -- giriş noktaları, ilgili semboller, kod parçacıkları
tokensave_searchSembolleri ada göre bulun (fonksiyonlar, sınıflar, türler)
tokensave_nodeBelirli bir sembol için ayrıntıları + kaynak kodu alın
tokensave_filesDizinlenmiş proje dosyalarını (kaynak ve izlenen yapıtlar) filtreleme ile listele
tokensave_module_apiBir dosyanın veya dizinin genel API yüzeyi
tokensave_similarBenzer isimlere sahip sembolleri bulun
tokensave_annotationsÖznitelik/ek açıklama/dekoratör içgörüsü -- tüm ek açıklamaların histogramı veya hedef filtreleriyle site bazında listeler
tokensave_docBir kaynak dosya için eşlik eden Markdown belgeleri -- belge içeriği, kapsadığı dosyalar ve bir bayatlık sinyali
tokensave_dependencies17 ekosistemde paket bildirimi içgörüsü -- çalışma alanı özeti, paket başına arama, lisans yüzeyi, sürüm kayması
tokensave_statusDizin durumu, istatistikler, kaydedilen belirteçler

Kod dışı yapıtlar

tokensave_files kaynaktan daha fazlasını kapsar. Uzantısı artifact_extensions içinde listelenen dosyalar (varsayılan olarak .feature, .json, .yaml, .yml, .sql, .toml, .proto, .graphql, .md) yolla izlenir; böylece "giriş akışı için .feature dosyaları nerede?" gibi sorular, engellenmiş bir find yerine bir grafik yanıtına sahip olur (#323). Asla ayrıştırılmazlar ve hiçbir sembol katkısı sağlamazlar; kind: "artifact" ve kind: "code" ikisi arasında filtreleme yapar ve "kod" anlamına gelen analizler onları hariç tutar. Bir dil çıkarıcı tarafından zaten işlenen bir uzantı bu listede yok sayılır, bu nedenle bir dilin ayrıştırılmasını durdurmak için kullanılamaz.

Liste ayrıca literal aramanın içine ne bakabileceğini belirler (#442). tokensave_search üzerinde yapılan bir literal (literal: true) araması, semboller yerine baytları okur, bu nedenle ayrıştırıcı gerektirmez -- ancak dizinlenmiş dosyaları yineler, bu nedenle yalnızca dizinin satır tuttuğu bir dosyaya ulaşabilir. İzlenen bir .html şablonu veya .css stil sayfası ne bir çıkarıcıya ne de varsayılan bir yapıt girişine sahiptir, bu nedenle eşleşmeleri eksiktir; uzantıyı buraya ekleyin ve tokensave sync -f çalıştırın; satırları, sembol bağlamı olmadığı için enclosing: null ile raporlanarak diğerleri gibi aranır. İzlenen her dosyaya ulaşamayan bir literal yanıt, sayıyı ve uzantıları adlandıran bir unscanned bloğunda bunu söyler; böylece kısmi bir yanıt asla tam bir yanıt olarak sunulmaz.

Çağrı Grafiği ve Etki

AraçAmaç
tokensave_callersBir fonksiyonu neyin çağırdığını bulun
tokensave_calleesBir fonksiyonun neyi çağırdığını bulun
tokensave_impactBir sembolü değiştirmenin neyi etkilediğini görün
tokensave_affectedKaynak değişikliklerinden etkilenen test dosyalarını bulun
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, iç içe geçme derinliği, Halstead metrikleri, sürdürülebilirlik endeksi, CRAP ve güvenlik metriklerine göre sıralayın
tokensave_dead_codeUlaşılamaz sembolleri bulun (gelen kenarları olmayan; belirsizlik adayı olarak adlandırılan semboller hariç)
tokensave_ambiguous_callsÇözücünün tek bir hedefe sabitleyemediği çağrı siteleri, bağlı her adayla birlikte
tokensave_god_classÇok fazla üyeye sahip sınıfları bulun
tokensave_couplingDosyaları fan-in/fan-out'a göre sıralayın
tokensave_inheritance_depthEn derin kalıtım hiyerarşilerini bulun
tokensave_circularDöngüsel dosya bağımlılıklarını tespit edin
tokensave_importsModül düzeyinde içe aktarma bağımlılıkları, döngüler ve kesme simülasyonu
tokensave_recursionÖzyinelemeli/karşılıklı özyinelemeli çağrı döngülerini tespit edin
tokensave_unused_importsAsla başvurulmayan içe aktarma ifadeleri
tokensave_doc_coverageBelgelendirilmemiş genel semboller
tokensave_simplify_scanDeğiştirilen dosyaların kalite analizi (kopyalar, ölü kod, karmaşıklık)

Kod Sağlığı Analitiği

Beş araç, mevcut grafikten yapısal kalite sinyallerini ortaya çıkarır. Bileşik puan, bağımsız boyutlar üzerinde geometrik ortalama kullanır; böylece hiçbiri oynanamaz.

AraçAmaç
tokensave_healthDöngüsüzlük, derinlik, eşitlik, yedeklilik 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 dengesiz dağılımı bulur
tokensave_dependency_depthEn uzun dosya düzeyinde bağımlılık zincirleri (Lakos seviyelendirme), Tarjan SCC döngü kırma sonrası tam zincir yeniden yapılandırmasıyla
tokensave_dsmstats, clusters veya matrix biçiminde Tasarım Yapısı Matrisi -- katman ihlallerini ve gizli bağlantıyı ortaya çıkarır
tokensave_test_riskKarmaşıklık, fan-in, kapsama ve 90 günlük git değişimini tek bir puanda birleştiren risk ağırlıklı test boşluğu analizi

Oturumlar

Bir AI kodlama oturumunun başı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_startGeçerli sağlık metriklerini daha sonra karşılaştırmak için JSON taban çizgisi olarak kaydedin
tokensave_session_endTaban çizgisine karşı yeniden hesaplayın ve farkı alın -- boyut başına deltalar, geçti/kaldı, otomatik temizlik

Düzenleme İlkelleri

Aracıların regex veya kabuk tırnak tehlikeleri olmadan dosyaları değiştirmesini sağlayan dört yazıcı araç. Her biri tek dosyalı, sabitlenmiş ve yazdıktan sonra yerinde yeniden dizinleme tetikler; böylece grafik asla bayatlamaz.

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

Git ve İş Akışı

AraçAmaç
tokensave_diff_contextDeğiştirilen dosyalar için anlamsal bağlam -- değiştirilen semboller, bağımlılıklar, etkilenen testler
tokensave_commit_contextCommit mesajı taslağı için kaydedilmemiş değişikliklerin anlamsal özeti
tokensave_pr_contextPull request açıklamaları için git referansları arasında anlamsal fark
tokensave_changelogİki git referansı arasında anlamsal fark
tokensave_test_mapSembol düzeyinde kaynak-test eşlemesi, kapsanmayan sembol tespiti ile
tokensave_test_coverageGeçişli çağrı kenarı genişletme ile dosya/sembol/test-fn başına kapsama özeti

Tür Sistemi

AraçAmaç
tokensave_type_hierarchyÖzellikler, arayüzler ve sınıflar için özyinelemeli tür hiyerarşi ağacı
tokensave_rankDüğümleri ilişki sayısına göre sıralayın (en çok uygulanan arayüz, en çok genişletilen sınıf)
tokensave_distributionDosya veya dizin başına düğüm türü dökümü
tokensave_largestDüğümleri boyuta göre sıralayın -- en büyük sınıflar, en uzun yöntemler

Taşıma

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

Çoklu Dal

AraçAmaç
tokensave_branch_searchBaşka bir dalın grafiğinde sembolleri arayın
tokensave_branch_diffDallar arasındaki sembolleri karşılaştırın (eklenen/kaldırılan/değiştirilen)
tokensave_branch_listDB boyutları ve senkronizasyon süreleriyle izlenen dalları listeleyin

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ış dizinlenmiş dosya ağacı
  • tokensave://overview -- dil dağılımı ve sembol türleriyle proje özeti
  • tokensave://branches -- DB boyutları ve üst bilgisiyle izlenen dallar

Belirteç Takibi

tokensave, her MCP araç çağrısında kaydettiği belirteçleri ölçer. Her araç yanıtı, bu belirli çağrıyla kaç tane ham dosya belirtecinin önlendiğini gösteren bir tokensave_metrics: before=N after=M satırı içerir.

Raporlamayı kapatma. Metrik satırı, MCP instructions içindeki bir cümleyle birlikte, aracıdan tasarrufları size raporlamasını ister; bu, modelin tokensave'in giriş belirteçlerinde yaptığı tasarrufu anlatarak çıkış belirteçleri harcadığı anlamına gelir. Çıkış belirteçleri daha pahalı türdür, bu nedenle aracınız neredeyse her turda tokensave'den bahsediyorsa, bu anlatım kazancı dengeleyebilir (#356). .tokensave/config.json içinde report_savings değerini false olarak ayarlayın veya her çalıştırmada geçersiz kılmak için TOKENSAVE_REPORT_SAVINGS ortam değişkenini kullanın (0, false, no, off veya boş hariç herhangi bir değer etkinleştirir). Hem metrik satırı hem de talimat kaybolur; tokensave install ayrıca raporlama kuralını aracı istem dosyalarına yazmayı durdurur. Ölçüm her iki durumda da değişmez -- her çağrı yine de tasarruf defterine düşer, bu nedenle tokensave gain, tokensave list, status ve monitor tam olarak önceki gibi raporlamaya devam eder. Varsayılan true olarak kalır.

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 turunu 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 LiteLLM adresinden her 24 saatte bir yenilenir ve çevrimdışıyken gömülü bir tabloya geri döner.

tokensave status başlığı, bugünün harcamasını, 7 günlük toplamı ve verimlilik oranını (kaydedilen belirteçler / toplam belirteçler) 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, Delegasyon, Git İşlemleri, Derleme/Dağıtım, Beyin Fırtınası, Konuşma, Genel. Sınıflandırma deterministiktir (araç adları ve Bash komutlarında desen eşleştirme), LLM çağrısı gerektirmez ve AgentSeal/codeburn adresinden uyarlanmıştır.

Canlı monitör

tokensave monitor

Tüm projelerden MCP araç çağrılarını gerçek zamanlı olarak gösteren, ~/.tokensave/monitor.mmap adresindeki paylaşılan bir bellek eşlemeli halka tamponu aracılığıyla çalışan genel bir TUI. Her giriş proje adını, araç adını ve belirteç deltasını gösterir. Üstteki maliyet paneli bugünün harcamasını, tasarrufları, verimliliği ve en iyi modeli gösterir (her 30 saniyede bir yenilenir).

tokensave monitor TUI

Bellek tanılaması

tokensave memory [--clean]

Makine genelinde, paylaşılan bir bellek eşlemeli tablo üzerinden her tokensave süreci (MCP sunucuları, senkronizasyonlar, dizin çalıştırmaları) için bir bellek raporu — ~/.tokensave/memory.mmap. Her örnek, başlangıçta, her MCP araç çağrısında ve senkronizasyon/çözümleme aşamaları sırasında RSS değerini en iyi çabayla kendi kendine örnekler; böylece rapor, tepe noktasını üreten aşamayla birlikte güncel ve tepe RSS değerini gösterir — yüksek bellek kullanımını ilişkilendirmek için gereken veri (bkz. #253). Satırlar alive, dead (OOM ile öldürülen bir süreç, tepe noktasını/aşamasını adli bir kayıt olarak geride bırakır) veya orphan (hâlâ çalışıyor ancak init'e yeniden ebeveynlenmiş) olarak işaretlenir. --clean ölü yuvaları temizler.

PEAK PHASE en yüksek örneği adlandırır, bu nedenle yalnızca örnekleme kadar hassastır. Artımlı senkronizasyon kayıtları sırasıyla: sync:extract, sync:resolve:load_nodes, sync:resolve:build_caches, sync:resolve:refs, sync:variants, sync:done. Tam bir dizin şunları kaydeder: index:extract, index:resolve:build_caches, index:resolve:refs, index:resolve:done, index:insert, index:done.

Her biri, adlandırdığı işten sonra kaydedilir. Eskiden işten önce kaydedilirlerdi; bu nedenle her örnek, bir sonraki adımın etiketi altında önceki adımın RSS değerini bildiriyordu — bu da 73 MiB'yi, aslında çözülmemiş referansların yüklenmesine ait olan ve hiç örneği olmayan bir adım olan düğüm yüklemesine atfediyor ve bir bellek araştırmasını aylarca yanlış alt sisteme yönlendiriyordu (#409). Bir aşama eklerseniz, işten sonra örnekleyin, öncesinde değil; ve tepe noktasını tutacak kadar büyük her adım için bir tane ekleyin.

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 dizin istatistiklerini, dil dökümünü, maliyet satırını (bugün / 7g / verimlilik) ve proje + dünya geneli ömür boyu toplamlarını işler:

tokensave status output

Dünya geneli 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 geneli toplamı gösterir. Yükleme yalnızca tek bir sayı gönderir (örn. 4823) ve hiçbir tanımlayıcı bilgi içermez. tokensave disable-upload-counter ile devre dışı bırakın.


Dizin Tazeliği

tokensave, arka plan arka plan programı veya işletim sistemi düzeyinde dosya izleyicisi olmadan grafiği güncel tutar.

İsteğe bağlı bayatlık kontrolü. Her MCP araç çağrısı, dizinlenen dosyaların son senkronizasyondan bu yana değiştirilip değiştirilmediğini kontrol eder. Bayat dosyalar bulunursa, araç yanıtı döndürülmeden önce yeniden çıkarılır. 30 saniyelik bir bekleme süresi, ardışık çağrıların her tuş vuruşunda ağacı yeniden taramasını önler.

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

Çok aracılı çalışma ve git çalışma ağaçları. Birden fazla aracı aynı proje üzerinde eşzamanlı çalıştığında, güçlü varsayım, her aracını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: aracı A ve aracı B'nin her birinin her dosyanın kendi kopyası vardır, bu nedenle birbirlerinin devam eden düzenlemelerinin üzerine asla yazmazlar. tokensave, bir sorgunun ana kopyanın içine yerleştirilmiş 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 aracılığıyla uzlaştırılır — diğer paralel geliştirme için kullanılan süreçle aynı. Bu tasarım, paylaşılan değiştirilebilir bir dizin üzerinde aracılar arası kilitlemenin karmaşıklığını ve hata modlarını önler.

Yalnızca CLI iş akışları. Bağlı bir aracı olmadan (MCP sunucusu yok) tokensave komutlarını çalıştırırsanız, komutlar arasında bayatlık kontrolü çalışmaz. Her commit veya clone'dan sonra dizini otomatik olarak taze 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 launchd/systemd/Windows Hizmeti otomatik başlatması 6.0.0'da kaldırıldı. Arka plan programının yerini alan gömülü işletim sistemi düzeyinde dosya izleyicisi, 6.1.1'de kaldırıldı (derin node_modules veya target ağaçlarına sahip büyük monorepolarda kaçak CPU ve bellek kullanımına neden oldu). Yukarıdaki isteğe bağlı bayatlık modeli mevcut tasarımdır.

5.x'ten hâlâ bir arka plan programı otomatik başlatmanız varsa, 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ükseltilmiş 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 ikilisini indirir ve çalışan ikiliyi yerinde değiştirir. Kararlı ve beta kanallarını bağımsız olarak destekler.


Sürümleme ve 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; tokensave bunu bir sonraki başlatmada otomatik olarak gerçekleştirir — asla elle yeniden yükleme veya yeniden dizinleme yapmazsınız.

BumpÖrnekGüncelleme gerektirirOtomatik eylem
Yama (x.y.Z)7.2.0 → 7.2.1Hiçbir şeyYok — yeniden yükleme yok, yeniden dizinleme yok
Küçük (x.Y.0)7.2.0 → 7.3.0Yeniden yükleme (yeni donanımlar, yeni araçlar, yeni yapılandırma)Yüklü her aracı 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 dizinleme (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 kayıtlı her aracı için install komutunu sessizce yeniden çalıştırır; böylece aracı yapılandırması her zaman geçerli ikiliyi işaret eder ve geçerli araç setini gösterir. Yama artışları bunu atlar — çalışan sürüm işareti basitçe ilerletilir.

Yeniden yükleme gerçekten sessizdir: açık bir tokensave install komutundan gördüğünüz aracı başına kurulum çıktısı burada bastırılır; bu nedenle sıradan bir tokensave init veya tokensave sync önünde asla görünmez. Bir aracının yapılandırması yenilenemezse — uygulama yüklü değilse veya yapılandırması salt okunur bir yerdeyse — başarısız olan aracıları adlandıran bir satır alırsınız:

warning: could not refresh tokensave config for: copilot.
  Run tokensave install to see the error.

Temel hatayı görmek için tokensave install komutunu çalıştırın. Sürüm işaretleri her iki durumda da ilerler; bu nedenle asla yazılamayacak bir yapılandırma yolu, sonraki her komutta yeniden denenmek yerine her yükseltmede bir kez bildirilir.

Proje başına zorunlu yeniden dizinleme (yalnızca büyük). Büyük bir artış, proje dizinlerinin yeniden oluşturulması gerektiği anlamına gelir. tokensave bunu tembel 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 arka plan tam yeniden dizinleme (tokensave sync --force eşdeğeri) başlatır.

Brew / cargo geri dönüşü. tokensave upgrade dışında ikiliyi 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, kendi kendine yükseltmeden sonra olduğu gibi bir sonraki başlatmada çalışır.

tokensave'in SemVer'den neden saptığı (bakımı sürümde kodlamak, sıfır dokunuşlu yükseltmeleri mümkün kılan şeydir), işaret mekaniği, bağımsız veritabanı şema sürümü ve sürüm kesme için bakımcı kuralları hakkında bilgi 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 [--idle-timeout-secs N]   # Start MCP server (N: exit after N idle seconds)
tokensave servers [--json]         # List running servers and the index each one holds
tokensave monitor                  # Live TUI showing MCP calls across all projects
tokensave memory [--clean]         # Per-instance RSS report for all tokensave processes
tokensave upgrade                  # Self-update to latest version
tokensave channel [stable|beta]    # Show or switch update channel
tokensave doctor [--agent NAME]    # Check installation health
tokensave githooks [on|off] [--local]  # Manage git hooks (--local: this repo only, no core.hooksPath)
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 konumu, proje dizini, küresel DB, kullanıcı yapılandırması, aracı entegrasyonu (MCP sunucusu, kancalar, izinler, istem kuralları) ve ağ bağlantısı. Bir yükseltmeden sonra herhangi bir araç izni eksikse, tokensave install komutunu çalıştırmanızı söyler. Yalnızca belirli bir aracı 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 önemlidir
MCP sunucusuClaude'a 80+ tokensave_* aracı sunarClaude grafiği doğrudan sorgulayabilir
CLAUDE.md kurallarıClaude'a aracılar/dosya okumaları yerine tokensave'i tercih etmesini söylerModelin pahalı desenlere geri dönmesini önler
PreToolUse kancasıYerel Rust kancası Explore aracılarını engellerModelin CLAUDE.md kurallarını yok saydığı durumları yakalar
UserPromptSubmit kancasıİstem gönderiminde çalışırBelirteç muhasebesi için yaşam döngüsü takibi
Stop kancasıOturum sona erdiğinde çalışırBelirteç sayaçlarını boşaltır

Sonuç: Claude, çok daha az belirteçle aynı kod anlayışını elde eder. Tipik bir Explore aracı 20-50 dosya okur; tokensave önceden oluşturulmuş dizininden ilgili sembolleri, ilişkileri ve kod parçacıklarını döndürür.


Ağ Çağrıları ve Gizlilik

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

ÇağrıGönderilen veriNe zamanDevre dışı bırakma
Dünya geneli sayaç yüklemesiBelirteç sayısı (bir sayı) + ülke (IP'den)senkronizasyon, durum, MCP oturumlarıtokensave disable-upload-counter
Dünya geneli sayaç okumaHiçbir şey (GET isteği)durumN/A (salt okunur, 1s zaman aşımı)
Sürüm kontrolüHiçbir şey (GET isteği)durum (5m önbellekli), senkronizasyon (paralel)N/A (1s zaman aşımı, başarısızlıkta işlem yok)
Model fiyatlandırma yenilemeHiçbir şey (GET isteği)tokensave cost (24s önbellekli)N/A (5s zaman aşımı, gömülü fiyatlandırmaya geri döner)

Dünya geneli sayaç yüklemesi, {"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) kaydeder — gerçek IP adresiniz saklanmaz.

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


50+ Dil

tokensave, Cargo özellik bayraklarıyla kontrol edilen üç katmana ayrılmış 50'den fazla programlama dilini destekler. Her katman, altındaki tüm dilleri içerir. Markdown başlıkları, hiyerarşik Contains kenarlarıyla Module düğümleri olarak çıkarılır; böylece belge yapısı, kaynak kodun yanında grafik sorgularına katılır.

Lite — --no-default-features

Her zaman derlenir. En popüler diller için en küçük ikili, artı Svelte ve Astro (TypeScript çıkarıcı aracılığıyla komut bloğu çıkarma, ekstra 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

Orta (Lite + 9 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

Tam (Orta + 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
Godot Shader.gdshader, .gdshaderinclang-glsl
Minecraft Function.mcfunctionlang-mcfunction
WGSL.wgsllang-wgsl
HLSL.hlsl, .fxlang-hlsl
Verilog / SystemVerilog.v, .vh, .sv, .svhlang-systemverilog
Metal.metallang-metal
CUDA / HIP.cu, .cuhlang-cuda
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
Terraform.tf, .tfvarslang-terraform
TOML.tomllang-toml
Lean.leanlang-lean

Bireysel diller, tam bir katman 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, importlar, çağrı grafikleri, kalıtım zincirleri, docstring'ler, karmaşıklık metrikleri, dekoratör/annotasyon çıkarımı ve dosyalar arası bağımlılık takibi.


tokensave vs CodeGraph

tokensave, CodeGraph (Node.js/TypeScript) projesinin sıfırdan Rust ile yeniden yazımıdır. Her ikisi de AI kodlama ajanları için anlamsal kod grafikleri oluşturur, ancak kapsam ve yetenekler açısından önemli ölçüde ayrışırlar.

tokensaveCodeGraph
Çalışma zamanıYerel ikili (Rust)Node.js 18+
Kurulumbrew install, cargo install, scoop installnpx @colbymchenry/codegraph
Diller50+ (3 katman: 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, OMP, Pi, Plank, Factory Droid)1 (Claude Code)
Dizin tazeliğiHer MCP çağrısında isteğe bağlı bayatlık kontrolü; bağlantıda yakalama senkronizasyonu; çoklu ajan çalışmasının git worktree'leri kullanması beklenirYerel işletim sistemi düzeyinde dosya izleyici (FSEvents/inotify/ReadDirectoryChangesW, 2 sn debounce); bağlantıda yakalama senkronizasyonu
Çoklu dal dizinlemeEvet, isteğe bağlı (dal başına DB'ler, dallar arası diff/arama)Hayır
Karmaşıklık metrikleriAST ile çıkarılan (dallar, döngüler, iç içe geçme derinliği, cyclomatic ve 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
Grafik görselleştiriciKaldırıldı (v4.0.1)Evet
Anlamsal aramaAjan odaklı anahtar kelime genişletme (sıfır maliyet)Yerel embedding'ler (nomic-embed-text-v1.5 ONNX ile)
MCP kaynakları4 (status, files, overview, branches)Hayır
MCP annotasyonlarıEvet (readOnlyHint, alwaysLoad)Hayır
Ölü kod tespitiEvetHayır
Döngüsel bağımlılık tespitiEvetHayır
Tip hiyerarşisiEvetHayır
God class / bağlaşım analiziEvetHayır
Commit / PR bağlamıEvetHayır
Test eşlemeEvetHayır
Yeniden adlandırma önizlemesiEvetHayı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 skor, Gini, bağımlılık derinliği, DSM, risk ağırlıklı test boşlukları, oturum deltalarıHayır
Düzenleme ilkelleri4 atomik yazıcı (str_replace, multi_str_replace, insert_at, ast_grep_rewrite) otomatik yeniden dizinleme ileHayır
Çökme dayanıklılığıAlt süreç izole çıkarım; yerel gramer iptalleri dosyayı atlar, senkronizasyon devam ederHayır
Kendi kendine yükseltmetokensave upgrade stabil/beta kanalları ilenpm update
DB motorulibsql (SQLite fork, WAL, async)better-sqlite3 / wa-sqlite (WASM)
Dizinleme hızı1.782 dosya için ~1.2s1.782 dosya için ~4s
İkili boyut~25 MB (tüm gramerler paketlenmiş)~80 MB (node_modules + WASM)

CodeGraph bu yaklaşıma öncülük etti 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 ediyor. tokensave, daha derin analiz, daha fazla ajan, çoklu dal desteği ve çalışma zamanı bağımlılığı olmayan yerel bir ikili 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.


Neden Alternatiflere Göre tokensave

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

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

Her alternatif bir çalışma zamanı gerektirir: Python, Node.js veya her ikisi. tokensave, tüm 50+ tree-sitter gramerleri paketlenmiş tek bir ~25 MB Rust ikilisi olarak gelir. Kurulacak başka bir şey yok.

En derin kod zekası

tokensave sembol düzeyinde çalışır: fonksiyonlar, struct'lar, alanlar, çağrı kenarları, tip 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 struct'ı değiştirirsem ne bozulur?" sorularını yanıtlayamazlar. tokensave'in 80+ özel MCP aracı, çağrı grafiği gezinme, etki analizi, ölü kod tespiti, test eşleme, yeniden adlandırma önizlemesi, tip 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 ilkelleri ve daha fazlasını kapsar. En yakın rakip (code-review-graph) 22 araca sahiptir; diğerleri 5-9'a sahiptir.

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 derin bir entegrasyonla bu kadar çok ajanı kapsamaz. Claude Code, hooks, prompt kuralları ve otomatik izinli araç izinleri alır. Kiro, global MCP yapılandırması, kaynak olarak yüklenen tokensave.md yönlendirmesi, izinli yerleşik/tokensave araç onayına sahip yönetilen bir ajan ve delegasyon güvenlik rayları artı yazma sonrası senkronizasyon için hooks alır. Diğer ajanlar, yerel yapılandırma formatlarında MCP sunucu kaydı alır.

Çoklu dal dizinleme

Bu alanda isteğe bağlı dal başına grafik veritabanları ve dallar arası diff ve arama sunan tek araç. Etkinleştirildiğinde, dal değiştirme anlıktır -- yeniden dizinleme gerekmez.

Çağrı başına token takibi

Her bir MCP araç çağrısının kaç token tasarrufu sağladığını, ayrıca tüm projelerde canlı 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'in çekirdek motoru (PyPI'de graperoot) tescillidir -- kod grafiğinizle ne yaptığını göremezsiniz. OpenWolf, türev çalışmaların açık kaynak olmasını gerektiren AGPL-3.0'dır.

Performans

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

AraçSüreHızlanma
CodeGraph (TypeScript)31.2s1x
tokensave (Rust)1.2s26x

Sorun Giderme

"tokensave başlatılmadı"

.tokensave/ dizini projenizde 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 çalıştırın)
  2. Ajanı tamamen yeniden başlatın
  3. tokensave öğesinin PATH'inizde olduğunu kontrol edin: which tokensave

Aramada eksik semboller

  • Dizini güncellemek için tokensave sync ç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

Dizinleme yavaş

Büyük projeler ilk tam dizinlemede 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 --force (değil tokensave sync) kullanın
  • Bayatlık, bir ajan bağlıyken her MCP araç çağrısında 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, ortamında TOKENSAVE_DISABLE_SERVER=true ayarlayarak MCP sunucusunu proje başına devre dışı bırakabilirsiniz. Sunucu, başlatmadan temiz bir şekilde çıkar.

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

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

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

Ayrıca kabuk aracılığıyla global olarak da ayarlayabilirsiniz (TOKENSAVE_DISABLE_SERVER=true claude), ancak bu, oturumdaki her proje için tokensave MCP sunucusunu devre dışı bırakır.

DISABLE_TOKENSAVE=true, bu değişken ad alanına alınmadan önce oluşturulan yapılandırmalar için kullanımdan kaldırılmış bir uyumluluk takma adı olarak desteklenmeye devam eder.


Köken

Bu proje, @colbymchenry tarafından yazılan orijinal CodeGraph TypeScript uygulamasının Rust portudur. Port, aynı mimariyi ve MCP araç arayüzünü korurken, performans ve yerel tree-sitter bağlamaları için Rust'tan yararlanır.


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ğlanır, sertifika SignPath Foundation tarafından verilir

Lisans

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

tokensave.dev