SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor · آخر تحديث في 2026-09-12

كيفية استئناف جلسة 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 عند التشغيل، لذلك لا تحتاج الإعدادات الموجودة فيها إلى تكرارها. وينطبق الأمر نفسه على بيانات الاعتماد: يحدّد Claude Code طريقة المصادقة عند التشغيل من خلال تسجيل دخولك وبيئتك، بدلاً من استعادتها مع المحادثة. لذلك ستواجه جلسة مستأنفة على VPS يتضمن shell فيها متغير ANTHROPIC_API_KEY غير مقصود خطأ مفتاح API غير صالح، حتى لو عملت بصورة صحيحة في المرة السابقة.

لماذا يزداد مهمّاً الاحتفاظ بسجل الجلسات على VPS

إليك حقيقة تفاجئ كثيراً من الأشخاص. يُكتب سجل المحادثة على الجهاز الذي شغّل عليه الوكيل. ولا يُحفظ في حسابك ولا تتم مزامنته مع سحابة. بل هو ملف على قرص ذلك الجهاز.

لذلك لا تظهر جلسة تركتها داخل نافذة tmux على VPS في أداة اختيار الجلسات على حاسوبك المحمول، كما لا تظهر جلسة من حاسوبك المحمول على VPS. لا ينتقل أي شيء بينهما. إذا كنت تعمل بالطريقة الشائعة عند تشغيل Claude Code في tmux على VPS، فإن الخادم هو المكان الذي يتراكم فيه سجل محادثاتك الفعلي، بينما تعرض أداة الاختيار التي تراها محلياً مجموعة مختلفة وأصغر بكثير.

وينطبق هذا الفصل نفسه على الواجهات المختلفة. يحتفظ تطبيق سطح المكتب وإضافة VS Code كلٌّ منهما بسجل جلساته الخاص، ولا يمثّل أيٌّ منهما سجل CLI. ويحتفظ Claude Code على الويب بسجله الخاص أيضاً. أما Cowork فيعمل في بيئة معزولة لدى Anthropic بدلاً من العمل على عتاد تملكه، لذلك إذا كنت تقارن بين Cowork وClaude Code، فإن مكان انتهاء سجل المحادثة جزء من قرارك.

يكون البحث داخل الجهاز نفسه أوسع مما قد تتوقع. يبحث claude --resume <session-id> أولاً في دليل المشروع الحالي وبيئات git worktree التابعة له، ثم في كل مشروع آخر على ذلك الجهاز. العبارة التي يجب تذكّرها هي «على ذلك الجهاز». وإذا كان معرّف الجلسة من مضيف آخر، فلن يعثر عليه النظام، ويخبرك 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 دليل الإعداد بالكامل، وهي الطريقة المناسبة لوضع النصوص على volume منفصل أو volume مشفّر. ويتحكم 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 وأوامر status line حقلاً باسم 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 رمز مميز إلى فتح مربع حوار قبل رسالتك الأولى. تكون ذاكرة التخزين المؤقت للمطالبة قد انتهت صلاحيتها بحلول ذلك الوقت، لذلك يعيد الطلب التالي معالجة السجل الكامل مرة واحدة، بصرف النظر عن الخيار الذي تختاره.

  • يؤدي الاستئناف من الملخص إلى تنفيذ ضغط فوري، لذلك تحمل الطلبات اللاحقة ملخصاً بدلاً من السجل الكامل. تكون التكلفة لكل طلب أقل، لكن ما حُذف من الملخص لن يعود متاحاً.
  • يؤدي استئناف الجلسة الكاملة كما هي إلى تحميل المحادثة دون تغيير، مع الاحتفاظ بكل التفاصيل مقابل تكلفة لكل طلب تزداد مع حجم المحادثة.

يوجد خيار ثالث يستأنف الجلسة كاملة ويمنع ظهور مربع الحوار عند عمليات الاستئناف اللاحقة.

القرار أبسط مما يبدو. استأنف الجلسة عندما يعتمد ما ستكتبه تالياً على ما قيل من قبل. وابدأ من جديد عندما لا يعتمد عليه. يسهل اكتشاف انحراف السياق عندما تنتبه إليه: كأن يشير 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. افهم المقابل أولاً، لأن resume يقرأ نسخ المحادثات، ولذلك يعني تعطيلها أن --continue و--resume لن يجدا شيئاً لتحميله. إذا كان قلقك يتعلق بمكان وجود الملفات لا بوجودها نفسه، فوجّه CLAUDE_CONFIG_DIR إلى وحدة تخزين مشفّرة، وخفّض cleanupPeriodDays بدلاً من ذلك.