Kodlama ajanlarınız, zaten düzelttiğiniz şeyi yeniden hata ayıklamaz.
Claude Code, Codex, Cursor ve bu makinedeki diğer ajanlar her oturumu zaten diske kaydediyor.
deja aylar öncesi dahil hepsini indeksler ve önemli kısmı
şu an çalışan ajana verir.
## Kurulum
```sh
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto
```
Betik ikili dosyayı `~/.local/bin` içine koyar. Bu dizin henüz `PATH` içinde değilse ikinci komut aynı kabukta bulunmaz: betiğin yazdırdığı, tam yolu içeren `next:` satırını çalıştırın ya da `PATH` satırı eklendikten sonra yeni bir kabuk açın.
`raw.githubusercontent.com` erişilemiyorsa aynı sürümü sunan bir npm aynası var:
```sh
npm i -g @vshulcz/deja-vu --registry=https://registry.npmmirror.com
deja install --auto
```
Kurulum on saniye, indeksleme on saniye kadar. İkinci komut bulduğu her ajana MCP geri çağırmayı bağlar,
ajanın desteklediği yerlerde oturum başlangıcında geri çağırmayı açar ve ilk indeksi kurar; böylece bir
sonraki oturum hiçbir şey beklemez.
Yeni bir ajan oturumu açın ve aylar önce yaptığınız bir şeyi sorun:
> daha önce jwt refresh rotation ile uğraşmış mıydık? belleğine bak
Sormanız da gerekmiyor: otomatik geri çağırma açıkken ajan, oturum açılır açılmaz bu projede neyin çözüldüğünü
zaten biliyor. Kendiniz bakmak için `deja` çalıştırın.
opencode, DeepSeek Harness, Zed, Kimi Code, Codex CLI, Grok Build, OpenClaw, pi ve Hermes için kendi ekosistemlerinde
birer paket de var; eklentilerini oradan kurmaya alışkın olanlar için:
```sh
opencode plugin opencode-deja
dsh plugin --profile web add dsh-deja
# Zed: eklenti panelinde deja'yı arayın
# Kimi Code: /plugins install https://github.com/vshulcz/deja-vu
# Codex CLI: codex plugin marketplace add https://github.com/vshulcz/deja-vu && codex plugin add deja-vu@deja-vu
# Grok Build: grok plugin marketplace add vshulcz/deja-vu && grok plugin install deja
openclaw plugins install clawhub:@vshulcz/openclaw-deja && openclaw config set plugins.entries.deja-vu.hooks.allowConversationAccess true
pi install npm:@vshulcz/pi-deja
hermes plugins install deja-memory
```
`deja install --auto` yukarıdakilerin hepsini zaten bağlıyor, yani iki yoldan biri yeter. İkisi birden de
sorun çıkarmaz: her paket `deja install`'ın yazdığını okur ve yalnızca eksik olanı tamamlar; araçlar iki kez
kaydedilmez, geri çağırma iki kez çalışmaz. Ayrıntılar [`extensions/`](../../extensions) altında.
Aynı arama bir skill olarak da var; `SKILL.md` okuyan her ajan kurabilir:
```sh
npx skills add https://github.com/vshulcz/deja-vu --skill deja-search # skills CLI: Claude Code, Cursor, Goose, Copilot…
openclaw skills install @vshulcz/deja-search # ClawHub
hermes skills install vshulcz/deja-vu/skills/deja-search # Hermes
```
Skill, kurduğunuz `deja` ikilisini çağırır; kendi kopyasını taşımaz.
Diğer yollar: `brew install deja-vu`,
`go install github.com/vshulcz/deja-vu/cmd/deja@latest` ya da hiçbir şey kurmadan denemek için
`npx @vshulcz/deja-vu "sorgu"`. Windows'ta kurulum betiği `unsupported OS` diyerek çıkar, çünkü bir shell
betiği; `scoop install deja-vu` kullanın (Scoop'un main bucket'ında) veya `winget install vshulcz.deja-vu` kullanın ya da [son sürümden](https://github.com/vshulcz/deja-vu/releases/latest)
`deja-vu__windows_amd64.zip` dosyasını alıp `deja.exe`'yi `PATH`'e koyun.
Yalnızca ikili dosya bile tam bir kurulumdur: indeksleme, arama, `show`, `ctx`, `blame`, `--json` ve kimlik
bilgisi temizliği başka hiçbir şeye ihtiyaç duymaz. `deja install`'ın yaptığı, MCP'yi ajanlarınıza bağlamak ve
oturum başlangıcında geri çağırmayı açmaktır; değerli ama isteğe bağlı.
## Kendiniz arayın
Terminalde argümansız `deja`, tüm ajanların geçmişinde bir arama ekranı açar. Önce commit edilmemiş
değişikliğinizin arkasındaki oturumları, sonra bu projedeki son oturumları gösterir; siz yazdıkça liste
daralır.
- `↑↓` bir oturum seçer, `↵` onu eşleşmenin olduğu yerde açar, `n` ve `N` eşleşmeler arasında gezer, `esc` geri döner. Oturumun içinde `/` bir kelime arar, `]` ve `[` sorduğun sorular arasında atlar.
- Arama kutusu filtre de alır: iki nokta üst üsteli bir ajan (`codex:`), `today`, `yesterday`, `week`, `month` ve `in:`.
- `r` oturumu onu yazan ajanda sürdürür. `o` başka herhangi bir ajanda devam ettirir; o ajan, oturumun ne sorduğu, neye karar verdiği ve neyi açık bıraktığıyla başlar.
- `tab` bu proje, tüm projeler ve Deleted arasında geçiş yapar; Deleted, ajanının sildiği ama deja'nın hâlâ tuttuğu oturumlardır. `R` birini yerine koyar.
- `?` tüm tuşları listeler, geri kalanı `^k` içindedir (oturum id'sini veya proje yolunu kopyalamak, bir oturumu unutmak), listede `q` çıkar; `esc` bir adım geri gider, arama kutusu boşsa çıkar.
`DEJA_TUI=0` ile bunun yerine düz metin özeti yazdırır; bu, `deja brief` çıktısıyla aynıdır. Bir pipe'a
bağlıyken neyin indekslendiğini ve sırada hangi komutun çalıştırılacağını yazdırır.
## Ne kazandırıyor
**Codex'te çözüldü, Claude hatırlıyor.** Kırk bir kodlama ajanı her konuşmayı yerel dosyalara yazıyor; deja
bu dosyaları hepsinin okuyabildiği bir bellek katmanına dönüştürüyor.
| | |
| --- | --- |
| **Geriye doğru arama** | `deja "connection pool exhausted"` gigabaytları tarar, deja'yı kurmanızdan öncesi dahil. Doğal dildeki bir soru ilgi düzeyine göre çalışan kipe düşer. Zaman bir ipucudur, filtre değil. |
| **Ajanlar arası geri çağırma** | MCP'deki `deja` aracı `recall` kipinde, hangi ajanın içinden olursa olsun "bunu üç hafta önce düzeltmiştik" yanıtını verir; o zaman kimin düzelttiği fark etmez. |
| **Sıkıştırmadan sağ çıkar** | 43 bağlam sıkıştırması üzerinde ölçüldü: özet, kararların %77'sini ve çalıştırdığınız komutların %0.2'sini korudu. Kalan %99.8'i deja geri verir. Claude Code ve Codex'te deja, sıkıştırma başladığı anda görevi, dosyaları ve komutları not eder ve sıkıştırmadan sonra bir kez geri verir. |
| **Harekete geçme anında geri çağırma** | Ajan bir dosyayı değiştirmeden veya bir komut çalıştırmadan önce `PreToolUse` kancası, o dosya hakkında daha önce ne karar verildiğini, o komutun burada işe yarayan biçimini ya da programın bu makinede hiç olmadığını söyler. Komut başarısız olduğunda `PostToolUse` kancası, bu makinede aynı hatadan sonra ne çalıştırıldığını gösterir — ajanın kendiliğinden sormayacağı tam da bu ikilidir. |
| **Konuşmayı değil işi indeksler** | Her turda açılan her dosya, çalıştırılan her komut ve çıkış kodu, bir düzenlemenin yerine geçtiği tam parça. Her özetin kaybettiği şey tam olarak budur. |
Ayrıca: `deja promote --state rejected` geri alınmış bir kararı işaretler ve bundan sonra her sonuç onun
denenip elendiğini gösterir; bir sonuç "bu oturumun dokunduğu 4 dosya o zamandan beri değişti" der ve karar
veremediğinde susar; `deja sync ssh laptop` belleği makineler arasında yalnızca ekleyerek taşır, araya bulut
girmez; `deja handoff --to codex` başka bir ajanda devam etmek için mevcut bağlamı paketler; bilinen biçimdeki
anahtarlar, token'lar, JWT'ler ve özel anahtar blokları indeksleme sırasında çıkarılır — ne var ki örüntü
eşleştirme sır tespiti değildir ve bilinmeyen bir biçim geçebilir.
### Kendi çalışmanızı çizin
`deja stats --card` doğrudan terminale çizer; bir dosya adı verirseniz profil README'niz için bir SVG yazar.
Başka bir yerde yayımlamak için [PNG'ye çevirin](https://vshulcz.github.io/deja-vu/card/) — o sayfa dönüşümü
sizin tarayıcınızda yapar.
Tam başvuru [belge sitesinde](https://vshulcz.github.io/deja-vu/).
## Gizlilik
İndeksleme ve arama yereldir. Ağı yalnızca `deja update`, `deja sync ssh`, `deja doctor` içindeki sürüm
denetimi, sizin yapılandırdığınız uç noktaya giden `deja embed` (anlamsal sidecar kurulduktan sonra sorguyu o uç noktaya gönderen her arama da) ve etkileşimli bir komutun günde bir kez son
sürüme bakması kullanır. Bu bakış oturum verisi göndermez; `DEJA_OFFLINE=1` ya da `DEJA_NO_UPDATE_NOTICE=1`
onu kapatır.
Kimlik bilgileri indeksleme sırasında temizlenir: AWS anahtarları, `api_key=` ve `token=` atamaları, bearer
token'lar ve çıplak JWT'ler, PEM özel anahtar blokları, çeşitli sağlayıcıların token'ları,
`scheme://user:pass@host` biçimindeki URL'ler, hiçbir kuralın kapsamadığı yüksek entropili değerler ve düz
metin içine yazılmış parolalar — "the admin password is …" gibi, tutunacak hiçbir ayracın olmadığı durumlar.
Değer `[redacted:]` olur, çevresindeki metin aranabilir kalır. `deja share` ve `deja sync export` dışa
aktarırken bir kez daha temizler. Örüntü eşleştirme sır tespiti değildir: kuralların tanımadığı bir biçim
olduğu gibi geçebilir, güvenlik modeline bakın.
`deja forget` oturumları yeniden kurulan indeksten çıkarır ve bir mezar taşı bırakır; böylece sonraki
`deja index` onları özgün geçmişten geri getiremez.
[Güvenlik modeli](../../docs/SECURITY-MODEL.md) veri akışlarını, temizliğin sınırlarını, güven varsayımlarını ve
sürüm doğrulamasını belgeler.
## Komut satırı
Terminalde yalın `deja` [arama ekranını](#kendiniz-arayın) açar. Bir sorguyla ya da aşağıdaki komutlardan
biriyle çalıştırıldığında çıktıyı yazdırıp çıkar:
```text
$ deja "jwt refresh token"
[claude] api · Jul 8 · 8f31c0a9 — 2 matches
login started failing after refresh token rotation; jwt kid mismatch in tests
fixed by reloading jwks cache after rotateKey and adding a clock-skew test
[codex] web · Jul 1 · b77d91e2 — 1 match
refresh token cookie needed SameSite=Lax in local callback flow
```
| Komut | Ne yapar |
| --- | --- |
| `deja ` | Tüm geçmişte arar. Birden çok sözcük VE anlamına gelir, tırnak bitişik metin ister; tam eşleşme yoksa sözcük biçimlerini ve yakın yazımları dener. |
| `deja` | Terminalde, yukarıdaki tam ekran arama. `deja brief` bunun yerine metin özetini yazdırır: bugünün oturumları, deja'nın neler sunduğu, son çalışmalar ve denenecek bir arama. |
| `deja wip` | Bu dizindeki son oturum ne yapıyordu: görev, varılan sonuç, elde olan dosyalar, son komut ve başarısız olup olmadığı. Hepsi kayıtlardan çıkarılır, kimsenin not tutmuş olmasına bağlı değildir. |
| `deja blame [:satır]` | Bu dosyayı hangi oturumlar konuştu, ne karar verildi ve neden. Satır numarası verilirse: o satırı en son değiştiren commit ve o satırı ya da o commit'in değiştirdiği metni yazan oturum. |
| `deja files ` | Ters yön: bir konudaki çalışmanın gerçekte hangi dosyalara dokunduğu. |
| `deja how ` | Bu makinede bu iş gerçekte nasıl çalıştırılıyor — ajanların daha önce çalıştırdığı komutlardan alınmış gerçek argümanlarla. |
| `deja fix ` | Bu makinede aynı hatadan sonra ne çalıştırıldı ve ondan sonra hata bir daha çıkmadı. Asla bir merge, force push ya da silme değil. |
| `deja friction` | Üç veya daha fazla farklı oturuma isabet eden hatalar ve hangi araçlardan geldikleri. |
| `deja ctx ` | En iyi sonucun Markdown özeti, değiştirdiği kodla birlikte, doğrudan bir prompt'a girecek biçimde. |
| `deja resume ` | Bulunan oturumu ait olduğu araçta yeniden açar. |
| `deja view` | Tüm belleği tek bir yerel HTML dosyasına aktarır. Sunucu yok, veri makineden çıkmaz. |
| `deja doctor [--deep]` | Kendi kendine denetim; `--deep` ile indeksi kaynak dosyalara karşı doğrular. |
| `deja mcp` | stdio üzerinden MCP sunucusu — `deja install`'ın bağladığının ta kendisi. |
Tam başvuru [komut belgelerinde](https://vshulcz.github.io/deja-vu/guide/commands.html).
### MCP araçları
Sunucu tek bir `deja` aracı sunar, yeteneği `mode` parametresi seçer: `recall`, `context`, `blame`, `fix`,
`how`, `orient`, `remember`, `handoff`. `deja install` bunu kendiliğinden bağlar, yani yalnızca bir ajanı elle yapılandırırken
önemlidir. Eski altı araç adı, hâlihazırda bağlı istemcilerde çalışmaya devam eder.
Yedi yerine tek araç bir maliyet meselesidir, üslup meselesi değil. Bağlı bir MCP sunucusu araç tanımlarını
her istekle birlikte gönderir, dolayısıyla ajan bir şey çağırsa da çağırmasa da her turda bedeli ödenir:
burada 477 token, ölçülen yedi sunucunun en büyüğünde ise 8,283. deja'nınki de, şema kipleri olan tek bir
araca indirilene kadar 828'di.
## Desteklenen araçlar
Otomatik geri çağırma açıkken Claude Code ve Codex, sıkıştırma başladığında mevcut kaydı deja'ya verir; deja da
özetin birazdan kaybedeceğini saklar: görevi, sonuçları, dosyaları, her komutun nasıl bittiğini ve geriye ne
kaldığını. Aynı oturumdaki ve aynı çalışma dizinindeki sonraki kanca bunu tek seferde, 4 KB'ı aşmadan geri
verir ve deponun o zamandan beri değişip değişmediğini bir satırla ekler. `deja stats`, sıkıştırma ile ilk
düzenleme arasındaki araç çağrısı sayısını sayar; bu özellik onunla ölçüldü.
Ayrıntılar [sıkıştırma sonrası kurtarma](../../docs/compaction.md) belgesinde.
Claude Code · Cline · Codex CLI · opencode · aider · Gemini CLI · Cursor · Antigravity ·
Grok Build · Hermes · Goose · Qwen Code · Kimi Code · pi · omp (Oh My Pi) · OpenClaw ·
Copilot CLI · VS Code Copilot Chat · Amp · prime-agent (PrimeIntellect) · Roo Code ·
Continue · Crush · DeepSeek Harness · Cherry Studio · Senpi · gajae-code · Kimchi Coding ·
Command Code · ZCode · CodeWhale · Reasonix · Kiro · Kilo Code · CodeBuddy Code ·
TRAE CLI · Muse Code · Junie · JetBrains AI Assistant · Devin CLI · Windsurf / Devin Desktop · MiniMax Code · Zed.
Her birinin neyi desteklediği — MCP geri çağırma, otomatik geri çağırma, skill'ler, komutlar, resume, handoff —
[İngilizce README'deki yetenek tablosunda](../../README.md#supported-harnesses). Özel depolama konumları `DEJA_*_ROOT`
değişkenleriyle belirtilir; araçların kendi geçiş değişkenlerine de uyulur.
### Kendi paketi olan ajanlar
`deja install --auto` bunları da diğerleri gibi bağlar ve bu her zaman en kısa yoldur. Ayrıca her birinin
kendi ekosisteminde bir paketi var; eklentilerini oradan kuranlar için:
| Ajan | Paket | Kurulum |
| --- | --- | --- |
| opencode | npm `opencode-deja` | `opencode plugin opencode-deja` |
| DeepSeek Harness | npm `dsh-deja` | `dsh plugin --profile web add dsh-deja` |
| Zed | `deja-context-server` | Zed → Extensions → deja |
| Kimi Code | eklenti `deja` | `/plugins install https://github.com/vshulcz/deja-vu` |
| Codex CLI | eklenti `deja-vu` | `codex plugin marketplace add https://github.com/vshulcz/deja-vu`, sonra `codex plugin add deja-vu@deja-vu` |
| Grok Build | eklenti `deja` | `grok plugin marketplace add vshulcz/deja-vu`, sonra `grok plugin install deja` |
| OpenClaw | ClawHub ve npm `@vshulcz/openclaw-deja` | `openclaw plugins install clawhub:@vshulcz/openclaw-deja` |
| pi (ve omp) | npm `@vshulcz/pi-deja` | `pi install npm:@vshulcz/pi-deja` |
| Hermes | Hermes eklenti kataloğunda `deja-memory` bellek sağlayıcısı | `hermes plugins install deja-memory` ya da GitHub'dan: `hermes plugins install vshulcz/deja-vu/extensions/hermes` |
İki yoldan biri yeter, ikisi birden de bir şey bozmaz: her paket önce `deja install`'ın yazdığını okur.
opencode, dsh ve OpenClaw yalnızca eksiği tamamlar; Kimi, Grok, Codex ve pi kurucu zaten bağladıysa geri
çekilir; Zed'de iki taraf aynı sunucu kimliğini kullanır. Yani kurulum sırası önemli değil.
Hepsi sizin kurduğunuz deja'yı kullanır; paketin içindeki kopya yalnızca yedektir.
## İsteğe bağlı anlamsal geri çağırma
`DEJA_EMBED_URL` ile `deja embed`'i yerel bir Ollama'ya, LM Studio'ya veya OpenAI uyumlu herhangi bir uç
noktaya yönlendirin; başka sözcüklerle sorulan soru da isabet etsin. Kullanılabilir bir çalışma zamanı yoksa
sözcüksel arama ve MCP geri çağırma her zamanki gibi çalışır.
## Kanıt
Bu makinenin daha önce çözdüğü bir işte %58 daha az token · LongMemEval-S üzerinde (470 soruluk temizlenmiş küme) %88.9 hit@1 · LoCoMo üzerinde %71.9 · gigabaytlarca geçmişte milisaniyelik sorgular Kol başına on bir çalıştırma: hiçbir şey bağlı değilken 126,222'ye karşı 53,558 token; sonraki bir sürümde yine on birer çalıştırma: 103,443'e karşı 52,815 ·
bir işi bitirmenin maliyeti ·
her iki erişim değerlendirme düzeneği de bu depoda ve açık veri kümelerinde dakikalar içinde koşuyor ·
sayıları kendiniz doğrulayın