النمط المتكرر في الحوادث الأخيرة
عندما يفعل الوكيل شيئًا لم يُقصد به أبدًا، عادةً ما يُحمّل تقرير ما بعد الحادث المسؤولية للنموذج. لكن تقارير الحوادث أكثر تحديدًا. يستدعي الوكيل نقطة نهاية لم تكن يومًا جزءًا من مهمته، أو يعيد محاولة تعديل لأن الاستجابة لم تمنحه أي شيء آخر يفعله، أو يُعدّد مجموعة لأن واجهة البرمجة جعلت التعداد رخيصًا وغير موثّق. هذه ليست إخفاقات في الاستدلال. إنها إخفاقات في الواجهة.
ثلاثة أشكال تتكرر. أولًا، المدى: يلمس الوكيل موردًا كان يمكن الوصول إليه تقنيًا لكنه خارج نطاق تفويضه. كشف سطح الأداة فعلًا واسعًا، فاستخدمه الوكيل. ثانيًا، سلوك إعادة المحاولة: أمام واجهات بلا دلالات معدل، يعيد الوكيل المحاولة عند تلقيه فشلًا غامضًا، وغالبًا بعدوانية، لأن لا شيء في الاستجابة يخبره أن إعادة المحاولة خاطئة أو بلا جدوى. ثالثًا، التعداد: نقطة نهاية قائمة متساهلة بلا عقد ترقيم صفحات وبلا حدود نطاق تُقرأ لدى الوكيل كدعوة لاجتياز المجموعة بأكملها.
لماذا تفشل الأدوات المصممة للبشر مع الوكلاء
تتحمل واجهات البرمجة الموجهة للبشر الغموض لأن الإنسان يوفّر القصد والضبط حولها. الشخص الذي يقرأ نقطة نهاية متساهلة يفهم من السياق والعرف أن DELETE /items ليست دعوة لحذف كل شيء. يعرف أي المعاملات اختيارية عمليًا، وأي الأخطاء عابرة، وأي الأفعال موجودة لأسباب قديمة فقط. لا شيء من هذه المعرفة في الواجهة. إنها في الشخص.
يقرأ الوكيل السطح حرفيًا. كل فعل هو إجراء محتمل. كل معامل اختياري هو نقطة قرار. السلوك غير الموثّق ليس حافة ناعمة للآلة؛ إنه مسار غير مستكشف. حيث يرى الإنسان زاوية خشنة فيتجنبها، يرى الوكيل تفرعًا وقد يسلكه.
هذا هو اللاتماثل الجوهري. الواجهات البشرية متسامحة لأن الإنسان هو ضابط الحماية. لا يمكن لواجهات الوكلاء افتراض ذلك. يجب أن يحمل السطح نفسه القيود التي كان الإنسان سيوفرها من الخبرة. عندما لا يفعل، لا يكون الوكيل متهورًا؛ بل يكون متسقًا مع ما أُعطي.
ضوابط الحماية الموضوعة حول سطح واسع لا تصلح هذا. تعترض بعض الاستدعاءات وتفوّت أخرى، وتضيف طبقة سياسات لا يراها الوكيل. يظل الوكيل يستدل على السطح الأصلي. يصل التصحيح بعد القرار، لا قبله.

