deja-vu

आपके कोडिंग एजेंट्स अब वह दोबारा डीबग नहीं करेंगे जो आप पहले ही ठीक कर चुके हैं।

Claude Code, Codex, Cursor और इस मशीन के बाकी एजेंट्स हर सेशन पहले से डिस्क पर सेव करते हैं। deja महीनों पुराने समेत सब कुछ इंडेक्स करता है और काम का हिस्सा उस एजेंट को देता है जो अभी काम कर रहा है।

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Português | Français | Deutsch | Русский | Türkçe | हिन्दी

vshulcz/deja-vu — Trendshift

GitHub Stars CI coverage Release npm License: MIT

दस्तावेज़ · बेंचमार्क · तुलना

एक ही सवाल एक ही एजेंट से दो बार: मेमोरी के बिना उसे कुछ याद नहीं, deja के साथ वह आठ महीने पुराने नतीजे से जवाब देता है

```sh curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh deja install --auto ```
रिकॉल
LongMemEval-S पर 97.2% R@5
सभी 500 प्रश्न · MemPalace 96.6%, agentmemory 95.2%
उन्हीं 19,195 सेशन पर: 100 में 19 पहले स्थान पर, अगला सबसे अच्छा 14
टोकन
agentmemory के आधे टोकन
पहले से हल किए काम पर 53,558 बनाम 104,974
हर टर्न 477 टोकन की टूल परिभाषाएँ, सात में सबसे कम
इंडेक्सिंग
19,195 सेशन इंडेक्स करने में 13.6 s
सात में अगला: 72 s
पहले जवाब तक 26 ms, खोज की माध्यिका 97 ms

deja-vu का मेंटेनर मैं हूँ, इसलिए हर ड्राइवर, कॉर्पस और स्कोरिंग नियम इसी रिपॉज़िटरी में हैं · सीधी तुलना, और जिस पंक्ति पर शक हो उसे दोबारा कैसे मापें · LongMemEval और LoCoMo रन

## इंस्टॉल ```sh curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh deja install --auto ``` स्क्रिप्ट बाइनरी को `~/.local/bin` में रखती है। अगर यह डायरेक्टरी अभी आपके `PATH` में नहीं है, तो उसी शेल में दूसरा कमांड नहीं मिलेगा: स्क्रिप्ट जो `next:` लाइन छापती है (उसमें पूरा पाथ है) उसे चलाएँ, या `PATH` वाली लाइन जुड़ने के बाद नया शेल खोलें। अगर `raw.githubusercontent.com` तक पहुँच नहीं है, तो उसी वर्शन का npm मिरर है: ```sh npm i -g @vshulcz/deja-vu --registry=https://registry.npmmirror.com deja install --auto ``` इंस्टॉल में दस सेकंड, इंडेक्स में करीब दस। दूसरी कमांड हर मिले हुए एजेंट में MCP रिकॉल जोड़ती है, जहाँ एजेंट समर्थन करता है वहाँ सेशन शुरू होते ही रिकॉल चालू करती है, और पहला इंडेक्स बना देती है — ताकि अगला सेशन किसी चीज़ का इंतज़ार न करे। नया एजेंट सेशन खोलिए और महीनों पुरानी किसी चीज़ के बारे में पूछिए: > क्या हमने पहले jwt refresh rotation पर काम किया था? अपनी मेमोरी में देखो पूछने की ज़रूरत भी नहीं: ऑटोमैटिक रिकॉल चालू हो तो सेशन खुलते ही एजेंट को पता होता है कि इस प्रोजेक्ट में क्या हल हो चुका है। खुद देखना हो तो `deja` चलाइए। opencode, DeepSeek Harness, Zed, Kimi Code, Codex CLI, Grok Build, OpenClaw, pi और Hermes के लिए उनके अपने इकोसिस्टम में पैकेज भी हैं, उन लोगों के लिए जो एक्सटेंशन वहीं से लगाते हैं: ```sh opencode plugin opencode-deja dsh plugin --profile web add dsh-deja # Zed: एक्सटेंशन पैनल में deja खोजिए # 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` ऊपर वाला सब कुछ पहले ही जोड़ देता है, इसलिए दोनों में से कोई एक रास्ता काफ़ी है। दोनों साथ में भी दिक्कत नहीं करते: हर पैकेज पढ़ता है कि `deja install` ने क्या लिखा और सिर्फ़ छूटा हुआ हिस्सा भरता है — न टूल दो बार रजिस्टर होते हैं, न रिकॉल दो बार चलता है। विवरण [`extensions/`](../../extensions) में है। यही खोज एक skill के रूप में भी है, जिसे `SKILL.md` पढ़ने वाला कोई भी एजेंट लगा सकता है: ```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 आपके इंस्टॉल किए हुए `deja` बाइनरी को बुलाता है, अपना अलग नहीं रखता। और तरीके: `brew install deja-vu`, `go install github.com/vshulcz/deja-vu/cmd/deja@latest`, या बिना कुछ इंस्टॉल किए आज़माने के लिए `npx @vshulcz/deja-vu "क्वेरी"`। Windows पर इंस्टॉल स्क्रिप्ट `unsupported OS` कहकर रुक जाती है क्योंकि वह एक shell स्क्रिप्ट है; `scoop install deja-vu` चलाइए (यह Scoop के main bucket में है) या `winget install vshulcz.deja-vu`, या [नवीनतम रिलीज़](https://github.com/vshulcz/deja-vu/releases/latest) से `deja-vu__windows_amd64.zip` लीजिए और `deja.exe` को `PATH` में रखिए। सिर्फ़ बाइनरी भी पूरा इंस्टॉल है: इंडेक्सिंग, खोज, `show`, `ctx`, `blame`, `--json` और क्रेडेंशियल हटाने के लिए और कुछ नहीं चाहिए। `deja install` का काम है MCP को आपके एजेंट्स से जोड़ना और सेशन शुरू होने पर रिकॉल चालू करना — उपयोगी, पर वैकल्पिक। ## खुद खोजिए टर्मिनल में बिना आर्ग्युमेंट के `deja` सभी एजेंट्स के इतिहास पर एक खोज स्क्रीन खोलता है। सबसे ऊपर वे सेशन होते हैं जो आपके बिना commit किए बदलाव के पीछे हैं, फिर इस प्रोजेक्ट के हाल के सेशन, और टाइप करते-करते सूची छोटी होती जाती है।

