دورة حياة سيناريو بوابة القرار + هندسة تخزين الحالة
Audience: Engineers implementing scenario execution, run lifecycle, and الجمهور: المهندسون الذين ينفذون تنفيذ السيناريو، دورة حياة التشغيل، واستمرارية حالة التشغيل.
جدول المحتويات
- نظرة عامة تنفيذية
- مواصفات السيناريو
- دورة حياة سيناريو التشغيل (MCP)
- نموذج حالة التشغيل
- تدفق تنفيذ طبقة التحكم
- تشغيل مخازن الحالة
- مرجع متقاطع ملف بملف
نظرة عامة تنفيذية
تحدد السيناريوهات سير عمل الكشف المراحل في مواصفة حتمية. يقوم طبقة MCP بالتحقق من السيناريوهات وتسجيلها، ثم تقوم بإنشاء وقت تشغيل لطبقة التحكم لكل سيناريو. يتم الاحتفاظ بحالات التشغيل من خلال تنفيذ RunStateStore (في الذاكرة أو SQLite). حالة التشغيل هي فقط للإضافة، حيث تسجل المحفزات، ونتائج البوابات، والقرارات، والحزم، والتقديمات، واستدعاءات الأدوات. F:crates/decision-gate-core/src/core/spec.rs L51-L114 F:crates/decision-gate-mcp/src/tools/router.rs L721-L895 F:crates/decision-gate-core/src/core/state.rs L357-L394
مواصفات السيناريو
ScenarioSpec هو التعريف القياسي للسيناريو:
- المعرفات (سيناريو، مساحة الاسم، إصدار المواصفات)
- تعريفات المرحلة ومنطق البوابة
- تعريفات الحالة واستعلامات الأدلة
- مراجع المخطط الاختيارية ومعرف المستأجر الافتراضي
تتم مراجعة المواصفات عند التحميل لضمان التفرد والتناسق الداخلي. F:crates/decision-gate-core/src/core/spec.rs L51-L114
سلوك مستوى المرحلة يتم تعريفه بواسطة StageSpec (حزم الدخول، البوابات، التفرع، مهلة اختيارية). F:crates/decision-gate-core/src/core/spec.rs L121-L140
دورة حياة سيناريو التشغيل (MCP)
تعريف السيناريو
scenario_define يسجل سيناريو ويخزن وقت التشغيل في جهاز التوجيه للأداة:
- تنفيذ مساحة الأسماء
- التحقق من سجل القدرات
- التحقق من صحة المقارنات الصارمة
- إنشاء ControlPlane مع سياسة الثقة الحالية + سياسة الربط
F:crates/decision-gate-mcp/src/tools/router.rs L721-L749 F:crates/decision-gate-mcp/src/tools/router.rs L2045-L2066
بدء التشغيل
scenario_start ينشئ حالة تشغيل جديدة باستخدام مستوى التحكم ويحتفظ بها عبر المتجر المكون. F:crates/decision-gate-mcp/src/tools/router.rs L760-L814
الحالة / التالي / إرسال / تفعيل
تعمل الأدوات اللاحقة على وقت التشغيل المخزن وحالة التشغيل المستمرة:
scenario_statusيقرأ الحالة الحاليةscenario_nextيتقدم بناءً على الأدلة المتاحةscenario_submitيقوم بتحميل العناصر الخارجيةscenario_triggerيقوم بحقن حدث تحفيزي خارجي
F:crates/decision-gate-mcp/src/tools/router.rs L816-L977
ترتيب الطفرات ودلالات التحميل
لأدوات MCP المتغيرة في حالة التشغيل، يتم فرض الطلب حسب مفتاح التشغيل (tenant_id, namespace_id, run_id) بواسطة منسق تغيير داخل الموجه:
scenario_startscenario_statusscenario_nextscenario_submitscenario_trigger
هذا يزيل عمدًا تسلسل التشغيل العالمي عبر الجولات في طبقة MCP مع الحفاظ على ترتيب التشغيل المحدد في نفس الجولة. F:crates/decision-gate-mcp/src/tools/router.rs L812-L991 F:crates/decision-gate-mcp/src/tools/router.rs L2161-L2360
تتوافق أحمال التحكم/التخزين الزائدة مع أخطاء حد معدل MCP القابلة لإعادة المحاولة (ToolError::RateLimited) بدلاً من الفشل الداخلي العام. F:crates/decision-gate-mcp/src/tools/router.rs L3579-L3701 F:crates/decision-gate-core/src/interfaces/mod.rs L252-L329
تظهر تشخيصات منسق الطفرات لكل تشغيل عبر GET /debug/mutation_stats للتقييم التشغيلي، ولكن نقطة النهاية تستخدم نفس نموذج المصادقة مثل مكالمات HTTP/SSE MCP وتفشل في الإغلاق (401/403) عندما يكون المتصل غير مصادق عليه أو غير مخول. F:crates/decision-gate-mcp/src/server.rs L812-L851
scenario_submit.payload و scenario_trigger.payload يتم الاحتفاظ بهما في سجلات حالة التشغيل ويتم تصديرهما إلى حزم التشغيل كجزء من التصميم. يجب على التكاملات التعامل مع هذه قنوات الحمولة كمرئية للتدقيق وتجنب إرسال الأسرار الخام.
يمكن أن يتضمن scenario_next بشكل اختياري ملاحظات (ملخص/تتبع/أدلة) في استجابة الأداة عندما يسمح بذلك سياسة ملاحظات الخادم. تعيد ملاحظات التتبع استخدام تقييمات البوابات المخزنة؛ يمكن أن تظهر ملاحظات الأدلة سجلات تقييم البوابات مع تطبيق سياسة الإفصاح. F:crates/decision-gate-mcp/src/tools/router.rs L2144-L2257 F:crates/decision-gate-core/src/core/state.rs L357-L394
نموذج حالة التشغيل
حالة التشغيل هي سجل منظم، يُضاف إليه فقط، يحتوي على:
- مستأجر، مساحة اسم، تشغيل، معرفات السيناريو
- المرحلة الحالية وحالة دورة الحياة
- أهداف الإرسال
- سجل الزناد، سجل تقييم البوابة، سجل القرار
- حزم، تقديمات، ونصوص استدعاء الأدوات
F:crates/decision-gate-core/src/core/state.rs L357-L394
حالة دورة التشغيل هي تعداد مغلق: active, completed, failed. F:crates/decision-gate-core/src/core/state.rs L72-L85
تدفق تنفيذ طبقة التحكم
محرك مستوى التحكم ينفذ انتقالات السيناريو، يقيم الأدلة، ويسجل القرارات. يحتفظ بحالة التشغيل بعد الانتقالات الرئيسية ويستخدم سياسات الثقة/المرجعية المكونة في وقت التشغيل. F:crates/decision-gate-core/src/runtime/engine.rs L153-L178 F:crates/decision-gate-mcp/src/tools/router.rs L2029-L2066
تشغيل متاجر الحالة
تخزين في الذاكرة
تخزين الذاكرة مصمم للاختبارات والعروض التوضيحية. إنه ينفذ RunStateStore مع خريطة محمية بواسطة قفل. F:crates/decision-gate-core/src/runtime/store.rs L53-L127
متجر SQLite
تقدم وحدة تخزين SQLite لقطات دائمة:
- كل حفظ يخزن JSON قياسي بالإضافة إلى هاش.
- يتحقق من سلامة تجزئة التحميل وتوافق المفتاح.
- يتم تتبع الإصدارات لكل تشغيل، مع إمكانية تقليم الاحتفاظ الاختياري.
- Mutations (
save+register) enqueue into a bounded deterministic writer وقت التشغيل ويتم الاعتراف بها فقط بعد الالتزام بالمعاملة الدائمة. - Writer runtime drains micro-batches (
batch_max_ops,batch_max_bytes,batch_max_wait_ms) وينفذ معاملة دائمة واحدة لكل دفعة. - Read paths use a separate read-connection pool (
read_pool_size) under WAL, تقليل تداخل القراءة/الكتابة مع الحفاظ على دلالات الفشل المغلقة.
F:crates/decision-gate-store-sqlite/src/store.rs L540-L640
يدعم تكوين التخزين وضع WAL، وضع المزامنة، مهلة الانشغال، حدود الاحتفاظ، عناصر التحكم في قائمة الكتاب، حدود الدفعات، وحجم مجموعة القراءة. F:crates/decision-gate-store-sqlite/src/store.rs L135-L156
تكوين MCP
تقوم طبقة MCP باختيار نوع المتجر من خلال تكوين run_state_store. F:crates/decision-gate-config/src/config.rs L1523-L1582
مرجع متقاطع لكل ملف
| المنطقة | الملف | الملاحظات |
|---|---|---|
| مواصفات السيناريو + التحقق | crates/decision-gate-core/src/core/spec.rs | هيكل السيناريو القياسي + الثوابت. |
| نموذج حالة التشغيل | crates/decision-gate-core/src/core/state.rs | حالة التشغيل + سجلات إضافية فقط. |
| محرك مستوى التحكم | crates/decision-gate-core/src/runtime/engine.rs | تنفيذ وتدفق القرار. |
| دورة حياة أداة MCP | crates/decision-gate-mcp/src/tools/router.rs | تعريف السيناريو/بدء/التالي/إرسال/تحفيز/حالة. |
| تخزين في الذاكرة | crates/decision-gate-core/src/runtime/store.rs | تنفيذ تخزين اختباري/حتمي. |
| تخزين SQLite | crates/decision-gate-store-sqlite/src/store.rs | تخزين دائم مع تحقق من التجزئة + الاحتفاظ. |
| إعدادات التخزين | crates/decision-gate-config/src/config.rs | اختيار تخزين حالة التشغيل + التحقق. |