يكتب وكيلٌ تقريرًا، وينشئ ملفًا، ثم يرسل رسالة. بعد ذلك تنقطع العملية فجأة. وعند إعادة التشغيل تقول المحادثة: «أرسل النتيجة الآن.» هل خرجت الرسالة؟ هل يجب إنشاء الملف من جديد؟ لا يجيب سجل محادثة سلس عن هذه الأسئلة.
في 19 أكتوبر 2026، نشرت Vercel مشروع durable-harness. يسجّل المشروع خطوات الوكيل ونتائجه بحيث يمكن استئناف العمل، ويتعامل مع الأدوات المنقطعة بشكل مختلف بحسب خاصية قابليتها لإعادة التنفيذ. ويُعدّ هذا الإصدار مناسبة للتفكير بعناية أكبر في حالة العمل. المثال الوارد في هذا المقال نموذجنا الخاص، وليس اختبارًا أجريناه على المشروع.
النية والاستدعاء والنتيجة ثلاثة أشياء مختلفة
تصف النية ما يُفترض أن يحدث بعد ذلك. ويُظهر الاستدعاء الذي بدأ أن العمل قد انطلق. ولا يوثّق ما تعرفه عمليتك أنت عنه سوى النتيجة المخزّنة. وإذا اختلطت هذه المستويات، فقد تؤدي إعادة التشغيل بسهولة إلى عمل مكرر أو إلى تخطي شيء لم يكتمل قط.
لذلك لا يكفي في حالة التقرير قيدُ «اكتمل التصدير». بل يحتاج إلى إحالة إلى المدخلات المستخدمة وإلى الملف الذي أُنشئ فعلًا. فإذا تغيّر المستند المصدر، فقد يظل تصدير سابق موجودًا لكنه لم يعد النتيجة الصحيحة. تبدأ إعادة الاستخدام بإسناد واضح.
Step: export-17
Input: bericht-v3
State: completed
Result: bericht-v3.pdf
Next step: notification
هذه بطاقة تحكم مقروءة، وليست صيغة API. وهي تُظهر الفرق الجوهري بين اسم ملف ذُكر في محادثة ونتيجة قابلة للتتبع لخطوة محددة. وفي عملية حقيقية، يجب أن يكون الملف المطابق موجودًا بطريقة قابلة للتحقق.
إعادة التشغيل الآمنة تعرف الحالات غير الواضحة
تأمّل ثلاث نقاط قد تنقطع عندها العملية. قبل التصدير، لا توجد نتيجة بعد. وبعد التصدير وقبل الرسالة، يمكن إعادة استخدام الملف. أما أثناء إرسال الرسالة فالوضع أصعب: فقد يكون المستلم قد تلقاها بالفعل بينما يغيب التأكيد عن سجلك أنت.
لذلك فإن الحالة المحلية «لم يُخزَّن أي تأكيد» لا تثبت «لم تُرسَل». وقد يحوّل تكرار الخطوة دون تبصّر حالةَ عدم اليقين إلى رسالة مكررة. والعملية المعقولة تضع على هذه الخطوة علامة «غير واضحة» وتتحقق لدى الخدمة الخارجية، شريطة أن توفر الخدمة استعلامًا مناسبًا عن الحالة.
وهنا بالتحديد تختلف الإجراءات. فإعادة قراءة ملف موجود لا تغيّر عادةً شيئًا بالنسبة إلى المستلم. أما رسالة أخرى أو طلب شراء آخر أو دفعة أخرى، في المقابل، فقد تُحدث أثرًا جديدًا. ولا يحسم السجل الدائم هذه الفروق نيابةً عن النظام الخارجي.
ثبات الأثر عند التكرار خاصيةٌ في العملية نفسها
ينبغي أن تكون العملية القابلة للتكرار قابلة للتعريف بطريقة تمنع الطلب نفسه من إنشاء مهمة جديدة عن غير قصد. فإذا كانت الخدمة تدعم مفتاحًا مخصصًا لهذا الغرض، فيجب أن تحتفظ العملية المنطقية نفسها بالمفتاح نفسه. أما المفتاح الذي يُولَّد من جديد عند كل إعادة تشغيل فسيُفقد هذه العلاقة بالتحديد.
ويعتمد ما إذا كان ذلك يعمل بشكل موثوق، وكيف، على عقد الخدمة الفعلي. ولا يستطيع إطار عمل للوكلاء أن يجعل إجراءً قابلًا للتكرار بأمان لمجرد منحه تسمية لطيفة. كما أن «مرة واحدة بالضبط» ليست نتيجة مجانية لتخزين السجلات بشكل دائم.
اختبار انقطاع صغير يشرح أكثر من تشغيل ناجح
في بيئة التطوير الخاصة بك، يبرز تمرين غير ضار: استبدل أولًا خطوة الإرسال بسجل محلي، وقاطع العملية عند النقاط الثلاث المذكورة، وانظر إلى الحالات الموجودة عند إعادة التشغيل. دوّن مسبقًا الخطوات التي يجوز تكرارها وتلك التي تحتاج إلى تحقق. لا تستخدم مدفوعات أو رسائل حقيقية في هذا الفحص الأول.
لا تكمن الفائدة في معدل نجاح مختلَق. بل تكمن في القدرة على تسمية حدود الحالة في عمليتك أنت. ويُعدّ Durable-harness نهجًا تقنيًا ملموسًا واحدًا لتحقيق ذلك. لكن إعادة التشغيل الجيدة تبدأ دائمًا بالسؤال نفسه: ما الذي حدث بشكل مثبت، وأين لا نعرف بعد؟
المصادر والحالة
البحث والتوثيق حتى 25 أكتوبر 2026. جعل كل إطار تشغيل دائمًا.