deja स्क्रीन में खोज टाइप करना, मिला हुआ सेशन पढ़ना और उसे दूसरे एजेंट में आगे बढ़ाना

- `↑↓` सेशन चुनता है, `↵` उसे मिलान वाली जगह पर खोलता है, `n` और `N` मिलानों के बीच चलते हैं, `esc` वापस ले जाता है। सेशन के अंदर `/` कोई शब्द ढूँढता है, `]` और `[` आपके पूछे सवालों के बीच कूदते हैं। - सर्च बॉक्स फ़िल्टर लेता है: कोलन के साथ एजेंट (`codex:`), `today`, `yesterday`, `week`, `month` और `in:`। - `r` सेशन को उसी एजेंट में फिर से शुरू करता है जिसने उसे लिखा। `o` उसे किसी भी दूसरे एजेंट में आगे बढ़ाता है, जो इससे शुरू करता है कि सेशन ने क्या पूछा, क्या तय किया और क्या खुला छोड़ा। - `tab` इस प्रोजेक्ट, सभी प्रोजेक्ट्स और Deleted के बीच बदलता है — Deleted वे सेशन हैं जिन्हें उनके एजेंट ने मिटा दिया पर deja के पास अब भी हैं; `R` किसी एक को वापस रख देता है। - `?` सारी कुंजियाँ दिखाता है, `^k` में बाकी है (सेशन id या प्रोजेक्ट पाथ कॉपी करना, सेशन भूल जाना), सूची में `q` बाहर निकलता है; `esc` एक कदम पीछे जाता है और खाली सर्च बॉक्स से बाहर निकलता है। `DEJA_TUI=0` के साथ यह स्क्रीन की जगह सादा टेक्स्ट सारांश छापता है, जो `deja brief` भी देता है। पाइप में यह छापता है कि क्या इंडेक्स हुआ है और आगे कौन-सी कमांड चलानी है। ## इससे क्या मिलता है **Codex में हल हुआ, Claude को याद है।** इकतालीस कोडिंग एजेंट हर बातचीत को लोकल फ़ाइलों में लिखते हैं, और deja उन फ़ाइलों को एक ऐसी मेमोरी परत में बदल देता है जिसे वे सब पढ़ सकते हैं। | | | | --- | --- | | **पीछे की तरफ़ खोज** | `deja "connection pool exhausted"` गीगाबाइट खंगालता है, deja इंस्टॉल करने से पहले का सब कुछ भी। स्वाभाविक भाषा का सवाल प्रासंगिकता वाले मोड पर चला जाता है। समय एक संकेत है, फ़िल्टर नहीं। | | **एजेंट्स के आर-पार रिकॉल** | MCP का `deja` टूल `recall` मोड में किसी भी एजेंट के भीतर से जवाब देता है कि «यह हमने तीन हफ़्ते पहले ठीक किया था», चाहे तब किसी ने भी किया हो। | | **कॉम्पैक्शन के बाद भी बचा रहता है** | 43 कॉन्टेक्स्ट कॉम्पैक्शन पर मापा गया: सारांश ने 77% निर्णय और आपके चलाए हुए कमांड्स का 0.2% बचाया। बाकी 99.8% deja लौटाता है। Claude Code और Codex में deja कॉम्पैक्शन शुरू होते ही काम, फ़ाइलें और कमांड्स दर्ज कर लेता है और कॉम्पैक्शन के बाद एक बार लौटा देता है। | | **काम करने के ठीक उसी क्षण रिकॉल** | एजेंट किसी फ़ाइल को बदलने या कमांड चलाने से पहले, `PreToolUse` हुक बताता है कि इस फ़ाइल को लेकर पहले क्या तय हुआ था, इस कमांड का वह रूप कौन-सा है जो यहाँ चलता है, या यह कि वह प्रोग्राम इस मशीन पर है ही नहीं। कमांड फ़ेल होने पर `PostToolUse` हुक दिखाता है कि इसी मशीन पर उसी एरर के बाद क्या चलाया गया था — ठीक वही जोड़ी जो एजेंट खुद नहीं पूछेगा। | | **बातों को नहीं, काम को इंडेक्स करता है** | हर टर्न में खोली गई हर फ़ाइल, चलाया गया हर कमांड और उसका exit code, और वह सटीक हिस्सा जिसे किसी एडिट ने बदला। हर सारांश यही खोता है। | इसके अलावा: `deja promote --state rejected` पलटे हुए निर्णय पर निशान लगाता है, और उसके बाद हर नतीजा दिखाता है कि वह आज़माया और ख़ारिज किया गया था; नतीजा बताता है कि «इस सेशन की 4 फ़ाइलें तब से बदल चुकी हैं» और जब तय न कर सके तो चुप रहता है; `deja sync ssh laptop` मेमोरी को मशीनों के बीच सिर्फ़ जोड़ते हुए ले जाता है, बीच में कोई क्लाउड नहीं; `deja handoff --to codex` मौजूदा कॉन्टेक्स्ट को बाँध देता है ताकि किसी दूसरे एजेंट में काम आगे बढ़े; जानी-पहचानी शक्ल वाली कुंजियाँ, टोकन, JWT और प्राइवेट की ब्लॉक इंडेक्सिंग के समय हटा दिए जाते हैं — हालाँकि पैटर्न मिलाना सीक्रेट पहचानना नहीं है, और कोई अनजानी शक्ल निकल सकती है। ### अपना काम खुद बनाइए `deja stats --card` सीधे टर्मिनल में बनाता है; फ़ाइल का नाम दीजिए तो आपकी प्रोफ़ाइल README के लिए SVG लिख देता है। कहीं और प्रकाशित करने के लिए [उसे PNG में बदलिए](https://vshulcz.github.io/deja-vu/card/) — वह पेज आपके अपने ब्राउज़र में ही बदलता है।