تصميم سطح أدوات موجه للوكلاء
يجب أن يكون سطح الأدوات للوكلاء ضيقًا وصريحًا وواصفًا لنفسه. ثلاث خصائص تؤدي معظم العمل.
فعل واحد لكل قصد، بمعاملات مطلوبة
اختصر الأفعال الواسعة إلى أفعال محددة القصد. بدلًا من update عام يقبل حقولًا عشوائية، اكشف set_delivery_address بعنوان مطلوب ومعرّف طلب مطلوب. بدلًا من list، اكشف list_open_orders_for_customer بمعرّف عميل مطلوب ومرشّح حالة مطلوب. مجموعة المعاملات ليست اقتراحًا؛ إنها القصد مكتوبًا.
هذا يغيّر ما يمكن للوكيل التعبير عنه. الفعل العام بحقول اختيارية يترك القصد ضمنيًا، والوكيل الذي يملأ حقولًا اختيارية يخمّن. الفعل الضيق بمعاملات مطلوبة يفشل مغلقًا: إذا لم يستطع الوكيل توفير معرّف العميل، لا يمكنه تنفيذ الاستدعاء، ويكون الفشل مقروءًا لا صامتًا.
حدود صارمة معبّر عنها في الواجهة
حدود المعدل والنطاق تنتمي إلى تعريف الأداة، لا إلى وثيقة سياسات لا يقرأها الوكيل أبدًا. إذا كان يمكن استدعاء أداة بعدد محدود على الأكثر لكل نافذة، فاذكر ذلك في المخطط وفرضه عند الحد. إذا كان يمكن قراءة مجموعة بصفحة واحدة على الأكثر في المرة، فاجعل ترقيم الصفحات إلزاميًا واجعل حجم الصفحة معاملًا مطلوبًا بنطاق محدود.
الآلية أهم من الصياغة. حد المعدل المفروض عند حدود الأداة يعيد إشارة منظمة يمكن للوكيل التصرف بناءً عليها. حد المعدل المفروض في مكان ما في المصب يعيد فشلًا غامضًا سيعيد الوكيل المحاولة عليه. الحد نفسه، موضوعًا في مكان مختلف، ينتج

يجب أن يخبر الخطأ الوكيل بما يجوز له فعله تاليًا، لا فقط بما فشل. 403 مجردة تدعو إلى إعادة المحاولات والتحسس. خطأ منظم يقول إن الإجراء غير مسموح لهذا الكيان، ويسمّي البديل المسموح، ويشير إلى ما إذا كانت الحالة دائمة، يمنح الوكيل مسارًا لا يتضمن التخمين.
{
"error": "scope_denied",
"message": "This principal may not modify billing details.",
"permitted": ["read_billing_summary"],
"retryable": false,
"next": "request_billing_change_approval"
}
حقل retryable وحده يزيل فئة كبيرة من حلقات إعادة المحاولة العدوانية. قائمة permitted تضيّق خطوة الوكيل التالية دون أن تتطلب منه استنتاج الحدود من الإخفاقات.
ما تكلفته
لا توجد نسخة من هذا مجانية، والتكاليف حقيقية.
صيانة سطح ثانٍ هي الأولى. إذا كان سطح الوكيل غلافًا رقيقًا فوق واجهة البرمجة البشرية، تتسرب الأفعال الواسعة ويصبح التمرين شكليًا. سطح الوكيل الحقيقي عقد منفصل بأفعاله الخاصة ومتطلبات معاملاته الخاصة ومفرداته الخاصة للأخطاء. هذا عمل مستمر، لا إعادة هيكلة لمرة واحدة.
الإصدارات هي الثانية. يجب إصدار سطح الوكيل بشكل مستقل عن السطح البشري، لأن الاثنين يتغيران لأسباب مختلفة وبمعدلات مختلفة. ويجب اختباره كعقد: ليس فقط أن الاستدعاءات تنجح، بل أن السطح يرفض ما يجب أن يرفضه وأن الرفض مقروء. مجموعة اختبارات تمارس المسار السعيد فقط لن تلتقط فعلًا واسعًا أكثر من اللازم.
رفض الأفعال القديمة هو الثالث، والأقل راحة. بعض الأفعال يمكن الوصول إليها تقنيًا من سياق تنفيذ الوكيل حتى عندما لا تكون جزءًا من سطحه. كشفها لأنها مريحة يعيد المشكلة الأصلية. المقايضة الصادقة هي أن تضييق السطح يعني أن بعض المهام التي كان الوكيل قادرًا تقنيًا على أدائها لم تعد متاحة له، وبعض تلك المهام مشروعة. تُدفع هذه التكلفة في القدرة لشراء القابلية للتنبؤ. الفرق التي تتخطاها تميل إلى إعادة اكتشاف نمط الحادث لاحقًا، بسطح أوسع وضوابط حماية أكثر حوله.
البديل هو الاستمرار في إضافة سياسات حول سطح لم يُصمم أبدًا ليُقرأ حرفيًا. هذا النهج يتوسع مع عدد الأشياء التي يمكن أن تسوء. تضييق السطح يتوسع مع عدد الأشياء التي يُقصد بالوكيل فعلها.
