चेकपॉइंट और रिवाइंड
- समझें कि चेकपॉइंट क्या कैप्चर करता है — और क्या चुपचाप कैप्चर नहीं करता
- रिवाइंड मेनू को दो तरीकों से खोलें और हर बार सही रिस्टोर क्रिया चुनें
- 'रिस्टोर' (स्थिति पूर्ववत करना) और 'समराइज़' (संदर्भ संपीड़ित करना) में अंतर पहचानें
- ठीक-ठीक जानें कि चेकपॉइंट Git के पूरक क्यों हैं, पर उसकी जगह कभी नहीं ले सकते
मुख्य विचार
जब आप Claude को किसी महत्वाकांक्षी, व्यापक बदलाव पर खुला छोड़ते हैं, तो सबसे डरावना सवाल होता है "अगर तीसरे संपादन तक पहुँचकर कुछ बिगड़ गया तो?" चेकपॉइंटिंग इसका जवाब है: Claude Code आपके शुरू किए हर टर्न से पहले आपके कोड का स्नैपशॉट अपने-आप ले लेता है, ताकि आप किसी भी पिछली स्थिति में वापस जा सकें, और अधूरे रिफैक्टरिंग को हाथ से सुलझाना न पड़े।
इसे पूरे सत्र के लिए एक लोकल अनडू समझें — एक सुरक्षा जाल जो आपको बिना डर के कहने देता है "हाँ, साहसी तरीक़ा आज़माओ।"
चेकपॉइंट कैसे बनते हैं
आप चेकपॉइंट नहीं बनाते — वे अपने-आप बनते हैं।
- हर वह प्रॉम्प्ट जो एक टर्न शुरू करता है, Claude के फ़ाइल-संपादन टूल चलने से पहले आपके कोड की स्थिति कैप्चर करता है। कोई कमांड नहीं, कोई कॉन्फ़िग नहीं, कोई औपचारिकता नहीं।
- Claude Code एक सत्र में सबसे हालिया 100 चेकपॉइंट के फ़ाइल स्नैपशॉट रखता है। पुराने हटा दिए जाते हैं, इसलिए बहुत लंबे सत्र को उसकी शुरुआत तक पूरी तरह रिवाइंड नहीं किया जा सकता।
- चेकपॉइंट बातचीत के साथ सहेजे जाते हैं, इसलिए सत्र फिर से शुरू करने के बाद भी आप /rewind चला सकते हैं, सिर्फ़ चालू सत्र में ही नहीं।
- किसी सत्र के फ़ाइल स्नैपशॉट रिटेंशन स्वीप में हटा दिए जाते हैं, डिफ़ॉल्ट रूप से सत्र द्वारा आख़िरी बार स्नैपशॉट सहेजने के लगभग 30 दिन बाद। जिस चेकपॉइंट के स्नैपशॉट जा चुके हैं, उस पर रिवाइंड करना 'No files were restored' के साथ विफल होता है — उन्हें ज़्यादा समय तक रखने के लिए cleanupPeriodDays बढ़ाएँ।
रिवाइंड मेनू खोलना
भीतर जाने के दो रास्ते हैं:
- प्रॉम्प्ट पर स्लैश कमांड टाइप करें। हमेशा काम करता है। /checkpoint और /undo उसी कमांड के उपनाम (alias) हैं, इसलिए जो नाम याद आए वही इस्तेमाल करें।
- जब प्रॉम्प्ट बॉक्स खाली हो, तब डबल-Esc रिवाइंड मेनू खोलता है। अगर उसमें टेक्स्ट है, तो डबल-Esc उस टेक्स्ट को साफ़ कर देता है (साफ़ किया गया टेक्स्ट इनपुट हिस्ट्री में सहेजा जाता है, इसलिए बाद में उसे वापस पाने के लिए ऊपर वाला तीर दबाएँ)।
रिवाइंड मेनू खोलें
/rewind
- उपनामों के नाम शाब्दिक अर्थ से ज़्यादा सहज हैं: /checkpoint माँगने पर स्नैपशॉट नहीं लेता (स्नैपशॉट अपने-आप बनते हैं), और /undo अपने आप आख़िरी संपादन को पूर्ववत नहीं करता। तीनों नाम एक ही मेनू खोलते हैं, जहाँ बिंदु और कार्रवाई आप ही चुनते हैं।
मेनू इस सत्र में आपके भेजे हर प्रॉम्प्ट की सूची दिखाता है। वह बिंदु चुनें जिस पर आप कार्रवाई करना चाहते हैं, फिर एक क्रिया चुनें।
रिस्टोर बनाम समराइज़: मुख्य अंतर
यहीं लोग उलझते हैं। मेनू दो तरह की क्रियाएँ देता है:
- रिस्टोर क्रियाएँ डिस्क पर और/या बातचीत में स्थिति बदलती हैं — वे पूर्ववत करती हैं।
- समराइज़ क्रियाएँ आपकी फ़ाइलों को कभी नहीं छूतीं — वे संदर्भ विंडो में जगह खाली करने के लिए बातचीत को संपीड़ित करती हैं।
- रिस्टोर = अनडू (कोड, बातचीत, या दोनों को वापस ले जाता है)। समराइज़ = संदर्भ संपीड़न (डिस्क पर फ़ाइलें अछूती रहती हैं)।
- जब किसी संपादन ने कुछ तोड़ा हो तो रिस्टोर चुनें। जब सत्र फूल गया हो पर कोड ठीक हो तो समराइज़ चुनें।
रिस्टोर क्रियाएँ
- आपकी फ़ाइलों और चैट हिस्ट्री, दोनों को चुने हुए बिंदु तक वापस ले जाता है — उस क्षण तक एक साफ़ 'समय में वापसी'।
- चैट को उस संदेश तक वापस ले जाता है पर आपका मौजूदा कोड रखता है। जो संपादन रखना चाहते हैं उन्हें खोए बिना कोई सवाल दोबारा पूछने के लिए उपयोगी।
- फ़ाइल बदलाव वापस लेता है पर बातचीत रखता है। संपादन पूर्ववत करें, उनके बारे में हुई चर्चा रखें।
दोनों कोड रिस्टोर विकल्प केवल तभी दिखते हैं जब चुने हुए चेकपॉइंट में वापस लेने लायक ट्रैक किए गए फ़ाइल बदलाव हों। अगर उस बिंदु के बाद कोई फ़ाइल संपादन कैप्चर नहीं हुआ, तो मेनू केवल बातचीत रिस्टोर करें, दोनों समराइज़ विकल्प, और Never mind (जो बिना कुछ बदले संदेश सूची पर लौटा देता है) देता है।
बातचीत रिस्टोर करने के बाद (या "यहां से समराइज़ करें" चुनने के बाद), चुने हुए संदेश का मूल प्रॉम्प्ट इनपुट फ़ील्ड में वापस डाल दिया जाता है ताकि आप उसे दोबारा भेज या संपादित कर सकें।
समराइज़ क्रियाएँ
दोनों बातचीत के एक हिस्से को AI-जनित सारांश में संपीड़ित करती हैं — एक लक्षित /compact की तरह, जहाँ आप चुनते हैं कि चुने हुए संदेश का कौन-सा पक्ष दबाना है।
- चुने हुए संदेश से पहले के संदेश अक्षुण्ण रहते हैं। चुना हुआ संदेश और उसके बाद का सब कुछ सारांश बन जाता है। किसी भटकी हुई चर्चा को हटाते हुए शुरुआती संदर्भ को पूरे विवरण के साथ रखने के लिए इसका उपयोग करें।
- चुने हुए संदेश से पहले के संदेश सारांश बन जाते हैं; चुना हुआ संदेश और उसके बाद का सब कुछ अक्षुण्ण रहता है। आप बातचीत के अंत में ही बने रहते हैं। शुरुआती तैयारी की बातचीत को संपीड़ित करते हुए हालिया काम को शब्दशः रखने के लिए इसका उपयोग करें।
दोनों ही स्थिति में मूल संदेश सत्र ट्रांसक्रिप्ट में बने रहते हैं, इसलिए Claude अब भी विवरणों का हवाला दे सकता है, और जहाँ संपीड़ित संदेश थे वहाँ एक Summarized conversation मार्कर दिखाई देता है। सारांश किस पर केंद्रित हो, यह तय करने के लिए तीर कुंजियों से किसी समराइज़ विकल्प को हाइलाइट करें और जहाँ पंक्ति में add context (optional) लिखा हो वहाँ निर्देश टाइप करें, फिर Enter दबाएँ — विकल्प को उसकी नंबर कुंजी से चुनने पर बिना किसी निर्देश के तुरंत समराइज़ हो जाता है।
पूरे प्रवाह के लिए संदर्भ प्रबंधन देखें — /rewind की समराइज़ क्रियाएँ एक नश्तर हैं, जहाँ /compact एक चौड़ा ब्रश है।
- समराइज़ आपको उसी सत्र में रखता है। मूल सत्र को जस का तस रखते हुए अलग राह पकड़कर कोई दूसरा तरीक़ा आज़माने के लिए इसके बजाय /branch या claude --continue --fork-session का उपयोग करें।
/clear के पार रिवाइंड करना
अगर आपने उसी Claude Code प्रोसेस में पहले /clear चलाया था, तो रिवाइंड मेनू में सबसे ऊपर एक अतिरिक्त प्रविष्टि दिखती है: /resume <session-id> (previous session)। /clear से पहले जो बातचीत चालू थी, उस पर वापस जाने के लिए इसे चुनें।
जहाँ चेकपॉइंट रुक जाते हैं — वे सीमाएँ जो चुभती हैं
चेकपॉइंट तब तक जादुई लगते हैं जब तक वे नहीं लगते। ये कमियाँ मायने रखती हैं:
- ट्रैकिंग फ़ाइल-दर-फ़ाइल होती है, और कोई फ़ाइल उसमें तभी आती है जब Claude उसे अपने फ़ाइल-संपादन टूल से संपादित करता है। ऐसा होने के बाद /rewind उस बाद वाले काम को भी पलट देता है जो Bash कमांड उसी फ़ाइल के साथ करते हैं — पहले से संपादित फ़ाइल को दोबारा लिखने वाला फ़ॉर्मैटर या जनरेटर भी रिवाइंड किया जा सकता है। जिस फ़ाइल को केवल Bash ने छुआ है वह ट्रैक नहीं होती और जैसी है वैसी रहती है, इसलिए rm से मिटाई गई ऐसी फ़ाइल, जिसे Claude ने कभी संपादित नहीं किया, के लिए Git चाहिए। मेनू यही दर्शाता है: हर प्रॉम्प्ट के नीचे वह उन फ़ाइलों में हुए बदलाव गिनता है जिन्हें Claude पहले संपादित कर चुका था, चाहे उन्हें किसी भी चीज़ ने किया हो।
- सबएजेंट उन्हीं फ़ाइल टूल से संपादन करता है, लेकिन आपका सेशन आमतौर पर वे संपादन कैप्चर नहीं करता। अपवाद फ़ोरग्राउंड में फ़ोर्क की गई स्किल है (context: fork के साथ background: false), जो आपके अपने टर्न के दौरान संपादन करती है और सामान्य रूप से रिवाइंड होती है। किसी भी अन्य सबएजेंट के साथ — जिसमें डिफ़ॉल्ट रूप से बैकग्राउंड में फ़ोर्क की गई स्किल और बैकग्राउंड में चल रहा /code-review --fix भी शामिल है — रिवाइंड केवल उन फ़ाइलों को बहाल करता है जिन्हें Claude आपकी बातचीत में पहले ही संपादित कर चुका था; सबएजेंट के दूसरी फ़ाइलों में किए संपादन बने रहते हैं, इसलिए उन्हें Git से पलटें। देखें /docs/claude-code/subagents।
- Claude Code के बाहर आपके हाथ से किए गए संपादन, और अन्य समवर्ती सत्रों के संपादन, सामान्यतः कैप्चर नहीं होते — जब तक कि वे संयोग से उन्हीं फ़ाइलों को न छू लें जिन्हें मौजूदा सत्र ने संपादित किया हो।
- Claude के काम करते समय आप जो संदेश कतार में लगाते हैं और जो चालू टर्न के भीतर ही उस तक पहुँच जाता है, वह नया टर्न शुरू करने के बजाय उसी टर्न में जुड़ जाता है, इसलिए उसका अपना कोई चेकपॉइंट नहीं बनता — रिवाइंड मेनू उसे 'No code restore' से चिह्नित करता है। उसके बाद जो हुआ उसे पूर्ववत करने के लिए उस प्रॉम्प्ट तक रिवाइंड करें जिसने टर्न शुरू किया था; इससे पूरा टर्न रिवाइंड होगा, जिसमें आपके संदेश के पहुँचने से पहले हुआ काम भी शामिल है। चिह्नित संदेश को ही चुनने पर भी बातचीत रिस्टोर करें का विकल्प मिलता है, और आपकी फ़ाइलें जैसी हैं वैसी ही रहती हैं।
- Claude Code रिवाइंड की गई बातचीत को आपके अगले भेजे गए प्रॉम्प्ट के साथ सेव करता है — इसलिए अगर आप प्रॉम्प्ट भेजे बिना बाहर निकल जाते हैं, तो सत्र फिर शुरू करने पर रिवाइंड किए गए संदेश वापस आ जाते हैं। रिस्टोर को टिकाऊ बनाने के लिए बाहर निकलने से पहले Claude को एक प्रॉम्प्ट भेजें; लौट आए संदेशों को बाद में फिर हटाने के लिए /rewind चलाएँ, वही प्रॉम्प्ट चुनें और Restore conversation चुनें। जो फ़ाइलें आपने रिस्टोर की थीं वे दोनों ही स्थितियों में वैसी ही रहती हैं जैसी रिवाइंड ने छोड़ी थीं, इसलिए असर सिर्फ़ बातचीत पर पड़ता है।
- रिस्टोर किसी भी ट्रैक किए गए ऐसे पाथ को छोड़ देता है जो सिमलिंक या हार्ड लिंक हो और चेतावनी देता है 'Restored the code, but skipped N files'; उन फ़ाइलों की मौजूदा सामग्री जस की तस रहती है। dotfile-मैनेजर के सिमलिंक और pnpm के हार्ड लिंक, दोनों इसमें आते हैं। रिस्टोर से पहले /debug चलाएँ ताकि छोड़े गए पाथ डीबग लॉग में नाम सहित दर्ज हो जाएँ।
- चेकपॉइंट त्वरित, लोकल रिकवरी हैं। वे कमिट नहीं हैं, ब्रांच नहीं हैं, और आपकी टीम के साथ साझा नहीं किए जा सकते।
चेकपॉइंट बनाम Git: दोनों का उपयोग करें
वे अलग-अलग समस्याएँ हल करते हैं, इसलिए दोनों को साथ रखें।
चेकपॉइंट (/rewind) | Git | |
|---|---|---|
| दायरा | एक सत्र | पूरे प्रोजेक्ट का इतिहास |
| ग्रैन्युलैरिटी | हर टर्न शुरू करने वाले प्रॉम्प्ट पर, स्वचालित | हर कमिट पर, सोच-समझकर |
| बैश से हुए बदलाव ट्रैक करता है? | केवल उन फ़ाइलों पर जिन्हें Claude पहले संपादित कर चुका है | हाँ (स्टेज/कमिट होने के बाद) |
| जीवनकाल | अंतिम 100 चेकपॉइंट, सत्र के लगभग 30 दिन बाद स्वीप | स्थायी |
| साझा करने योग्य / सहयोगी | नहीं | हाँ |
| मानसिक मॉडल | "लोकल अनडू" | "स्थायी इतिहास" |
- जोखिम भरे, व्यापक रन से पहले Git से काम करती स्थितियाँ कमिट करें — वही आपकी टिकाऊ ज़मीन है।
- कमिट के बीच अपने Git इतिहास को गंदा किए बिना सत्र के भीतर तेज़ रिकवरी के लिए /rewind का उपयोग करें।
- जिन फ़ाइलों को Claude कभी सीधे संपादित नहीं करता — यानी जिन्हें केवल विनाशकारी bash (rm/mv) या बैकग्राउंड सबएजेंट छूता है — उनके लिए Git पर भरोसा करें। रिवाइंड किसी फ़ाइल को तभी कवर करता है जब Claude उसे अपने फ़ाइल टूल से संपादित कर चुका हो।
कब इसका सहारा लें
- कोई साहसी इम्प्लीमेंटेशन आज़माएँ, और अगर पसंद न आए तो कोड और बातचीत को फ़ोर्क बिंदु तक रिस्टोर करके दूसरा रास्ता आज़माएँ।
- तीन प्रॉम्प्ट पहले किसी संपादन से बग आ गया? मलबे को डीबग करने के बजाय कोड को उससे ठीक पहले तक रिस्टोर करें।
- अलग-अलग रूप आज़माएँ, यह जानते हुए कि एक ज्ञात-सही स्थिति बस एक /rewind की दूरी पर है।
- डीबगिंग के किसी लंबे भटकाव ने आपकी संदर्भ विंडो खा ली? बीच के बिंदु से आगे तक समराइज़ करें और अपने मूल निर्देश पूरे विवरण के साथ रखें।
खुद को परखें
0/3- चेकपॉइंट हर टर्न शुरू करने वाले प्रॉम्प्ट से पहले लिए गए स्वचालित स्नैपशॉट हैं — सत्र के लिए एक लोकल अनडू। अंतिम 100 रखे जाते हैं, फिर सत्र के लगभग 30 दिन बाद स्वीप होते हैं।
- रिवाइंड मेनू /rewind (उपनाम: /checkpoint, /undo) से या खाली इनपुट पर डबल-Esc से खोलें; यह आपके भेजे हर प्रॉम्प्ट की सूची दिखाता है।
- रिस्टोर क्रियाएँ स्थिति (कोड, बातचीत, या दोनों) को पूर्ववत करती हैं; समराइज़ क्रियाएँ संदर्भ संपीड़ित करती हैं और फ़ाइलों को कभी नहीं छूतीं।
- ट्रैकिंग फ़ाइल-दर-फ़ाइल होती है और तब शुरू होती है जब Claude उसे अपने फ़ाइल टूल से संपादित करता है — उसके बाद उस फ़ाइल में Bash के बदलाव भी रिवाइंड होते हैं। जिन फ़ाइलों को Claude ने कभी संपादित नहीं किया (केवल bash, बाहरी, समवर्ती, ज़्यादातर सबएजेंट) वे ट्रैक नहीं होतीं, और सिमलिंक या हार्ड लिंक वाले पथ restore के समय छोड़ दिए जाते हैं।
- चेकपॉइंट Git के पूरक हैं, उसकी जगह नहीं लेते: सोचें 'लोकल अनडू' बनाम 'स्थायी, साझा करने योग्य इतिहास'।
आगे
- संदर्भ प्रबंधन —
/compact,/clear, और समराइज़ बड़ी तस्वीर में कहाँ बैठता है - Plan Mode — संपादन चलने से पहले जाँचें और योजना को मंज़ूर करें, ताकि आपको कम बार रिवाइंड करना पड़े
- अनुमतियाँ — महत्वाकांक्षी कार्यों को सुरक्षित रूप से चलाने का दूसरा आधा हिस्सा