API Error: Connection lost mid-response: الأسباب والحل بعد إعادة التسمية في v2.1.227
يتوقف Claude Code في منتصف الرد فتظهر العبارة «API Error: Connection lost mid-response. The response above may be incomplete.»، ثم لا يعثر من يبحث عنها حرفيًا على شيء تقريبًا، والسبب أن النص نفسه جديد. يقول مرجع الأخطاء الرسمي ذلك صراحة: قبل v2.1.227 كانت Connection lost mid-response تُعرض باسم Connection closed 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. فالحدث ليس جديدًا، وإنما تبدّلت الكلمة المعروضة وحدها، ولهذا يظل ما كُتب تحت الاسم القديم صالحًا كما هو، ولهذا أيضًا لا بد أن يشمل البحث في البلاغات الصيغتين معًا. ينطلق المقال من واقعة إعادة التسمية هذه معتمدًا على الوثائق الرسمية والبلاغات العلنية وحدها. يعرض التعريفات الرسمية للرسائل الأربع للانقطاع في منتصف الرد، وهي Server error وConnection lost وYour computer went to sleep وThe response stopped arriving، ويبيّن لماذا يُحتفظ عمدًا بالمخرجات التي ظهرت على الشاشة، إذ إن إعادة إرسال الطلب قد تُنفّذ استدعاء الأداة نفسه مرتين، ولماذا تكون خطوة الاستئناف هي الرد بكلمة continue لا البدء من جديد. ثم يشرح سبب غياب إعادة المحاولة التلقائية عبر مسارات Automatic retries الرسمية: الانقطاع قبل اكتمال أي شيء يُعاد إرساله بتراجع أسّي حتى عشر مرات، والانقطاع بعد التفكير وقبل أي مخرجات يُعاد إرساله مرتين على الأكثر ثم ينتهي الدور برسالة Connection lost before a response was produced، والانقطاع بعد اكتمال كتلة لا يُعاد إرساله إطلاقًا. ومن هناك يرسم الطبقات الثلاث التي قد ينقطع عندها البثّ، وهي جهازك وخطك، والمسار عبر الوسطاء والبوابات، وجانب الخادم مع إعادة استخدام الاتصال، ويضيف الحالة الرابعة التي يسهل إغفالها وهي تدوير شهادات mTLS وسلوك إعادة تحميلها منذ v2.1.232، ثم يقدّم قائمة عزل من تسع خطوات. ويسرد مؤقتات مراقبة البثّ الأربعة بقيمها الافتراضية، أي 180 ثانية لأول بايت و300 ثانية على مستوى الأحداث و180 ثانية على مستوى البايتات وخمس دقائق لخمول الجسم، إلى جانب CLAUDE_CODE_MAX_RETRIES وCLAUDE_CODE_RETRY_WATCHDOG وAPI_TIMEOUT_MS ومتغيّري مهلة البثّ، مع التوضيح بأن رفع عدد مرات إعادة المحاولة لا يُقلّل هذه الرسالة بالذات. ويفصل جدول مقارنة بين ثماني رسائل يسهل الخلط بينها، ويعرض بلاغين علنيين هما #86473 و#85979 يكتمل فيهما HTTPS الخام وcurl بينما تسقط الطرفية وحدها بـ ECONNRESET. ويختم بفصل ما تأكد رسميًا عمّا هو مجرد بلاغ، ومنه أن الإصدارات السابقة لـ v2.1.222 كانت قد تعرض هذا الإشعار حتى حين يكون الرد قد اكتمل فعلًا.