API Error: Connection closed mid-response في Claude Code: الأسباب والحل
يتوقف Claude Code في منتصف الرد برسالة «API Error: Connection closed mid-response. The response above may be incomplete.» وهذه ليست مشكلة في صياغة الأمر، بل الاتصال الذي كان يحمل الرد المتدفق أُغلق بينما الرد لا يزال قادمًا. يعتمد هذا المقال حصريًا على مرجع الأخطاء الرسمي وسجل التغييرات الرسمي وبلاغات مدعومة بالتقاط حزم الشبكة. يبدأ بالتعريفات الرسمية: Connection closed تعني أن الوصلة قُطعت، وResponse stalled تعني أنها صمتت، وServer error تعني وصول خطأ 5xx في منتصف التدفق؛ ويشرح لماذا تُحفظ المخرجات الجزئية عمدًا (لأن إعادة الإرسال قد تنفّذ الاستدعاءات نفسها للأدوات مرتين) وأن خطوة الاستعادة الموثّقة هي الرد بـ continue. ثم يفصل الطبقات الثلاث التي قد ينشأ منها الإغلاق (جهازك ووضع السكون، أو القطع عند الخمول في بروكسي أو VPN، أو إغلاق يبدأ من الخادم)، ويعرض القياسات التي نشرها صاحب البلاغ #67766: كانت الحالات العشر جميعها إغلاقًا سليمًا من الخادم، وظهر الخطأ بعد 3 إلى 105 مللي ثانية من FIN، وكان قد وصل 7 إلى 20 كيلوبايت من الرد، وبلغ جسم الطلب 1 إلى 2.5 ميغابايت، ونجح اتصال جديد خلال نحو 20 مللي ثانية، وظهرت 200 رسالة خطأ في 171 حادثة خلال 23 يومًا، منها 87 بعد أقل من خمس ثوانٍ من الاستدعاء السابق. أما جوهر الفائدة العملية فهو جدول زمني لبنود حقيقية في سجل التغييرات — 2.1.179 يحفظ الجزء المستلَم، و2.1.185 ينقل تنبيه التوقّف من 10 إلى 20 ثانية، و2.1.198 يعيد محاولة الانقطاعات العابرة بتراجع تدريجي، و2.1.199 يحفظ الجزء المستلَم عند أخطاء الخادم داخل التدفق، و2.1.214 يعطّل مجمّع keep-alive بعد خطأ اتصال قديم — مقارنًا بإصدارات البلاغات (2.1.173 و2.1.181 و2.1.183) وكلها أقدم من 2.1.198. ويختم بالظروف التي ترفع الاحتمال، وقائمة تحقّق من ثماني خطوات، وستة إرشادات للمطورين، وكيفية التمييز عن Unable to connect وPrompt is too long، وفصل واضح بين المؤكَّد رسميًا وغير المؤكَّد.