الوثائق

المحرّر المرئي

صمّم pipeline بالسحب والإفلات، مع التحقق من العقود في أبكر مرحلة ممكنة.

الـpipeline في betool هو رسم بياني من العُقد تجمّعه في المحرّر المرئي. ويعلن كل نوع عقدة على جانب الخادم عن تهيئته وعن المفاتيح التي يُنتجها؛ ويتحقّق المحرّر من الرسم البياني ومن التهيئة قبل أن يسمح بنشره.

بنية الـpipeline

[Start]──▶[agent]──▶[router]──┬──▶[agent]
                              └──▶[webhook_action]
  • تُنشأ عقدة Start تلقائيًا مع النموذج؛ وهي تحمل المستقبِلات (قنوات الإدخال) التي تُشغّل الـpipeline. ويمكن لعقدة Start واحدة أن تعلن عن عدّة مستقبِلات.
  • تقرأ كل عقدة لاحقة المفاتيح التي أنتجتها العُقد السابقة في سياق التنفيذ.
  • يُنشئ الموجِّه (router) أو المرشِّحات فروعًا؛ ويترك كل تنفيذ أثرًا يمكن الاطّلاع عليه.

المفاهيم الأساسية

مفتاح التدفّق

الـمفتاح قطعة بيانات مُسمّاة تتدفّق بين العُقد. مثلًا: يمكن لعقدة agent أن تكتب مخرجها تحت exchange.intent، وتختبر عقدةٌ لاحقة (مرشِّح، موجِّه) هذا المفتاح.

ما تُنتجه العقدة يعلنه عقدها، بشكلين:

  • مفتاح ثابت (fixed_key) — هو نفسه دائمًا، يحدّده نوع العقدة (مثلًا input.entry_kind لعقدة Start).
  • مفتاح قابل للتهيئة (configurable_key) — يُختار في تهيئة العقدة (مثلًا مفتاح مخرج الوكيل).

أما ما تقرأه العقدة فيُضبط في تهيئتها (الحقل الذي يختبره المرشِّح، مدخلات الوكيل…).

العقد (Contract)

يعرض كل نوع عقدة عقدًا مُعلَنًا على جانب الخادم: حقول تهيئته (النوع، القيم المسموح بها، الحقول الإلزامية، القيم الافتراضية) والمفاتيح التي يُنتجها. ويعتمد المحرّر على هذا العقد لبناء لوحة التهيئة والتحقق ممّا تُدخله.

التهيئة

للعقدة أيضًا معاملات ثابتة (تهيئتها) — بالنسبة إلى عقدة agent مثلًا: دورها، ومهمّتها، وأدواتها، ونموذج LLM الخاص بها.

الأسرار

الحقول التي يُعلنها عقد عقدةٍ أو مستقبِلٍ سرّية (سرّ HMAC لـwebhook وارد، رمز أو كلمة مرور لاستدعاء HTTP، رمز وصول لصفحة Page، سرّ لـpipeline فرعي…) لا تُعاد أبدًا كنصّ صِرف بعد حفظها: لا إلى المحرّر، ولا عبر الـAPI، ولا إلى أدوات MCP والوكلاء الذين يقرؤون pipeline، ولا في الاقتراحات.

في المُفتِّش، يُظهر مثل هذا الحقل «•••••• محفوظ — اكتب للاستبدال»:

  • إذا تُرك فارغًا، يحتفظ بالسرّ المحفوظ؛
  • الإدخال يستبدله؛
  • زرّ إزالة يمحوه (بالنسبة إلى سرّ HMAC، يُعطَّل حينها التحقّق من التوقيع).

نسخ عقدة ولصقها أو تكرارها لا ينسخ أسرارها: أعِد إدخالها في النسخة.

إنشاء pipeline

  1. النماذج ← جديد — في betool، يحمل النموذج الـpipeline الخاص بك.
  2. تُفتَح لوحة العمل بعقدة Start. هيّئها لاختيار قناة الإدخال أو القنوات.
  3. أضِف العُقد بزرّ إضافة عقدة عند تمرير المؤشّر فوق رابط، أو بالنقر بالزرّ الأيمن على عقدة (إضافة عقدة قبل / بعد)، ثم اختر نوعها من كتالوج الوحدات (بحث بالاسم).
  4. اربط العُقد ببعضها. الـpipeline شجرة: لكل عقدة أصل واحد فقط.
  5. انقر على عقدة لفتح تهيئتها في المُفتِّش.
  6. تشغيل اختبار — نفّذ النسخة المنشورة على حمولة تُدخلها بحرّية، في الوضع الحقيقي أو في وضع المحاكاة (تُتخطّى العُقد ذات الأثر الخارجي).
  7. نشر — رسالة commit إلزامية؛ يُتحقَّق من الـpipeline، ثم تصبح النسخة الجديدة هي التي يُنفّذها وقت التشغيل.

إدارة النسخ (Versioning)

كل نشر يُنشئ نسخة. ومن الإصدارات، يمكنك:

  • مقارنة نسخة بالحالة الحالية (العُقد والروابط المضافة، المحذوفة، المعدَّلة).
  • إعادة تحميل نسخة في المحرّر (تُعاد كتابة المسوّدة، دون نشر).
  • إعادة نشر نسخة سابقة (rollback).

ومن السجلّ، يمكن أيضًا إعادة تشغيل تنفيذ سابق صادر عن مستقبِل على النسخة المنشورة، مع حمولة معدَّلة عند الاقتضاء، وفي وضع المحاكاة إذا لزم الأمر.

التحقق

عند النشر، يفحص مُدقِّقٌ الرسم البياني:

  • حاجب — دورة في الرسم البياني؛ عقدة لها عدّة أصول؛ مخرج إلزامي غير موصول (جسم حلقة foreach، أبناء parallel، كل مسار مُعلَن لـrouter)؛ عدد غير صحيح من عُقد Start؛ أخطاء خاصة بنوع عقدة (مثلًا دور أو مهمّة وكيل غير موجودين).
  • تحذير (غير حاجب) — عقدة لا يمكن الوصول إليها من Start؛ تباين تهيئة قائمة مع عقد عقدتها.

عند كتابة تهيئة (المحرّر، المقترحات، الـAPI)، تُرفَض القيمة الخارجة عن القيم المسموح بها أو الحقل الإلزامي المفقود، مع التصحيح المتوقَّع.

نتيجةً لذلك، فإنّ الـpipeline المنشور قد اجتاز هذه الفحوص البنيوية. وتعود الأخطاء المتبقّية إلى التنفيذ (فشل استدعاء API طرف ثالث، نتيجة تحليل غير متوقّعة).