نقاط التفتيش والعودة
Type: Learn
Languages: Python (stdlib, checkpoint and rollback state machine)
Prerequisites: Phase 15 · 12 (Durable execution), Phase 15 · 15 (Propose-then-commit)
Time: ~60 minutes
المشكلة
إن التنفيذ الدائم (درس 12) يجعل العميل المتعثر قابلاً لإعادة التنفيذ. تقديم العرض ثم التزام (درس 15) يجعل الإجراء المعتمد قابلاً للتدقيق. يضم هذا الدروس لهم: ماذا يحدث عندما يتم تنفيذ الإجراء المعتمد جزئياً ، يتعثر ، ويتم إعادة التنفيذ؟ متى يتم إعادة التنفيذ ، ومع أي حالة؟
الأنظمة الحقيقية تُحكم هذا بشكل مختلف:
- LangGraphنقاط التفتيش كل انتقال إلى PostgreSQL. عند حادث العاملين، يتم إطلاق العقد الإيجاري ويعود عامل آخر إلى آخر نقطة التفتيش. تتوقف عمليات العمل على
interrupt()، والتي نفسها تستمر - Cloudflare Durable Objectsتحافظ على حالة المفتاح على مدار ساعات أو أسابيع. تحفّز الحساب مع التخزين للعمل المعتمد.
- Microsoft Agent Frameworkيُعرض
Checkpointالأسباب البدائية في API سير العمل؛ إعادة التشغيل بالإضافة إلى عدم القدرة على التشغيل تغطي محاولات إعادة التشغيل.
في كل حالة، الجمع الذي يعمل فعلا هو: مفتاح الاختلاف (منع إنجاز مزدوج) + التحقق من الشروط المسبقة (الوضع ما زال ما أقرنا ضد) + التحقق من بعد العمل (تحدثت الآثار الجانبية بالفعل) + إعادة التحقق من الفشل.
المفهوم
كل انتقال يستمر
التحول إلى حالة الرسم البياني هو أي خطوة تحرك تدفق العمل من حالة واحدة إلى أخرى. لا تزال تنفيذات البغاءات قائمة إلا في نقاط تعيين محددة. لا تزال تنفيذات الإنتاج قائمة في كل انتقال. التكلفة (بعض الكتابة الإضافية) صغيرة نسبياً إلى مكاسب الاعتماد (تراجع الأرض في أي مكان ، وتحقيق استرداد الإيجار).
إعادة تأجير
عندما يقع عامل، لا يفقد سير العمل؛ ينفذ العقد (الادعاء القصير على أن هذا العامل يقوم بتنفيذ هذا الجري) ببساطة. يقوم عامل آخر بتحديد آخر نقطة تفتيش وتستأنف. آلية الإيجار هي ما يسمح لنظم الإنتاج بالبقاء على قيد الحياة في الانتشارات المتحركة دون فقدان العمل أثناء الطيران.
الجهد المفروض بالإضافة إلى الشروط المسبقة
لا يكفي التحرر وحده. فكر في: يتم الموافقة على سير العمل ل "تحويل$100 from A to B when balance > $1000. " يتم الالتزام بتدفق العمل ، يتعطل في منتصف التنفيذ ، ويتم استئناف. إذا تم التحقق من مفتاح الاختفاء ، ويتم استئناف التنفيذ ، فإن التحويل ينفذ مرة واحدة (صحيحة). ولكن ضع في اعتبارك أن بين التعطل والاستئناف ، ينخفض توازن A إلى 500 دولار عبر تدفق عمل مختلف. لا يزال التحقق من الاختفاء يمر ؛ الشروط المسبقة لا. دون التحقق من الشروط المسبقة ، نُرسل مسدًا.
كل عمل يتطلب كلتا:
- Idempotency key: يمنع إنجاز المزدوج.
- Precondition check: يؤكد أن الدولة لا تزال متوافقة مع ما تمت الموافقة عليه.
التحقق بعد الإجراء
"الأداة التي عادت 200" ليست التحقق. التحقق الحقيقي يقرأ مرة أخرى الحالة المستهدفة ويؤكد تأثير الجانب حدث فعلا.
- تحديث قاعدة البيانات:
UPDATE ... RETURNING *ثم تأكد من حالة تطابق الصف المرجع المقصودة. - إرسال البريد الإلكتروني: تحقق من المجلد المرسل لتحديد الهوية للرسالة بعد الإرسال.
- كتابة الملف: قراءة الملف مرة أخرى وتشويقها.
- دعوة إطار العمل: متابعة
GETعلى الموارد المستهدفة.
إذا فشلت التحقق، فإن تدفق العمل في حالة سيئة معروفة.
خطط الرد
كل إجراء متواصل في تقديم المقترحات ثم التزام (الدرس 15) يحمل خطة إعادة التنفيذ.
- In-band rollback: عكس الآثار الجانبية مباشرة (
DELETEبعدINSERT،Send-correction-emailبعد إرسالها). - Compensating transaction: عمل جديد يُحبط الأصلي (أنماط SAGA القياسية).
- Out-of-band rollback: تحذير الإنسان، توقف سير العمل، ترك الحالة السيئة للتحقيق.
يجب أن يذكر في الاقتراح عدم إعادة التنفيذ ("لا يمكننا إلغاء ذلك") ، حيث تتطلب الإجراءات التي لا تتضمن إعادة التنفيذ أقوى HITL في وقت التزاماتها (المرحلة 15 من التحدي والرد).
قانون الاتحاد الأوروبي للاستخبارات الذكية المادة 14 القراءة التشغيلية
تتطلب المادة 14 "إشراف بشري فعال" على الأنظمة ذات المخاطر العالية.
- نقاط التفتيش قابلة للتحقيق من قبل المراجعة.
- يتم تدريب الردود (تم اختبارها من نهاية إلى آخر مرة واحدة على الأقل).
- تتبقى مسار المراجعة على الانتشار (الخلفية لم تكن مؤقتة).
- يتم إشعار التحققات الفاشلة، وليس تسجيلها بصمت.
سير العمل الذي يتوقف في منتصف الالتزام، ويستأنف، ويؤدي إلى إكمال التأثير الجانبي دون مسار التحقق + الردع لا ينجو من اختبار المادة 14.
وضع الفشل الحاد: التنفيذ المزدوج
أكثر حوادث الإنتاج شيوعاً في هذا المجال:
- تمت الموافقة على العمل، مفتاح الإستثمار
- الالتزام يبدأ، ينفذ، يعيد 200.
- تدفق العمل يتعطل قبل أن تستمر حالة "التزام".
- سير العمل يستمر؛ يرى "موافق ولكن ليس ملتزم"؛ يعيد تنفيذها.
- تأثير الجانب يطلق مرتين
التخفيف: استمر في إعداد "في الطيران" قبل تنفيذها، تنفيذها بمفتاح إعفاء، ثم علامة "ملتزم" فقط بعد نجاح التحقق من بعد الإجراء. إذا فشلت إطلاق النار الإجراءية وتكشف الحالة، تعرف على التحقق وإعادة إطلاق النار (إذا لزم الأمر). إذا نجحت إطلاق الحالة وتفشل الإجراء، يمكنك التحقق من وإطلاق النار مرة واحدة بالضبط عبر مسار الاسترداد.
استخدمها
code/main.pyيقوم السائق بتنظيم عملية التدريب المحددة مع إمكانية الإصلاح، والشروط المسبقة، والتحقق، والإعادة التدريب. يحاكي السائق أربعة سيناريوهات: الجري النظيف، والحاولات المجددة بعد الحادث (التقاط إمكانية الإصلاح) ، وفشل الإصلاح (إجراءات إزالة التدريب دون إطلاق النار) ، والتحقق من الفشل (إطلاق إعادة التدريب).
أرسله
outputs/skill-rollback-rehearsal.mdيقوم بتصميم اختبار التجربة التدريبية للجريان العمل المقترح والتحقق من الخلفية في نقطة التفتيش لتحقيق استمرارية مسار التدقيق.
التمارين
- أركض
code/main.pyتأكد من أنّه في حالة الحادث أثناء الالتزام، يتمّ إطلاق النار مرة واحدة بالضبط في كلّ محاولة إعادة.
- تعديل نمط "علامة كما تم أولاً، ثم القيام به" بحيث يكتب الحالة حرائق بعد الإجراء. إعادة عرض سيناريو الحطام. قياس عدد الإجراءات المكررة النار.
- صياغة خطة إعادة التأثير لفعلية إنتاجية محددة (مثل "رسل إلى قناة Slack"). تصنيف كمنطقة داخل المجموعة، أو تعويض، أو خارج المجموعة. توجيه الاختيار.
- خذ تدفق عمل واحد تعرفه. حدد كل انتقال حالة. حدد كل واحد مع متطلبات استدامة (استمر / لا تستمر). عد تلك التي لا تستمر حاليا.
- اختبار التردد المتكرر: تصميم اختبار من نهاية إلى نهاية يقوم بتشغيل تدفق عمل حقيقي، ويصطدم به، و يؤكد إطلاق مسار التردد. ما الذي يؤكد عليه الاختبار؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Checkpoint | "Save point" | Every graph-state transition persists to a durable store |
| Lease | "Worker claim" | Short-lived claim that a worker is executing a run; expires on crash |
| Precondition | "State gate" | Assertion that the state is still consistent with the approved action |
| Post-action verify | "Re-read check" | Confirm the side effect actually happened in the target system |
| In-band rollback | "Direct undo" | Reverse the side effect with the inverse operation |
| Compensating transaction | "SAGA undo" | A new action that neutralizes the original |
| Mark-as-done-first | "Status write order" | Persist the committed status before returning from commit |
| Article 14 | "EU AI Act human oversight" | Operational: queryable checkpoints, rehearsed rollbacks, auditable trail |
المزيد من القراءة
- Microsoft Agent Framework — Checkpointing and HITL البدائية في نقاط التفتيش وتعافي الإيجار
- Cloudflare Agents — Human in the loop الأشياء الدائمة كقاع الدولة.
- EU AI Act — Article 14: Human oversight نقطة أساسية للتنظيم
- Anthropic — Measuring agent autonomy in practiceإطار موثوقية لأجليات العمل على الأفق الطويل.
- Anthropic — Claude Code Agent SDK: agent loop شكل سير العمل لـ Claude Code Routines.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.