المحتويات
- 1. أول ما تفعله — ما ظهر على الشاشة لم يضِع
- 2. التعريف الرسمي — الرسائل الأربع للانقطاع في منتصف الرد
- 3. في v2.1.227 تحوّلت التسمية من closed إلى lost
- 4. لماذا لا تُعاد المحاولة تلقائيًا
- 5. أين ينقطع الاتصال — الطبقات الثلاث
- 6. ما تجرّبه الآن — قائمة تحقّق للعزل
- 7. ضبط المؤقتات وإعادة المحاولة بمتغيرات البيئة
- 8. كيف تميّزها عن الرسائل المشابهة
- 9. بلاغات فعلية — حين لا يتوقف ECONNRESET
- 10. ما هو مؤكد وما لم يتأكد بعد
- الأسئلة الشائعة
عندما تُسند إلى Claude Code مهمة طويلة نسبيًا، قد يتوقف كل شيء فجأة في منتصف الرد عند هذا السطر.
API Error: Connection lost mid-response. The response above may be incomplete.
لو بحثت عن هذه العبارة كما هي فلن تجد إلا القليل، والسبب واضح تمامًا: هذا اسم جديد نسبيًا. فـمرجع الأخطاء الرسمي لـ Claude Code يذكر الجملة نفسها حرفيًا — «قبل v2.1.227 كانت Connection lost mid-response تُعرض باسم Connection closed mid-response». أي أن الحدث نفسه قديم، والكلمة المعروضة وحدها هي التي تبدّلت من closed إلى lost. ولأن ما هو منشور على الإنترنت مكتوب بالاسم القديم، صار من يبحث بالاسم الجديد لا يعثر على شيء.
ينطلق هذا المقال من واقعة إعادة التسمية هذه ليرتّب، اعتمادًا على الوثائق الرسمية والبلاغات العلنية وحدها، (1) المعنى الدقيق للرسالة (2) ما تفعله الآن أمام الشاشة (3) لماذا لا تُعاد المحاولة تلقائيًا (4) عزل الطبقة التي ينقطع عندها الاتصال (5) الضبط عبر متغيرات البيئة (6) التمييز عن رسائل أخرى شديدة الشبه. وحيثما دخل التخمين وضعتُ في موضعه وسمًا يبيّن درجة التأكد.
ما ظهر على الشاشة لم يُمحَ. وتذكر الوثائق الرسمية أن الرد بكلمة continue يستأنف العمل من آخر كتلة اكتملت.
قبل v2.1.227 كان المعروض Connection closed mid-response. وما كُتب تحت الاسم القديم صالح للاستعمال كما هو.
الحل يختلف بحسب موضع الانقطاع: جهازك أم المسار أم جانب الخادم. وهناك بلاغات يعمل فيها HTTPS الخام بينما يسقط Claude Code وحده.
1. أول ما تفعله — ما ظهر على الشاشة لم يضِع
قبل الحديث عن المعالجة، لنُوضّح النقطة الأكثر تعرّضًا لسوء الفهم. ظهور هذه الرسالة لا يلغي ما وصل إلى الشاشة قبلها. لم يُرمَ شيء.
يشرح مرجع الأخطاء الرسمي مجموعة الرسائل التي تنتهي بعبارة «The response above may be incomplete.» أي أن الرد أعلاه قد يكون ناقصًا، فيقول — إذا فشل البث بعد أن يكون Claude قد أنهى كتلة نصية واحدة أو استدعاءً واحدًا لأداة، فإن إعادة إرسال الطلب قد تُنفّذ الاستدعاء نفسه مرتين، ولذلك يُبقي Claude Code ما اكتمل كما هو ويُلحق هذه الملاحظة بدلًا من إسقاط الدور.
وعليه فالمطلوب ثلاث خطوات لا غير.
يحتفظ Claude Code بكل كتلة اكتملت، لكنه يُسقط الكتلة الأخيرة إن كانت لا تزال جارية لحظة انتهاء الدور. والناقص غالبًا بضع جمل في النهاية أو استدعاء الأداة الأخير.
continueهذه هي خطوة الاستئناف الرسمية بعينها، فهي تجعله يواصل من آخر كتلة اكتملت. لا تُعِد كتابة التعليمات من البداية — عندئذٍ ستُنفَّذ عمليات سبق تنفيذها مرة أخرى.
إذا وقع الانقطاع أثناء كتابة ملف أو تنفيذ أمر، فإن سجلّ الشاشة هو المرجع في تحديد ما نُفِّذ فعلًا. انظر الحالة الحقيقية بأمر مثل git status قبل أن تكمل.
-p أو Agent SDK أو الجلسات السحابية، إذا كان الرد المنقطع نصًا خالصًا لا يتضمن استدعاء أداة، يطلب Claude Code من Claude متابعة الرد من تلقاء نفسه — حتى ثلاث مرات متتالية كحد أقصى. ولا تظهر هذه الملاحظة إلا بعد استنفاد تلك المتابعات. والوكلاء الفرعيون يواصلون تلقائيًا بالطريقة نفسها.
2. التعريف الرسمي — الرسائل الأربع للانقطاع في منتصف الرد
أول ما ينبغي إدراكه أن هذه العبارة ملاحظة يضيفها Claude Code من عنده، وليست نصّ استجابة خطأ أعادتها الواجهة البرمجية. ولذلك، رغم أن التجربة واحدة، فإن Claude Code يغيّر صياغة النهاية بحسب السبب. والمرجع الرسمي يعدّد الأربع التالية.
API Error: Connection lost mid-response. The response above may be incomplete.
API Error: Your computer went to sleep mid-response. The response above may be incomplete.
API Error: The response stopped arriving. The response above may be incomplete.
الشرح الرسمي كلمة واحدة — «الاتصال انقطع». كان البثّ يسير سليمًا، لكن الاتصال الذي يحمله هو الذي فُقد.
وقوع overloaded أو خطأ 5xx في منتصف البث. وبحسب الوثائق الرسمية فإن هذا العرض نفسه موجود منذ v2.1.199، وقبله كانت المخرجات الجزئية تُرمى ويُعامَل الدور كله كخطأ.
حين يرصد Claude Code أن الحاسوب دخل في وضع السكون أثناء الرد. وبعد الاستيقاظ يعتبر الاتصال تالفًا فيتوقف عن القراءة.
حين يبقى الاتصال مفتوحًا لكن البيانات تتوقف، فيقطعه مؤقّت مراقبة البث. توقّف لا انقطاع، والسبب والمعالجة مختلفان.
اقرأ أولًا وبدقة أيًّا من هذه البطاقات الأربع رأيت. تجربة «انقطع في المنتصف» تبدو واحدة في كل الحالات، لكن Claude Code يكون قد عزل السبب قبل أن يختار الصياغة. فإذا ظهرت لك lost فذلك حكم بأن الاتصال فُقد، لا أن الخادم أعاد 5xx ولا أن مهلة انتهت.
3. في v2.1.227 تحوّلت التسمية من closed إلى lost
هنا لبّ هذا المقال. يضع مرجع الأخطاء الرسمي، مباشرة بعد سرد الشروح الأربعة، هذه الجملة على هيئة تنبيه.
«قبل v2.1.227 كانتConnection lost mid-responseتُعرض باسمConnection closed mid-response، وكانتThe response stopped arrivingتُعرض باسمResponse stalled mid-stream»
— مرجع الأخطاء الرسمي لـ Claude Code، ترجمتي
أي أن عبارتين استُبدلتا في وقت واحد. وهذا جدول التقابل.
| المعروض قبل v2.1.227 | المعروض حاليًا | المعنى رسميًا |
|---|---|---|
Connection closed mid-response |
Connection lost mid-response |
الاتصال انقطع |
Response stalled mid-stream |
The response stopped arriving |
الاتصال بقي مفتوحًا لكن البيانات توقفت |
Connection closed while thinking, before producing a response |
Connection lost before a response was produced |
انقطع قبل ظهور حرف واحد، أي بلا مخرجات جزئية |
Response stalled while thinking, before producing a response |
The response stalled before a response was produced |
توقّف والاتصال مفتوح، قبل ظهور حرف واحد |
انتبه إلى أن السطر الثالث شيء آخر غير رسالة هذا المقال. فـmid-response تعني «انقطع بعد ظهور جزء من المخرجات»، وbefore a response was produced تعني «انقطع قبل ظهور حرف واحد» — كلاهما شمله التغيير نفسه، لكن المعنى والسلوك بعده مختلفان. نتناول ذلك بالتفصيل في الفصل التالي.
ماذا يتغيّر حين تعرف قصة إعادة التسمية
الأثر العملي ثلاثة أمور.
ابحث عن «Connection closed mid-response» فتتضاعف أمامك بلاغات GitHub والمقالات الشارحة دفعة واحدة. والحدث واحد، فلا حاجة إلى إعادة تأويل.
إذا ظهرت lost فأنت على نسخة v2.1.227 أو أحدث من Claude Code. وإذا ظهرت closed فهي أقدم من ذلك.
الظاهرة الواحدة مُبلَّغ عنها باسمين، فالبحث في البلاغات لا بد أن يشمل الصيغتين معًا وإلا فاتتك بلاغات قائمة.
⚠️ قبل v2.1.222 قد يكون البلاغ نفسه كاذبًا. ينصّ مرجع الأخطاء الرسمي على أن «Claude Code في الإصدارات السابقة لـ v2.1.222 كان يُظهر هذا الإشعار أيضًا حين ينقطع الاتصال أو يتوقف بعد اكتمال الرد، فيُبلّغ عن الدور كخطأ رغم أن الرد كامل». أي أن النسخ القديمة قد تعرض الخطأ وحده بينما وصلت المخرجات كلها. فإذا كان ناتج claude --version أصغر من 2.1.222، فحدِّث قبل أن تبدأ العزل — إذ قد يكون الخطأ الذي تراه غير موجود أصلًا.
4. لماذا لا تُعاد المحاولة تلقائيًا
ليس صحيحًا أن Claude Code لا يفعل شيئًا. فبحسب فقرة «Automatic retries» في المرجع الرسمي، تُعاد المحاولة تلقائيًا على حالات الفشل العابرة حتى عشر مرات بتراجع أسّي. وظهور هذه الرسالة رغم ذلك يعني أن Claude Code حكم بأن هذا موضع لا يجوز فيه إعادة المحاولة.
والفارق يقوم على نقطة واحدة فقط: «هل أنجز Claude شيئًا بالفعل؟»
إذا سقط الاتصال قبل أن يُنهي Claude أي جزء من الرد بما في ذلك التفكير، فإن Claude Code يعيد إرسال الطلب بالتراجع نفسه ويستمر الدور. والأمر كذلك حتى لو كان النص قد بدأ في التدفق.
وإذا انتهى التفكير ولم يبدأ نص ولا استدعاء أداة، فإنه يعيد الإرسال مرتين على الأكثر بفواصل قصيرة، فإن استمر السقوط أنهى الدور برسالة Connection lost before a response was produced.
إذا وقع الانقطاع بعد اكتمال كتلة نصية أو استدعاء أداة، أو بعد أن بدأ ذلك عقب التفكير، فإن Claude Code لا يعيد إرسال الطلب. لأن ذلك قد يُنفّذ استدعاء الأداة نفسه مرتين.
وبدلًا من ذلك يحتفظ بما اكتمل، ويُنفّذ استدعاءات الأدوات المكتملة ويواصل الدور من نتائجها. ثم يُلحق هذه الملاحظة.
هذا التصميم يبدو مزعجًا لكنه في الحقيقة منحاز إلى جانب الأمان. فلو كانت الطلبات تُعاد تلقائيًا، لأمكن أن تتكرر عمليات ذات أثر جانبي مثل «تعديل ملف» أو «تنفيذ أمر» مع كل انقطاع. ولهذا توجّه الوثائق الرسمية إلى الرد بـ continue بدل إعادة الإرسال — فهو السبيل الوحيد إلى ألا يُعاد عملٌ انتهى.
ما يظهر على الشاشة أثناء إعادة المحاولة
أثناء إعادة المحاولة يظهر بجانب المؤشر الدوّار عدّاد تنازلي بصيغة Retrying in Ns · attempt x/y. والوسم في البداية API error، لكن منذ v2.1.198 يتحوّل إلى السبب المحدد ابتداءً من المحاولة الثالثة (وإذا كان CLAUDE_CODE_MAX_RETRIES أقل من 3 فالتحوّل يقع في المحاولة الأخيرة).
كذلك، إذا بقي الطلب حيًّا ولم تصل بيانات لمدة 20 ثانية، يظهر شريط نصّه Waiting for API response · will retry in … · check your network قبل مرحلة الفشل. وهذا عرضٌ معناه «لم يقع الفشل بعد»، والعدّ التنازلي يشير إلى اللحظة التي سيقطع فيها Claude Code الاتصال المتوقف. وبحسب الوثائق الرسمية كانت هذه العتبة 10 ثوانٍ قبل v2.1.185 بصياغة مختلفة أيضًا.
5. أين ينقطع الاتصال — الطبقات الثلاث
عبارة «الاتصال انقطع» وحدها لا تحدد ما تفعله. ومواضع الانقطاع المحتملة ثلاثة في الأساس، ولكلٍّ منها طريقة تحقّق مختلفة.
تبديل شبكة Wi-Fi، وانقطاع لحظي في شبكة الهاتف، والسكون، وإعادة اتصال عميل VPN.
طريقة التحقق: جرّب اتصالًا سلكيًا أو خطًا آخر وانظر هل يتكرر. وإن كان السبب السكون فستظهر صياغة مخصصة له، وبها يتم العزل.
وسيط الشركة، وفحص TLS، وبوابات نماذج اللغة، وشبكات VPN. وليس نادرًا أن يعتبر جهازٌ بثًا مفتوحًا لوقت طويل خاملًا فيقطعه.
طريقة التحقق: أزل HTTPS_PROXY وانظر هل يتكرر. وتحقّق من سطر الوسيط عبر /status.
عطل في الخدمة، أو اتصال معاد استخدامه وهو في الحقيقة ميت. وعلامتها أن خط اتصالك سليم ومع ذلك يستمر السقوط.
طريقة التحقق: راجع status.claude.com. وإذا تكرر الأمر نفسه على خطوط متعددة فالمشكلة ليست عندك وحدك.
Stale connection — reloaded rotated mTLS client material في سجل claude --debug.
6. ما تجرّبه الآن — قائمة تحقّق للعزل
الترتيب من أعلى إلى أسفل هو ترتيب الأثر الأكبر بالجهد الأقل. تحقّق بعد كل خطوة هل تتكرر المشكلة.
| # | ما تفعله | الغرض |
|---|---|---|
| 1 | أجب بكلمة continue | لا تُثبّت الخسارة أولًا. أسرع من الإعادة من البداية وبلا خطر تنفيذ مزدوج |
| 2 | حدِّث Claude Code إلى أحدث إصدار | سلوك الاتصال يتغيّر بتغيّر الإصدار. أصلح v2.1.198 مشكلة «انقطاع شبكي قصير في منتصف الرد يقطع الدور» |
| 3 | جزّئ الدور الواحد | افصل «اقرأ ملفات كثيرة ثم اكتب تقريرًا» إلى قراءة ثم كتابة. تُقلّل بذلك زمن بقاء البثّ مفتوحًا نفسه |
| 4 | أوقف VPN والوسيط وأعد المحاولة | عزل الطبقة 2. إن زال العطل بإيقافهما فاشتبه في قطع الخمول على المسار |
| 5 | جرّب خط اتصال آخر | عزل الطبقتين 1 و3. إن تكرر على خطوط متعددة فالمشكلة ليست عندك وحدك |
| 6 | راجع إعدادات السكون | إن كانت الشاشة تنطفئ في منتصف رد طويل، فقد يتلف الاتصال قبل ظهور الصياغة المخصصة للسكون |
| 7 | راجع status.claude.com | تأكيد الطبقة 3. وعند الخطأ 529 يعرض Claude Code نفسه اسم هذا المضيف على الشاشة |
| 8 | سجّل بأمر claude --debug | يخرج السجل إلى ~/.claude/debug/<session-id>.txt. أرفقه عند تقديم بلاغ |
| 9 | تأكّد أنك لا تستخدم وسيط SOCKS | تنصّ الوثائق الرسمية صراحةً على عدم دعم وسطاء SOCKS. فإن كنت تستخدمه فانتقل إلى مسار آخر |
7. ضبط المؤقتات وإعادة المحاولة بمتغيرات البيئة
يملك Claude Code أربعة مؤقتات مستقلة لقطع البثّ الذي صمت. وهذه هي القائمة كما تسردها وثيقة إعدادات الشبكة الرسمية.
| المؤقّت | شرط القطع | المهلة الافتراضية |
|---|---|---|
| First-byte deadline | لم تصل بعد الإرسال أي ترويسة استجابة | 180 ثانية مع الواجهة المباشرة و300 ثانية فيما عداها، مع ثانية إضافية لكل 32KB من جسم الطلب |
| Event-level watchdog | تعذّر تحليل أي حدث من أحداث الاستجابة | 300 ثانية، ويعمل مع كل المزوّدين |
| Byte-level watchdog | لا تصل أي بايتات إطلاقًا، بما فيها نبضات إبقاء SSE حية | 180 ثانية مع الواجهة المباشرة و300 ثانية فيما عداها |
| Body idle timeout | لا تصل بايتات لمدة خمس دقائق | 5 دقائق، وهي موجّهة للمزوّدين غير الواجهة المباشرة |
غير أن نتيجة قطع هذه المؤقتات تكون في الأصل من صياغة جانب «الصمت» — وهي غير رسالة هذا المقال. وسبب إدراجها هنا أن معرفة القيم الافتراضية لازمة للتمييز بين الحالتين، لا أن نقول «ظهرت lost فلنُطِل المؤقتات». أما في بيئة يقع فيها صمت طويل عبر وسيط، فتعديل هذه القيم يغيّر أعراض جانب التوقف.
وأما جانب إعادة المحاولة فيُضبط بالمتغيرات التالية.
| متغير البيئة | الافتراضي | الأثر |
|---|---|---|
CLAUDE_CODE_MAX_RETRIES |
10 | عدد مرات إعادة المحاولة. والحد الأقصى 15 منذ v2.1.186. ويُنصح في السكربتات بخفضه ليفشل سريعًا |
CLAUDE_CODE_RETRY_WATCHDOG |
غير مضبوط | للجلسات غير المراقَبة مثل CI. ضبطه على 1 يجعل إعادة المحاولة على 429 و529 بلا حدّ، ومنذ v2.1.199 يرفع العدد الافتراضي للأخطاء العابرة، ومنها الانقطاع، إلى 300 |
API_TIMEOUT_MS |
600000 | مهلة الطلب الواحد بالميلي ثانية، وهي تساوي 10 دقائق. ارفعها على الخطوط البطيئة وعبر الوسطاء |
CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS |
غير مضبوط | مهلة مراقبة البايتات وحدها. تُحصر بين 10 ثوانٍ و30 دقيقة |
CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS |
غير مضبوط | يحدد مباشرةً مهلة أول بايت. متاح منذ v2.1.242 |
CLAUDE_CODE_MAX_RETRIES ينفع في الفشل من نوع «السقوط قبل ظهور المخرجات»، ولا ينفع فيما انقطع في المنتصف. النافع هو تقصير الدور الواحد.
8. كيف تميّزها عن الرسائل المشابهة
لعل هذا أنفع أجزاء المقال للقارئ. فتجربة «توقّف في المنتصف» مشتركة، لكن الصياغة التي يعرضها Claude Code مختلفة، والسبب والمعالجة مختلفان كذلك. وإليك ترتيبًا يشمل ما يقابلها من مقالات هذا الموقع.
| الصياغة على الشاشة | ما يحدث فعلًا | أين تقرأ |
|---|---|---|
Connection lost mid-response |
فُقد الاتصال بعد ظهور جزء من المخرجات | هذا المقال |
Connection closed mid-response |
الاسم القديم للحدث نفسه، قبل v2.1.227 | مقال closed الذي يجمع بلاغات حقبة الاسم القديم |
The response stopped arrivingسابقًا: Response stalled mid-stream |
الاتصال حيّ لكنه صمت، فقطعه المؤقّت | مقال stalled، وانتبه لتسلسله مع حلقة التكرار |
Server error mid-response |
في منتصف البث ردّ الخادم بـ 5xx أو overloaded | مقال 529 و500 |
Your computer went to sleep mid-response |
رصد Claude Code أن الحاسوب دخل في السكون أثناء الرد | راجع إعدادات الطاقة والسكون، الفصل 6 من هذا المقال |
Connection lost before a response was produced |
انقطع قبل ظهور حرف واحد، بلا مخرجات جزئية | محل إعادة المحاولة. الفصل 4 من هذا المقال |
Unable to connect أو خطأ في شهادة SSL |
لم يقم اتصال من الأساس | مقال الشبكة والوسيط |
ظهور وسم court أو invoke داخل النص |
ليست مسألة اتصال بل استدعاء أداة لم يُنفَّذ | مقال وسم court |
وأكبر مفترق هو: هل ظهر رد على الشاشة أم لا؟ فإن لم يظهر حرف واحد، فدور الشك على الاتصال والإعدادات نفسها من وسيط وشهادة وجدار ناري. وإن ظهر جزء منه، فذلك دليل على أن الاتصال قام، والأصوب حينئذٍ الانتقال إلى عزل هذا المقال بدل العبث بالإعدادات.
والمفترق الثاني: انقطاع أم صمت
الخطوة التالية معكوسة تمامًا بحسب ما إذا كان الاتصال قد فُقد أم بقي مفتوحًا وصامتًا.
اشتبه في المسار وفي إعادة استخدام الاتصال. وإطالة قيم المهلة لا تجدي — فالأمر ليس نفاد وقت، بل زوال الاتصال ذاته.
هنا يأتي دور المؤقتات. لتعديل مثل CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS مجال للنفع، ويُشتبه أيضًا في صمت النموذج مدةً طويلة.
9. بلاغات فعلية — حين لا يتوقف ECONNRESET
وأشد الحالات إزعاجًا نمطٌ يبقى فيه خطك سليمًا تمامًا ومع ذلك يستمر سقوط Claude Code وحده. وفي البلاغات العلنية بلاغان بذلا قدرًا كبيرًا من التحقق. وكلاهما مقدَّم إما بالاسم الجديد الوارد في هذا المقال، أو يتضمن صياغة الإصدار الذي سبقه مباشرة.
يكتب مقدّم البلاغ أن Connection dropped (ECONNRESET) · Retrying in 17s · attempt 6/10 تظهر ثم تعقبها API Error: Connection lost mid-response.. ويذكر مع ذلك أن طلب POST بحجم 60KB عبر curl، وطلبًا بالحجم نفسه عبر https.request في Node.js الخام، اكتملا كلاهما بنجاح، وأن بثًا طويلًا من نوع SSE من مضيف آخر لم ينقطع.
وبعد فحص MTU وفحص Winsock LSP والتكرار بأدنى إعداد ممكن والتكرار على شبكتين لا صلة بينهما، بقي الأمر بلا حل. والبلاغ #86473 موسوم كمكرّر ومع ذلك ما زال مفتوحًا.
وهنا تظهر Connection dropped (ECONNRESET) · Retrying in 0s · attempt 4/10. ويكتب مقدّم البلاغ أنه بعد إزالة برنامج الحماية إزالةً كاملة ومعالجة مرشّح VPN والوسيط وIPv6 وإعادة تعيين Winsock، تكرر العطل بالطريقة نفسها على ثلاث شبكات: واي فاي العمل وواي فاي المنزل ومشاركة اتصال الهاتف.
ويعرض مقابلةً مفادها أن محادثة claude.ai تعمل بلا مشكلات على الجهاز نفسه وبالحساب نفسه. والبلاغ #85979 أيضًا ما زال مفتوحًا وموسومًا بالركود.
ومع ذلك يمكن استخلاص فائدة عملية من البلاغين: «ping يمرّ» و«curl يمرّ» ليسا دليلًا على أن هذا الخطأ لا يقع. فالاتصال الذي يُبقي قناة واحدة مفتوحة عدة دقائق في وضع البثّ تختلف ظروفه عن طلب قصير. وبدل صبّ الوقت في فحص شبكتك، تجزئة الدور أسهل في خفض معدل التكرار.
10. ما هو مؤكد وما لم يتأكد بعد
تجنّبًا للالتباس، أفصل ما يمكن التحقق منه رسميًا عمّا سواه.
- هذه الصياغة واردة رسميًا في مرجع الأخطاء ومعناها «الاتصال انقطع»
- قبل v2.1.227 كانت تُعرض باسم
Connection closed mid-response، وهي إعادة تسمية للشيء نفسه - المخرجات التي وصلت جزئيًا يُحتفظ بها عمدًا، لأن إعادة الإرسال قد تُنفّذ العملية مرتين
- خطوة الاستئناف هي الرد بكلمة
continue - الانقطاع قبل ظهور المخرجات تُعاد فيه المحاولة تلقائيًا، حتى عشر مرات بتراجع أسّي
- الجلسات غير التفاعلية والوكلاء الفرعيون يواصلون من تلقاء أنفسهم، منذ v2.1.246 وv2.1.257 على الترتيب
- سلامة HTTPS الخام مع سقوط الطرفية وحدها بـ ECONNRESET، بحسب بلاغي #86473 و#85979
- سلامة نسخة المتصفح على الجهاز نفسه والحساب نفسه، بحسب بلاغ #85979
- احتمال تورّط عطل يتعلق بإعادة استخدام الاتصال، نقلًا عن شرح للدعم أورده مقدّم البلاغ
- الإشارة إلى وجود عطل في جانب الخادم في تواريخ بعينها، نقلًا عن مقدّم البلاغ كذلك
- شرح رسمي للسبب من Anthropic، إذ لا رد علنيًا على البلاغين أعلاه
- سبب إعادة التسمية. ولا أثر لذكر تغيير الصياغة في سجل التغييرات
- البلاغان #86473 و#85979 كلاهما ما زال مفتوحًا
وخلاصة الأمر أن العرض والمعنى وخطوة الاستئناف موثّقة رسميًا، أما شرح سبب الانقطاع فلم يصدر بعد. والفعّال يقينًا في هذا الوضع ليس تحديد السبب بل أسلوب عمل يُقلّل الخسارة عند الانقطاع — تجزئة الدور، والتقدّم في العمليات ذات الأثر الجانبي مع التحقق من الحالة، وإبقاء الإصدار حديثًا. وهذه الثلاثة تنفع أيًّا كان السبب.
الأسئلة الشائعة
س1. هل «Connection lost mid-response» و«Connection closed mid-response» خطآن مختلفان؟
هما الشيء نفسه. وكما ينصّ مرجع الأخطاء الرسمي، كان الحدث نفسه يُعرض قبل v2.1.227 باسم Connection closed mid-response. وتغيّر المعروض لا يعني أن نوعًا جديدًا من الأعطال قد ظهر. وما كُتب بالاسم القديم يبقى صالحًا للرجوع إليه كما هو.
س2. هل تضيع المخرجات السابقة؟
لا تضيع. كل كتلة أنهاها Claude تبقى. والذي يُرمى هو الكتلة الأخيرة وحدها إن كانت جارية لحظة انتهاء الدور. وسبب امتناع Claude Code عن إعادة الإرسال وإلحاقه هذه الملاحظة بدلًا من ذلك هو احتمال تنفيذ استدعاء الأداة نفسه مرتين.
س3. بماذا أجيب لأستأنف من حيث توقف؟
أجب بكلمة continue. هذه هي خطوة الاستئناف التي يوجّه إليها مرجع الأخطاء الرسمي، وهي تجعله يواصل من آخر كتلة اكتملت. أما إعادة كتابة التعليمات من البداية فقد تُكرّر عمليات سبق تنفيذها.
س4. هل يُصلح الأمرَ رفعُ عدد مرات إعادة المحاولة؟
لا يُصلحه. فكما في الفصل 4، هذه ملاحظة تخصّ موضعًا يتجنّب فيه Claude Code إعادة المحاولة عمدًا. وCLAUDE_CODE_MAX_RETRIES، الافتراضي 10 وحده الأقصى 15 منذ v2.1.186، ينفع في الفشل من نوع «السقوط قبل ظهور المخرجات». والنافع هنا هو تقصير الدور الواحد.
س5. هل الأمر نفسه مع -p ومع CI، أي التشغيل غير التفاعلي؟
السلوك مختلف. فبحسب المرجع الرسمي، في الجلسات غير التفاعلية، إذا كان الرد المنقطع نصًا خالصًا لا يتضمن استدعاء أداة، يطلب Claude Code المتابعة من تلقاء نفسه حتى ثلاث مرات متتالية. ولا تظهر هذه الملاحظة إلا بعد استنفاد ذلك. وقبل v2.1.246 كان الدور ينتهي عند أول انقطاع. وإذا كنت تستخدم --output-format json فإن هذه الرسالة تدخل في حقل result.
س6. تظهر لي أيضًا في الوكلاء الفرعيين، أي Task.
الوكلاء الفرعيون يواصلون تلقائيًا كذلك. فإن كان الرد المنقطع نصًا خالصًا، يطلب Claude Code من الوكيل الفرعي المتابعة، ولا تصير هذه الملاحظة الرسالة الأخيرة إلا بعد استنفاد المتابعات. وقبل v2.1.257 كانت الملاحظة تظهر عند أول انقطاع.
س7. هل شبكتي هي السبب؟
هذا وارد، لكنه ليس الاحتمال الوحيد. فمقدّم البلاغ #86473 يبيّن أن طلبي POST بالحجم نفسه، أحدهما عبر curl والآخر عبر Node.js الخام، يكتملان كلاهما، ومع ذلك تسقط الطرفية وحدها. فتحقّق أولًا هل يتكرر العطل بعد إيقاف VPN والوسيط، ثم جرّب خطًا آخر. فإن لم يتغيّر شيء في الحالتين، فالمشكلة ليست عندك وحدك.
س8. هل تقلّ إن أطلتُ المهلة؟
بالنسبة إلى هذه الرسالة لا يُنتظر ذلك. لأن الحكم هو أن الاتصال نفسه فُقد، لا أن الوقت نفد. أما إطالة المؤقتات مثل CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS فتنفع مع The response stopped arriving، أي مع العرض الذي يبقى فيه الاتصال حيًّا لكنه يصمت.
س9. كيف أتحقق من الإصدار الذي أستخدمه؟
يمكنك التحقق بأمر claude --version. فإن ظهرت على الشاشة lost فأنت على v2.1.227 أو أحدث، وإن ظهرت closed فأنت على ما قبلها. وسلوك الاتصال يتغيّر بتغيّر الإصدار، وسجل التغييرات الرسمي يذكر أن v2.1.198 أصلح «مشكلة انقطاع شبكي قصير في منتصف الرد يقطع الدور». والتحديث خطوة تستحق أن تُجرَّب أولًا، لكنه ليس ضمانًا للعلاج الجذري — فالبلاغان المذكوران أعلاه كلاهما على إصدارات أحدث من ذلك.
س10. تتكرر كثيرًا على شبكة مؤسستي. ما الإعدادات التي أراجعها؟
تُلخّص وثيقة إعدادات الشبكة الرسمية النقاط الجوهرية، وهي ثلاث: (1) وسطاء SOCKS غير مدعومين فلا تستخدمها، (2) ضع متغيرات الوسيط في كتلة env داخل ~/.claude/settings.json لا في تصدير من الصدفة، لأن بيئة الصدفة لا تصل إلى الوكلاء العاملين في الخلفية، (3) إن كنت تستخدم mTLS فانتبه إلى تدوير الشهادات. ويمكنك التأكد من قراءة الإعدادات عبر سجل claude --debug أو عبر ما يعرضه /status.
مقالات ذات صلة
- API Error: Connection closed mid-response في Claude Code: الأسباب والحل حين ينقطع الرد في المنتصف
- حين يدخل court في حلقة لا تنتهي ويتوقف Claude Code عند Response stalled mid-stream: الأسباب والحل
- أخطاء الشبكة والوسيط وشهادة TLS في Claude Code، أي Unable to connect: الأسباب والحل
- أخطاء الخادم 529 Overloaded و500 في Claude Code: الأسباب والحل
- ظهور court ووسم invoke في مخرجات Claude Code: أسباب عدم تنفيذ استدعاء الأداة وحلّها
- ملخّص أخطاء Claude Code الشائعة وطرق معالجتها
المصادر الأولية المعتمدة
- Claude Code — Error reference، الوثائق الرسمية: تعريف الصياغات الأربع، وإعادة التسمية في v2.1.227، والاستئناف بـ
continue، ومسارات Automatic retries، ومتغيرات البيئة - Claude Code — Enterprise network configuration، الوثائق الرسمية: مؤقتات مراقبة البثّ الأربعة وقيمها الافتراضية، وإعداد الوسيط، وعدم دعم SOCKS، وإعادة تحميل mTLS
- anthropics/claude-code — CHANGELOG، رسمي: إصلاح v2.1.198 لمشكلة «انقطاع شبكي قصير في منتصف الرد يقطع الدور»
- البلاغ #86473 — ECONNRESET مع Connection lost mid-response، الإصدار v2.1.229 على Windows 11
- البلاغ #85979 — استمرار ECONNRESET في v2.1.228 على Windows 11
- حالة تشغيل خدمات Claude، صفحة الحالة الرسمية