كيفية استئناف جلسة Claude Code والعثور على سجلها
تعرّف إلى استئناف جلسة Claude Code باسمها أو من قائمة الاختيار، ومكان حفظ النصوص العادية للمحادثات على الجهاز الذي شغّل الوكيل.
كيفية استئناف جلسة Claude Code
لاستئناف جلسة Claude Code، شغّل claude --continue للمحادثة الأحدث في الدليل الحالي، أو claude --resume لاختيار جلسة أقدم من قائمة. ومن داخل جلسة قيد التشغيل، ينقلك الأمر /resume إلى محادثة أخرى من دون إنهاء الجلسة. والاختصارات هي -c و-r.
claude --continue
claude --resume
claude --resume auth-refactorإذا كنت تعرف اسم الجلسة أو معرّفها، فمرّره كوسيطة، وسينتقل Claude Code مباشرةً إليها من دون عرض قائمة الاختيار.
يتوافق كل ما يلي مع التوثيق الرسمي للجلسات حتى August 2026. تصدر Claude Code إصدارات جديدة باستمرار، وتتغير أسماء الخيارات واختصارات لوحة المفاتيح بين الإصدارات، لذلك اعتبر claude --help وتلك الصفحة المرجع المعتمد إذا لم يطابق ما يرد هنا ما يعرضه الطرفية لديك.
ما هي الجلسة فعلياً
الجلسة هي محادثة محفوظة واحدة مرتبطة بدليل مشروع. وهي تتضمن سجل الرسائل بالكامل، بما في ذلك استدعاءات الأدوات التي نفّذها Claude والنتائج التي أعادتها تلك الاستدعاءات. يكتب Claude Code هذه البيانات على القرص باستمرار أثناء عملك، وليس مرة واحدة في النهاية، لذلك تستمر المحادثة بعد إغلاق الطرفية أو انقطاع اتصال SSH.
تستعيد عملية المتابعة أكثر من النص. يعود سجل المحادثة بالكامل، إلى جانب النموذج الذي كانت الجلسة تستخدمه والوكيل الفرعي الذي بدأت به إذا استخدمت --agent. ويُستعاد وضع الأذونات أيضاً، مع وجود استثناءات لأسباب أمنية: لا تتم استعادة وضع التخطيط ولا وضع تجاوز الأذونات مطلقاً، لذلك تُستأنف الجلسة التي كانت في أحدهما بالوضع الذي تبدأ به جلسة جديدة.
لا تعود بعض العناصر لأنها كانت خيارات عند التشغيل وليست حالة محفوظة. يجب تمرير الأدلة المضافة باستخدام --add-dir، والخيارات مثل --mcp-config و--settings و--plugin-dir، مرة أخرى عند استئناف الجلسة. وتُعاد قراءة ملفات الإعداد مثل settings.json عند التشغيل، لذلك لا تحتاج الإعدادات الموجودة فيها إلى تمريرها مجدداً.
لماذا تزداد أهمية سجل الجلسات على VPS
إليك حقيقة تفاجئ كثيراً من المستخدمين. يُكتب السجل النصي على الجهاز الذي شُغِّل عليه الوكيل. ولا يُحفظ في حسابك ولا تتم مزامنته مع السحابة. بل هو ملف على قرص ذلك الجهاز.
لذلك، لا تظهر الجلسة التي تركتها داخل نافذة tmux على VPS في قائمة الاختيار على حاسوبك المحمول، كما لا تظهر جلسة حاسوبك المحمول على VPS. لا تنتقل أي بيانات بين الجهازين. إذا كنت تعمل بالطريقة التي يتبعها معظم المستخدمين عند تشغيل Claude Code في tmux على VPS، فإن الخادم هو المكان الذي يتراكم فيه سجل محادثاتك الفعلي، بينما تعرض قائمة الاختيار التي تراها محلياً مجموعة مختلفة وأصغر بكثير.
وينطبق الفصل نفسه على الواجهات المختلفة. يحتفظ تطبيق سطح المكتب وامتداد VS Code كلٌّ منهما بسجل جلساته الخاص، ولا يكون أيٌّ منهما سجل CLI. كما يحتفظ Claude Code على الويب بسجل مستقل أيضاً.
داخل الجهاز نفسه، يكون البحث أوسع مما قد تتوقع. يبحث claude --resume <session-id> أولاً في دليل المشروع الحالي وفي أشجار عمل git الخاصة به، ثم في كل مشروع آخر على ذلك الجهاز. العبارة التي يجب تذكرها هي «على ذلك الجهاز». إذا كان معرّف الجلسة من مضيف آخر، فلن يُعثر عليه، ويُبلغك Claude Code بذلك باستخدام No conversation found with session ID: <session-id>.
أين يخزّن Claude Code سجل الجلسات
بشكل افتراضي، تُخزَّن النصوص ضمن دليل إعداد Claude Code، في مسار من الشكل ~/.claude/projects/<project>/<session-id>.jsonl.
يمثّل <project> مسار دليل العمل بعد استبدال كل محرف غير أبجدي رقمي بشرطة، ولذلك تُخزَّن جلسة بدأت في /home/deploy/apps/api ضمن دليل اسمه -home-deploy-apps-api. إذا تجاوز الاسم الناتج 200 محرف، يقتصر Claude Code على هذا الحد ويضيف تجزئة للمسار الكامل، بحيث يبقى اسم الدليل ضمن حدود نظام الملفات.
الملف بتنسيق JSONL: كائن JSON واحد في كل سطر، ويمثل كل سطر رسالة أو استخداماً لأداة أو إدخالاً للبيانات الوصفية. وهو نص مقروء، ولا توجد مشكلة في قراءته.
لكن لا يُنصح بكتابة محلل يعتمد عليه. تنسيق الإدخالات داخلي في Claude Code ويتغير بين الإصدارات، لذلك قد يتعطل أي script يقرأ هذه الملفات مباشرة بعد أي تحديث. توصي وثائق Anthropic نفسها باستخدام /export أو واجهات script الموثقة بدلاً من ذلك، وهذا مناسب تحديداً لهذا السبب.
يغيّر إعدادان مكان التخزين ومدة الاحتفاظ. ينقل CLAUDE_CONFIG_DIR دليل الإعداد بالكامل، وهي الطريقة المناسبة لوضع النصوص في وحدة تخزين منفصلة أو مشفّرة. ويتحكم cleanupPeriodDays في settings.json في مدة الاحتفاظ بها، والقيمة الافتراضية هي 30 يوماً، والحد الأدنى هو 1.
ما الذي يوجد فعلياً داخل ملفات نصوص الجلسات
يُسجَّل ناتج كل أداة، وهذا يعني أن نص الجلسة يحتوي على محتويات الملفات التي قرأها Claude وناتج الأوامر التي شغّلها Claude. توضّح صفحة استخدام البيانات لدى Anthropic ذلك صراحةً: يخزّن Claude Code نصوص الجلسات محلياً بنص عادي ضمن ~/.claude/projects/.
فكّر في معنى ذلك على خادم. إذا قرأ Claude ملف .env لمعرفة سبب عدم بدء خدمة، فإن محتويات ذلك الملف موجودة الآن في ملف JSONL ضمن الدليل الرئيسي لحسابك. وإذا طبع أحد الأوامر سلسلة اتصال، فستكون موجودة فيه أيضاً. لم تتسرّب أي بيانات. لقد سجّل نص الجلسة ما حدث، وهذا هو الغرض منه، ولذلك تحديداً يجب أن تضعه ضمن نموذج التهديد لديك.
- النسخ الاحتياطية: ينسخ النسخ الاحتياطي العادي لـ
/homeأو/rootنصوص جلساتك إلى الوجهة التي تُحفظ فيها النسخ الاحتياطية. أضف استثناءً، أو تقبّل أن نسخاً من مطالباتك ومحتويات ملفاتك أصبحت موجودة الآن في مخزن النسخ الاحتياطية. - اللقطات والصور: تحتوي لقطة VPS تُنشأ لأي سبب على الدليل بأكمله. وينطبق الأمر نفسه على صورة تستنسخها لإنشاء خادم ثانٍ منها.
- الحسابات الأخرى على الخادم: تحقّق من أوضاع الصلاحيات بنفسك باستخدام
ls -ld ~/.claude ~/.claude/projectsبدلاً من افتراض أنها مقيّدة بإحكام. - التحميلات المتعمدة: يرسل الأمر
/feedbackسجل المحادثة إلى Anthropic عن قصد، ويُرسل/bugو/shareالتقارير عبر المسار نفسه. هذه إجراءات تختار تنفيذها، لذا اعرف ما الذي توافق عليه قبل التأكيد.
إذا كنت تفضّل عدم إنشاء أي نص جلسة، فإن CLAUDE_CODE_SKIP_PROMPT_HISTORY يمنع كتابة نصوص الجلسات، بينما يمنع --no-session-persistence كتابتها أثناء تشغيل claude -p غير تفاعلي واحد. افهم المقايضة بوضوح قبل ضبط أي منهما. تعتمد عملية الاستئناف على قراءة نصوص الجلسات، ولذلك يعني عدم وجود نص جلسة عدم إمكانية الاستئناف.
كيف تعثر على محادثة قديمة
افتح أداة الاختيار باستخدام claude --resume، أو باستخدام /resume من داخل جلسة قيد التشغيل. يعرض كل صف اسم الجلسة إذا عيّنته، أو عنواناً مُنشأً تلقائياً إذا لم تعيّنه، بالإضافة إلى المدة منذ آخر نشاط، وفرع git، وحجم الملف.
تدعم أداة الاختيار البحث. اضغط /، أو ابدأ الكتابة مباشرةً، لتصفية القائمة. الاختصارات المهمة هي التي توسّع نطاق البحث: يعرض Ctrl+A الجلسات من كل مشروع على هذا الجهاز، ويعرض Ctrl+W كل worktree للمستودع الحالي، بينما يقتصر Ctrl+B على فرع git الحالي. اضغط Space لمعاينة محتوى الجلسة قبل فتحها، واضغط Ctrl+R لإعادة تسمية الجلسة المحددة.
تسمية الجلسات تجعل كل ذلك أسهل بكثير. ابدأ جلسة باستخدام claude -n auth-refactor، أو شغّل /rename auth-refactor أثناء الجلسة، عند إدراكك أن المحادثة أصبحت جزءاً فعلياً من العمل. بعد ذلك، يمكنك استئناف الجلسة المُسمّاة باستخدام اسمها مباشرةً من shell.
تحصل الجلسة غير المُسمّاة على عنوان مُنشأ تلقائياً. يُكتب هذا العنوان عبر طلب في الخلفية إلى نموذج صغير وسريع يلخّص مطالبتك الأولى. يساعدك العنوان على التعرّف إلى الصف في أداة الاختيار، لكنه ليس معرّفاً لاستئناف الجلسة. يطابق claude --resume <name> الأسماء التي عيّنتها بنفسك فقط.
البحث في المحاضر للعثور على الجلسة المناسبة
أحياناً تتذكر عبارة ولا تتذكر أي شيء آخر. المحاضر نصية، لذا ابحث فيها.
grep -rl "nftables" ~/.claude/projects/يعرض ذلك مسارات المحاضر المطابقة. اسم الملف من دون الامتداد .jsonl هو معرّف الجلسة، ويقبل claude --resume <session-id> هذا المعرّف. استخدم grep لتحديد الجلسة التي تريدها، ثم استأنفها أو صدّرها لقراءة محتواها فعلياً.
هناك نقطتان مهمتان. المحتوى مُرمَّز بصيغة JSON، لذلك قد لا تطابق العبارة حرفياً إذا احتوت على علامات اقتباس أو امتدت عبر فاصل أسطر. كما أن ظهور التطابق داخل نتيجة أداة يعني أن Claude رأى ذلك النص، وليس بالضرورة أن أحداً كتبه.
قراءة محادثة وتصديرها
يعرض /export المحادثة الحالية كنص عادي، مع كتابة الرسائل ومخرجات الأدوات بصيغة مقروءة بدلاً من JSON. عند تشغيله دون وسيط، يفتح قائمة تتيح اختيار الحافظة أو ملف. وعند تحديد اسم ملف، يكتب /export handover.txt مباشرةً في ذلك المسار. هذه هي الطريقة المناسبة لنقل محادثة من خادم إلى حاسوبك المحمول أو لإرفاقها بتذكرة.
للمهام المؤتمتة، استخدم الواجهات المصممة لتكون مستقرة. تتلقى Hooks وأوامر سطر الحالة حقلاً باسم transcript_path كإدخال، ولذلك يمكن لـSessionEnd حفظ نسخة من نص المحادثة عند انتهاء الجلسة. يمكنك أيضاً طرح سؤال على جلسة محفوظة دون فتحها:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'يرسل ذلك مطالبة متابعة إلى المحادثة القديمة ويعيد JSON منظماً. وهذا أساس أفضل بكثير من تحليل تنسيق JSONL الذي قد يتغير في الإصدار التالي.
عندما يكون البدء من جديد أفضل من الاستئناف
يعيد الاستئناف سجل المحادثة بالكامل، وتحمل كل جلسة لاحقة هذا السجل بالكامل. تكون متابعة محادثة استمرت أربع ساعات أمس مكلفة اليوم، وتشرح كيفية تراكم استخدام الرموز عبر جلسة طويلة مصدر هذه التكلفة الفعلي.
يقدّم Claude Code أحياناً حلاً وسطاً. في خطة Pro أو Max، يؤدي استئناف جلسة ظلت خاملة نحو ساعة وتحتوي على أكثر من 100,000 رمز إلى فتح مربع حوار قبل رسالتك الأولى. تكون ذاكرة التخزين المؤقت للمطالبة قد انتهت صلاحيتها بحلول ذلك الوقت، لذلك يعيد الطلب التالي معالجة السجل الكامل مرة واحدة، بصرف النظر عن الخيار الذي تحدده.
- يؤدي Resume from summary إلى تنفيذ عملية ضغط فوراً، لذلك تحمل الطلبات اللاحقة ملخصاً بدلاً من السجل الكامل. تكون تكلفة كل طلب أقل، لكن ما يحذفه الملخص لن يعود متاحاً.
- يحمّل Resume full session as-is المحادثة دون تغيير، ويحافظ على كل التفاصيل مقابل تكلفة لكل طلب تزداد مع حجم المحادثة.
يوجد خيار ثالث يستأنف الجلسة كاملة ويمنع ظهور مربع الحوار عند عمليات الاستئناف اللاحقة.
القرار أبسط مما يبدو. استأنف الجلسة عندما يعتمد الشيء التالي الذي ستكتبه على ما قيل سابقاً. ابدأ جلسة جديدة عندما لا يعتمد عليه. يسهل اكتشاف انحراف السياق عندما تراقبه: قد يشير Claude إلى ملف حذفته قبل ساعة، أو يعيد مناقشة قرار حسمته في بداية الجلسة. هذا سياق قديم، ويؤدي الاحتفاظ به إلى استهلاك الرموز وتقليل الدقة في الوقت نفسه.
إذا كان الجزء المفيد من محادثة قديمة قراراً أو حقيقة ستحتاج إليها مرة أخرى، فلا تعتمد على الاستئناف للاحتفاظ به. دوّنه في مكان يمكن لكل جلسة الوصول إليه، فهذا هو الغرض من ملفات ذاكرة Claude Code.
يجدر بك معرفة /branch هنا أيضاً. فهو ينسخ المحادثة حتى النقطة الحالية وينقلك إلى النسخة، مع إبقاء النسخة الأصلية كما هي ومتاحة في قائمة الاختيار. استخدمه لتجربة نهج ثانٍ دون فقدان النهج الأول.
الاختلاف بين الاستئناف والضغط والذاكرة
يُخلَط بينها باستمرار، لكنها تعالج مشكلات مختلفة.
يتعلق الاستئناف بإعادة محادثة إلى الحالة النشطة بعد أن خرجت منها أو أعدت التشغيل أو انتقلت إلى مهمة أخرى. أما الضغط فيتعلق بنافذة السياق داخل محادثة نشطة: يستبدل /compact ما يحتفظ به Claude بملخص، ولذلك ترسل الطلبات اللاحقة عدداً أقل من الرموز. إذا كانت مشكلتك هي امتلاء نافذة السياق، فاستخدم الضغط، ويشرح إدارة نافذة سياق Claude Code ذلك بالتفصيل.
الذاكرة مختلفة أيضاً. تحتوي ملفات CLAUDE.md والذاكرة التلقائية على تعليمات وحقائق تُحمَّل عند بدء كل جلسة، ولذلك فهي ليست محادثة تعود إليها. إنها المعلومات التي تدوّنها حتى لا تحتاج إلى العودة إلى محادثة واحدة.
إذا كنت تريد تشغيل محادثتين في الوقت نفسه وتنسيقهما، فهذه آلية منفصلة. يمكن لـClaude Code أن يرسل رسائل بين الجلسات عندما تكون كلتاهما نشطتين، وهذه مشكلة مختلفة عن استعادة جلسة الأمس من القرص.
FAQ
أين يخزّن Claude Code سجل جلساتي؟
بشكل افتراضي، يخزّنه ضمن دليل الإعدادات لديك، في ~/.claude/projects/<project>/<session-id>.jsonl، حيث يمثّل <project> مسار دليل العمل بعد استبدال الأحرف غير الأبجدية الرقمية بواصلات. كل ملف بتنسيق JSONL: كائن JSON واحد في كل سطر، لرسالة أو استخدام أداة أو إدخال بيانات وصفية. ينقل CLAUDE_CONFIG_DIR دليل الإعدادات إلى موقع آخر، ويحدّد cleanupPeriodDays في settings.json مدة الاحتفاظ بنصوص المحادثات، وتكون المدة الافتراضية 30 يوماً والحد الأدنى 1.
لماذا لا أرى جلسة VPS الخاصة بي في أداة الاختيار على الحاسوب المحمول؟
لأن نصوص المحادثات تُكتب على قرص الجهاز الذي شغّل عليه الوكيل، ولا تتم مزامنتها بين الأجهزة. فالمحادثة التي أجريتها داخل tmux على VPS توجد على VPS فقط. استأنفها هناك عبر SSH، أو شغّل /export داخلها وانسخ الملف النصي إلى جهازك إذا أردت الاحتفاظ بنسخة محلية.
هل يمكنني استئناف جلسة بدأتُها في دليل مختلف؟
نعم، إذا كان لديك معرّف الجلسة. يبحث claude --resume <session-id> أولاً في دليل المشروع الحالي ونسخ git العاملة التابعة له، ثم في كل مشروع آخر على الجهاز نفسه. داخل أداة الاختيار، يوسّع Ctrl+A القائمة لتشمل كل المشاريع على الجهاز، ويوسّع Ctrl+W القائمة لتشمل كل نسخة عمل من المستودع الحالي. إذا لم يجد أي تطابق، يعرض Claude Code الرسالة No conversation found with session ID: <session-id>.
هل ينبغي أن أستأنف جلسة قديمة أم أبدأ جلسة جديدة؟
استأنف الجلسة عندما تعتمد رسالتك التالية على ما قيل سابقاً في تلك المحادثة. ابدأ جلسة جديدة عندما لا تعتمد عليه، لأن الاستئناف يعيد تحميل السجل الكامل، ثم تحمل كل مطالبة لاحقة هذا السجل. انتبه إلى انجراف السياق: إذا واصلت الجلسة الإشارة إلى ملفات حذفتها، فهي تحمل سياقاً قديماً، وهذا السياق يستهلك الرموز ويقلل الدقة في كل دور.
هل يمكنني منع Claude Code من كتابة نصوص المحادثات على القرص؟
نعم. يمنع CLAUDE_CODE_SKIP_PROMPT_HISTORY كتابة نصوص المحادثات، ويمنع --no-session-persistence كتابتها في تشغيل واحد غير تفاعلي باستخدام claude -p. افهم المقابل أولاً، لأن الاستئناف يقرأ نصوص المحادثات، ولذلك يعني تعطيلها أن --continue و--resume لن يجدا ما يحمّلانه. إذا كان قلقك يتعلق بمكان وجود الملفات لا بوجودها أساساً، فاجعل CLAUDE_CONFIG_DIR يشير إلى وحدة تخزين مشفّرة، وخفّض cleanupPeriodDays بدلاً من ذلك.