deja स्टैट्स कार्ड: एक साल के सेशन हीटमैप में, वे किन एजेंट्स से आए, और सबसे लंबा कौन-सा था

पूरा रेफ़रेंस [दस्तावेज़ साइट](https://vshulcz.github.io/deja-vu/) पर है। ## निजता इंडेक्सिंग और खोज लोकल हैं। नेटवर्क सिर्फ़ `deja update`, `deja sync ssh`, `deja doctor` के भीतर वर्शन जाँच, `deja embed` (जो आपके तय किए एंडपॉइंट पर जाता है; सिमेंटिक साइडकार बन जाने के बाद हर खोज भी, जो क्वेरी उसी एंडपॉइंट पर भेजती है), और किसी इंटरैक्टिव कमांड से दिन में एक बार नवीनतम रिलीज़ की जाँच इस्तेमाल करते हैं। वह जाँच कोई सेशन डेटा नहीं भेजती; `DEJA_OFFLINE=1` या `DEJA_NO_UPDATE_NOTICE=1` उसे बंद कर देता है। क्रेडेंशियल इंडेक्सिंग के समय हटा दिए जाते हैं: AWS कुंजियाँ, `api_key=` और `token=` असाइनमेंट, bearer टोकन और नंगे JWT, PEM प्राइवेट की ब्लॉक, अलग-अलग प्रदाताओं के टोकन, `scheme://user:pass@host` रूप वाले URL, ऐसे हाई-एन्ट्रॉपी मान जिन पर कोई नियम नहीं बैठता, और गद्य में लिखे पासवर्ड — «the admin password is …», जहाँ पकड़ने के लिए कोई विभाजक ही नहीं होता। मान `[redacted:]` बन जाता है और आस-पास का पाठ खोजने योग्य बना रहता है। `deja share` और `deja sync export` निर्यात के समय एक बार और साफ़ करते हैं। पैटर्न मिलाना सीक्रेट पहचानना नहीं है: जिस शक्ल को नियम नहीं जानते वह ज्यों-की-त्यों निकल सकती है — सुरक्षा मॉडल देखिए। `deja forget` सेशन्स को दोबारा बने इंडेक्स से हटा देता है और एक समाधि-चिह्न छोड़ता है, ताकि अगला `deja index` उन्हें मूल इतिहास से वापस न ला सके। [सुरक्षा मॉडल](../../docs/SECURITY-MODEL.md) में डेटा प्रवाह, सफ़ाई की सीमाएँ, भरोसे की धारणाएँ और रिलीज़ सत्यापन दर्ज हैं। ## कमांड लाइन टर्मिनल में अकेला `deja` ऊपर बताई गई खोज स्क्रीन खोलता है। क्वेरी के साथ, या नीचे की किसी भी कमांड के साथ, यह नतीजा छापकर बाहर निकल जाता है: ```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 ``` | कमांड | क्या करता है | | --- | --- | | `deja <क्वेरी>` | पूरे इतिहास में खोजता है। कई शब्द AND हैं, उद्धरण चिह्न लगातार पाठ माँगते हैं; सटीक मिलान न होने पर शब्द-रूप और मिलती-जुलती वर्तनी आज़माता है। | | `deja` | टर्मिनल में, ऊपर वाली फ़ुल-स्क्रीन खोज। `deja brief` उसकी जगह टेक्स्ट सारांश छापता है: आज के सेशन, deja ने क्या दिया, हाल का काम और आज़माने लायक एक खोज। | | `deja wip` | इस डायरेक्टरी में पिछला सेशन क्या कर रहा था: काम, क्या तय हुआ, हाथ में कौन-सी फ़ाइलें थीं, आख़िरी कमांड और वह फ़ेल हुआ या नहीं। सब रिकॉर्ड से निकाला गया, किसी के नोट्स पर निर्भर नहीं। | | `deja blame <पथ>[:पंक्ति]` | किन सेशन्स ने इस फ़ाइल पर बात की, क्या तय हुआ और क्यों। पंक्ति संख्या देने पर: वह commit जिसने उसे आख़िरी बार बदला, और वह सेशन जिसने वह पंक्ति लिखी, या वह पाठ जिसे उस commit ने बदला। | | `deja files <विषय>` | उलटी दिशा: किसी विषय पर हुए काम ने असल में किन फ़ाइलों को छुआ। | | `deja how <टूल>` | इस मशीन पर यह असल में कैसे चलाया जाता है, असली आर्ग्युमेंट्स के साथ, उन कमांड्स से जो एजेंट पहले चला चुके हैं। | | `deja fix <एरर>` | इस मशीन पर उसी एरर के बाद क्या चलाया गया, और जिसके बाद एरर दोबारा नहीं आया। कभी merge, force push या डिलीट नहीं। | | `deja friction` | वे एरर जो तीन या उससे ज़्यादा अलग सेशन्स में मिलते हैं, और वे किन टूल्स से आए। | | `deja ctx <क्वेरी>` | सबसे अच्छे नतीजे का Markdown सारांश, उसके बदले हुए कोड के साथ, सीधे प्रॉम्प्ट में डालने लायक। | | `deja resume ` | मिले हुए सेशन को उसी टूल में दोबारा खोलता है जिसका वह है। | | `deja view` | पूरी मेमोरी को एक लोकल HTML फ़ाइल में निर्यात करता है। कोई सर्वर नहीं, कुछ भी मशीन से बाहर नहीं जाता। | | `deja doctor [--deep]` | स्व-जाँच; `--deep` के साथ इंडेक्स को स्रोत फ़ाइलों से मिलाकर सत्यापित करता है। | | `deja mcp` | stdio पर MCP सर्वर — वही जिसे `deja install` जोड़ता है। | पूरा रेफ़रेंस [कमांड दस्तावेज़](https://vshulcz.github.io/deja-vu/guide/commands.html) में है। ### MCP टूल्स सर्वर सिर्फ़ एक टूल `deja` देता है, और `mode` पैरामीटर क्षमता चुनता है: `recall`, `context`, `blame`, `fix`, `how`, `orient`, `remember`, `handoff`। `deja install` इसे खुद जोड़ देता है, इसलिए यह सिर्फ़ तब मायने रखता है जब आप किसी एजेंट को हाथ से कॉन्फ़िगर करें। पुराने छह टूल नाम पहले से जुड़े क्लाइंट्स में चलते रहते हैं। सात के बजाय एक टूल होना लागत का मामला है, शैली का नहीं। जुड़ा हुआ MCP सर्वर अपने टूल्स की परिभाषाएँ हर अनुरोध के साथ भेजता है, इसलिए एजेंट ने कुछ बुलाया हो या नहीं, हर टर्न में उनका दाम चुकाया जाता है: यहाँ 477 टोकन, जबकि मापे गए सात सर्वरों में सबसे बड़े का 8,283। deja का अपना आँकड़ा भी 828 था, जब तक स्कीमा को मोड वाले एक टूल तक नहीं घटाया गया। ## समर्थित टूल्स ऑटोमैटिक रिकॉल चालू हो तो Claude Code और Codex कॉम्पैक्शन शुरू होते ही मौजूदा रिकॉर्ड deja को सौंप देते हैं, और deja वह रख लेता है जो सारांश अभी खोने वाला है: काम, नतीजे, फ़ाइलें, हर कमांड का अंजाम, और क्या बाक़ी रह गया। उसी सेशन और उसी वर्किंग डायरेक्टरी का अगला हुक इसे एक साथ लौटाता है, 4 KB से ज़्यादा नहीं, और एक पंक्ति में बताता है कि रिपॉज़िटरी तब से बदली या नहीं। `deja stats` कॉम्पैक्शन और पहली एडिट के बीच टूल कॉल्स गिनता है — इसी से यह मापा गया था। विवरण [कॉम्पैक्शन के बाद रिकवरी](../../docs/compaction.md) में है। 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. इनमें से हर एक क्या समर्थन करता है — MCP रिकॉल, ऑटोमैटिक रिकॉल, skills, कमांड, resume, handoff — यह [अंग्रेज़ी README की क्षमता तालिका](../../README.md#supported-harnesses) में है। अलग स्टोरेज जगहें `DEJA_*_ROOT` वेरिएबल्स से बताई जाती हैं, और टूल्स के अपने माइग्रेशन वेरिएबल्स का भी सम्मान किया जाता है। ### अपना पैकेज रखने वाले एजेंट `deja install --auto` इन्हें भी बाकियों की तरह जोड़ता है, और वही हमेशा सबसे छोटा रास्ता है। साथ ही हर एक का अपने इकोसिस्टम में एक पैकेज है, उन लोगों के लिए जो एक्सटेंशन वहीं से लगाते हैं: | एजेंट | पैकेज | इंस्टॉल | | --- | --- | --- | | 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 | प्लगइन `deja` | `/plugins install https://github.com/vshulcz/deja-vu` | | Codex CLI | प्लगइन `deja-vu` | `codex plugin marketplace add https://github.com/vshulcz/deja-vu`, फिर `codex plugin add deja-vu@deja-vu` | | Grok Build | प्लगइन `deja` | `grok plugin marketplace add vshulcz/deja-vu`, फिर `grok plugin install deja` | | OpenClaw | ClawHub और npm `@vshulcz/openclaw-deja` | `openclaw plugins install clawhub:@vshulcz/openclaw-deja` | | pi (और omp) | npm `@vshulcz/pi-deja` | `pi install npm:@vshulcz/pi-deja` | | Hermes | Hermes प्लगइन कैटलॉग में मेमोरी प्रोवाइडर `deja-memory` | `hermes plugins install deja-memory`, या GitHub से: `hermes plugins install vshulcz/deja-vu/extensions/hermes` | दोनों में से कोई एक रास्ता काफ़ी है और दोनों साथ में भी कुछ नहीं तोड़ते: हर पैकेज पहले वही पढ़ता है जो `deja install` ने लिखा। opencode, dsh और OpenClaw सिर्फ़ छूटा हुआ भरते हैं; Kimi, Grok, Codex और pi हट जाते हैं अगर इंस्टॉलर पहले ही जोड़ चुका है; Zed में दोनों तरफ़ एक ही server id इस्तेमाल होता है। इसलिए इंस्टॉल का क्रम मायने नहीं रखता। ये सब वही deja इस्तेमाल करते हैं जो आपने पहले से इंस्टॉल किया है; पैकेज के भीतर की प्रति सिर्फ़ बैकअप है। ## वैकल्पिक सिमैंटिक रिकॉल `DEJA_EMBED_URL` से `deja embed` को लोकल Ollama, LM Studio या किसी भी OpenAI-संगत एंडपॉइंट पर मोड़िए, और दूसरे शब्दों में पूछा गया सवाल भी लग जाएगा। कोई रनटाइम उपलब्ध न हो तो शाब्दिक खोज और MCP रिकॉल हमेशा की तरह काम करते हैं। ## प्रमाण

उसी काम पर जो यह मशीन पहले हल कर चुकी थी, 58% कम टोकन · LongMemEval-S (470 सवालों का साफ़ किया सेट) पर 88.9% hit@1 · LoCoMo पर 71.9% · गीगाबाइट इतिहास पर मिलीसेकंड में क्वेरी
हर भुजा पर ग्यारह रन: कुछ भी जुड़ा न होने पर 126,222 के मुक़ाबले 53,558 टोकन; बाद के बिल्ड पर फिर ग्यारह रन: 103,443 के मुक़ाबले 52,815 · एक काम पूरा करने की लागत · दोनों रिट्रीवल हार्नेस इसी रिपॉज़िटरी में हैं और सार्वजनिक डेटासेट पर मिनटों में चलते हैं · आँकड़े खुद जाँचिए

```sh deja bench recall # रैंकिंग रिग्रेशन की निचली सीमा: 100 क्वेरी, आधी रूसी में, रिकॉल गिरे तो CI फ़ेल deja bench context # बीज सहित 30 टास्क चेन और पाँच नकारात्मक नियंत्रण deja bench block # सौंपे गए पाठ-खंड में जवाब अब भी है या नहीं deja bench prompt # प्रति-प्रॉम्प्ट हुक कब बोलता है और कब ग़लत बोलता है deja bench ingest # एक इंडेक्स अपडेट की लागत: कोई बदलाव नहीं, एक टर्न जुड़ा, एक नई रिकॉर्ड फ़ाइल, पूरी फ़ाइल दोबारा लिखी गई deja bench read # डेटाबेस वाले स्टोर को पढ़ने की लागत, और एक लंबी वैल्यू उस पर क्या असर डालती है ``` कॉन्टेक्स्ट प्रयोग deja के रिकॉल की तुलना पूरे इतिहास, सीधे grep और कोल्ड स्टार्ट से करता है। डिफ़ॉल्ट बीज पर: | तरीक़ा | टोकन (माध्यिका) | कवरेज (माध्यिका) | नकारात्मक नियंत्रण के टोकन | | --- | ---: | ---: | ---: | | deja-recall | 1,096 | 1.00 | 0 | | full-history | 80,547 | 1.00 | 78,145 | | naive-grep | 273,238 | 1.00 | 0 | | cold | 0 | 0.00 | 0 | कच्चे लॉग पर grep करने जितनी ही तथ्य-कवरेज, लगभग 250 गुना कम टोकन में; पूरा दोहराकर मिले सेशन्स से करीब 70 गुना कम; और जिन चेन में प्रासंगिक इतिहास नहीं, उनमें कुछ भी नहीं डाला जाता। कॉर्पस जेनरेटर और प्रासंगिकता लेबलिंग सामान्य, पढ़ने लायक Go कोड हैं। किसी भी आँकड़े पर भरोसा करने से पहले देखिए कि वहाँ «प्रासंगिक» की परिभाषा क्या है — हमारे आँकड़ों समेत। एक असली स्टोर पर मापा गया: 2,419 सेशन, 179k संदेश, 1.9 GB रिकॉर्ड। | माप | नतीजा | | --- | --- | | प्रोसेस के भीतर क्वेरी | माध्यिका **0.7–0.8 ms**, LongMemEval-S के हेस्टैक पर करीब 15 ms | | पूरा `deja <क्वेरी>` | उस स्टोर पर माध्यिका करीब 0.2 s: प्रोसेस शुरू, सारे स्टोर की ताज़गी जाँच, रैंकिंग, आउटपुट | | सिर्फ़ ताज़गी जाँच | कुछ न बदला हो तो करीब 50 ms | | इंडेक्स का आकार | 200 MB, कॉर्पस का करीब 10% | इंडेक्स इन्क्रीमेंटल है। सेशन फ़ाइल लंबी होने पर सिर्फ़ वही एक फ़ाइल दोबारा पढ़ी जाती है। ## यह कैसे काम करता है `~/.cache/deja` में एक लोकल इनवर्टेड इंडेक्स: JSONL और SQLite स्टोर पार्स करता है, क्रेडेंशियल साफ़ करता है, `records.bin` और शब्द-बकेट लिखता है, और हर फ़ाइल की स्थिति `manifest.gob` में रखता है — इसलिए दोबारा चलाने पर सिर्फ़ बदला हुआ हिस्सा लिया जाता है। MCP सर्वर, स्टैट्स, share और sync सब यही इंडेक्स पढ़ते हैं। विवरण [docs/ARCHITECTURE.md](../../docs/ARCHITECTURE.md) में है। ## अक्सर पूछे जाने वाले सवाल
दूसरे मेमोरी टूल्स से यह कैसे अलग है? | | deja | मेमोरी प्लेटफ़ॉर्म
(Mem0, Letta, memU) | सेशन खोज
(cass) | | --- | :-: | :-: | :-: | | इंस्टॉल से पहले के काम को जानता है | हाँ | नहीं | हाँ | | कैप्चर स्टेप चाहिए | नहीं, ट्रांसक्रिप्ट ही मेमोरी है | एजेंट या आपका कोड तथ्य लिखता है | नहीं | | LLM या एम्बेडिंग कुंजी चाहिए | नहीं | हाँ | वैकल्पिक | | बिना पूछे याद दिलाता है | सेशन शुरू होने पर, और टूल चलने से पहले | नहीं | नहीं | [पूरी तुलना](https://vshulcz.github.io/deja-vu/guide/compare.html) इनमें से पंद्रह को कवर करती है।
क्या इससे मेरा एजेंट धीमा होगा? एक रिकॉल लोकल इंडेक्स पर शाब्दिक क्वेरी है: माध्यिका 0.7–0.8 ms, और कुछ भी मॉडल का इंतज़ार नहीं करता। हुक प्रोसेस शुरू होने और स्टोर की ताज़गी जाँच जोड़ता है — 19k सेशन के इंडेक्स पर हर प्रॉम्प्ट वाला हुक माध्यिका में 107 ms लेता है।
Claude Code का सेशन इतिहास कहाँ है और क्या उसे खोजा जा सकता है? `~/.claude/projects` के नीचे, हर सेशन की एक JSONL फ़ाइल; Codex `~/.codex/sessions` में, Cursor SQLite `state.vscdb` में। deja उन्हें वहीं पढ़ता है: अकेला `deja` उन्हें खोजने और पढ़ने की स्क्रीन खोलता है, `deja search` यही स्क्रिप्ट से करता है, `deja last` सभी एजेंट्स के हाल के सेशन दिखाता है, और `deja view` पूरे इतिहास को एक लोकल पेज के रूप में खोलता है। हर एजेंट के पथ [सेशन कहाँ रखे जाते हैं](https://vshulcz.github.io/deja-vu/guide/where-sessions-are-stored.html) में हैं।
मेरा Claude Code इतिहास ग़ायब हो गया, क्या वह चला गया? Claude Code 30 दिन से पुराने रिकॉर्ड हटा देता है (`~/.claude/settings.json` में `cleanupPeriodDays`), और `claude --resume` सिर्फ़ बचा हुआ दिखाता है। सफ़ाई से पहले deja ने जो सेशन इंडेक्स किए, वे फ़ाइल के ग़ायब होने के बाद भी खोजे जा सकते हैं। विवरण [डिस्क पर सेशन फ़ाइलें](https://vshulcz.github.io/deja-vu/guide/session-files-on-disk.html) में है।
सब कुछ कैसे मिटाऊँ? ```sh deja uninstall --all rm -rf ~/.cache/deja ~/.local/share/deja ~/.config/deja ``` इंडेक्स `~/.cache/deja` में है, आपके `remember` और `promote` नोट्स `~/.local/share/deja` में, और नियम, बाहर रखने की सूची और हुक लॉन्चर `~/.config/deja` में (या `XDG_DATA_HOME` और `XDG_CONFIG_HOME` सेट हों तो उनके नीचे; Windows पर नोट्स `%AppData%\deja` में हैं)।
## गाइड फ़ीचर के हिसाब से नहीं, स्थिति के हिसाब से लिखे गए: - [क्या कोडिंग एजेंट पिछली बातचीत याद रखता है?](https://vshulcz.github.io/deja-vu/guide/does-my-agent-remember.html) — हर एजेंट सेशन्स के बीच क्या छोड़ता है और क्या खोता है - [डिस्क पर सेशन फ़ाइलें](https://vshulcz.github.io/deja-vu/guide/session-files-on-disk.html) — `~/.claude/projects` कितना बड़ा होता है और मिटाने की क़ीमत क्या है - [एजेंट ने अभी आपका कॉन्टेक्स्ट खो दिया](https://vshulcz.github.io/deja-vu/guide/lost-context.html) — क्रैश के बाद, clear के बाद, या जब सेशन खाली लौटे - [कॉन्टेक्स्ट विंडो भर गई](https://vshulcz.github.io/deja-vu/guide/context-window-full.html) — कॉम्पैक्शन असल में क्या बचाता है, मापों सहित, और उसकी जगह क्या किया जा सकता है - [कल का सेशन आगे बढ़ाइए](https://vshulcz.github.io/deja-vu/guide/resume-a-session.html) — सारे एजेंट्स में उसे ढूँढिए और उसी में खोलिए जिसका वह है - [एजेंट ने वही ग़लती दोहराई जो आप ठीक कर चुके थे](https://vshulcz.github.io/deja-vu/guide/repeated-mistakes.html) - [वह सेशन ढूँढिए जहाँ यह हल हुआ था](https://vshulcz.github.io/deja-vu/guide/find-a-session.html) - [एजेंट सेशन्स के बीच क्यों भूलते हैं](https://vshulcz.github.io/deja-vu/guide/forgetting.html) · [हर एजेंट इतिहास कहाँ रखता है](https://vshulcz.github.io/deja-vu/guide/where-sessions-are-stored.html) - [कॉम्पैक्शन क्या खोता है](https://vshulcz.github.io/deja-vu/guide/after-compaction.html) · [एजेंट बदलना](https://vshulcz.github.io/deja-vu/guide/switching-agents.html) · [एजेंट्स ने क्या किया इसका ऑडिट](https://vshulcz.github.io/deja-vu/guide/auditing-agents.html) · [बातचीत निर्यात करना](https://vshulcz.github.io/deja-vu/guide/export-conversations.html) · [मशीनों के बीच](https://vshulcz.github.io/deja-vu/guide/sync-across-machines.html) · [मेमोरी की टोकन लागत](https://vshulcz.github.io/deja-vu/guide/token-cost.html) टूल के हिसाब से: [opencode](https://vshulcz.github.io/deja-vu/guide/memory-for-opencode.html) · [Zed](https://vshulcz.github.io/deja-vu/guide/memory-for-zed.html) · [Grok Build](https://vshulcz.github.io/deja-vu/guide/memory-for-grok.html) · [Gemini CLI](https://vshulcz.github.io/deja-vu/guide/memory-for-gemini.html) · [OpenClaw](https://vshulcz.github.io/deja-vu/guide/memory-for-openclaw.html) · [Goose](https://vshulcz.github.io/deja-vu/guide/memory-for-goose.html) · [Cline](https://vshulcz.github.io/deja-vu/guide/memory-for-cline.html) · [pi और omp](https://vshulcz.github.io/deja-vu/guide/memory-for-pi.html) · [Hermes](https://vshulcz.github.io/deja-vu/guide/memory-for-hermes.html) ## विकास `make build test lint`, फिर [CONTRIBUTING.md](../../CONTRIBUTING.md)। नया टूल [पार्सर रजिस्ट्री](../../docs/ARCHITECTURE.md#source-parsers) से शुरू होता है। प्राथमिकताएँ और जो हम नहीं करेंगे, वह [ROADMAP.md](../../ROADMAP.md) में है। ## लाइसेंस MIT © [Vladislav Shulcz](https://github.com/vshulcz) ⭐ [Star deja-vu on GitHub](https://github.com/vshulcz/deja-vu)