DOCS / actions
الإجراءات وحدودها
ما الذي يُسمح لدلال بتنفيذه، وأين تقف الموافقة اليدوية.
ثلاث درجات، لا اثنتان
كل أداة تُعرّفها بدرجة أثر واحدة، وهي التي تقرّر ما يحدث عند استدعائها:
- read
- قراءة فقط — حالة طلب، مخزون، رصيد. تُستدعى بحرّية أثناء الاستناد.
- write
- تغيير قابل للتراجع: تحديث عنوان، إضافة ملاحظة. تحتاج سياسة تسمح بها.
- irreversible
- استرداد مبلغ، إلغاء طلب. لا تُنفَّذ أبداً بلا موافقة بشرية.
السياسة هي الصلاحية
دلال لا ينفّذ شيئاً لأنّه يبدو مناسباً. المرحلة POLICY تربط ما فهمه من العميل بسياسة نشطة واحدة، وتحمل السياسة الأدوات المسموحة وسقف المبلغ.
{
"intent": "refund_request",
"allowed_tools": ["refund_order", "get_order"],
"max_refund_usd": 50
}وحالتان تُصعِّدان لا تُخمَّنان: ألّا توجد سياسة مطابقة، وأن توجد أكثر من واحدة. الثانية تفاجئ الناس عادةً — لكنّ سياستين نشطتين لنفس النيّة تعارضٌ في الإعداد عندك، واختيار إحداهما بالنيابة عنك هو تخمين بصلاحية.
الموافقة اليدوية
حين يقترح الرد أداة irreversible، لا تُستدعى الأداة. يُكتب صفّ موافقة يحمل الأداة ومعاملاتها المقترحة ومعرّف المحادثة، وتنتهي الحلقة عند awaiting_approval.
وحين تعتمد، تُستدعى الأداة بالمعاملات المحفوظة نفسها لا بمعاملات تُعاد صياغتها. وإن رفضت، لا يُستدعى شيء ويصل العميل موظفاً.
متى يُعتبر الإجراء تمّ
ليس عند رد 200. المرحلة VERIFY_CLOSURE تعيد قراءة نظامك للتأكّد أنّ ما كُتب تغيّر فعلاً؛ فإن لم تتأكّد، تُصعَّد المحادثة ولا تُحتسب حلّاً.
وهذا يمسّ الفاتورة مباشرةً: المحادثة تُحتسب مدفوعة فقط إن أُغلقت مؤكَّدة وبلا تدخّل بشري. راجع متى ينسحب دلال.