الرسالة
البرامج حتمية ولكنها صارمة. البشر مرنون ولكنهم غير موثوقين. الوكلاء يرثون المرونة دون أن يرثوا الضمانات الرسمية، وتسمح الأنظمة الحديثة لهم بشكل متزايد بالتصرف على أي حال.
الفشل هيكلية. يخلط سير العمل الوكالي بين وضعين لا ينتميان إلى نفس الفاعل: التفكير التوليدي، الذي يقترح خططًا وتفسيرات ورموزًا ويدعي احتمالات؛ والالتزام التشغيلي، حيث يجب على النظام المحيط أن يقرر ما إذا كان العمل مكتملًا، وما إذا كانت الانتقالة صالحة، وما إذا كان يمكن محاولة تأثير ما. بدون حدود خارجية، فإن نفس الفاعل العشوائي الذي قام بالعمل يعلن أيضًا أن العمل قد نجح.
يضع Decision Gate حدودًا حتمية بين الاقتراح والقبول. يعلن سير العمل عما يجب أن يتم تأسيسه. يتم تقديم الأدلة أو الحصول عليها، ويتم قبولها بموجب سياسة واضحة، وتقييمها وفقًا لشروط محددة. يتم المضي قدمًا في المطالبة أو الانتقال فقط عندما يتم استيفاء علاقة الإثبات المعلنة. إذا كانت الالتزامات غير صحيحة، أو غير محلولة، أو مشوهة، أو غير متاحة، أو قديمة، فإن المطالبة لا تصبح تقدمًا مقبولًا.
قد يظل الممثل عشوائيًا. لا يجب أن يكون القبول كذلك.
الهلوسة هي جزء فقط من المشكلة
“الهلاوس” عادةً ما تشير إلى مخرجات نموذج تكون خاطئة أو مصنوعة. في الأنظمة الوكيلة، الفشل المهم تجارياً يكون أوسع: الوكيل يؤكد أن شرطاً ما قد تم تحقيقه، والنظام المضيف يتقدم كما لو أن التأكيد كان حقيقة تشغيلية. “جميع الاختبارات ناجحة.” “الحالة المذكورة موجودة.” “اكتملت الهجرة.” “العميل مؤهل.”
هذه الإخفاقات ليست شيئًا واحدًا، ودمجها يدمر المعلومات اللازمة للتعافي بشكل صحيح. يمكن أن يكون الادعاء غير صحيح دلاليًا: تقرير الاختبار يظهر اختبارًا فاشلاً. يمكن أن يكون غير محسوم: لم يقدم أحد التقرير أبدًا. يمكن أن تكون الأدلة موجودة ولكن غير كافية: التقرير جاء من الجهة التي يتم فحصها عندما تتطلب السياسة مصدرًا مستقلًا. يمكن ملاحظة الغياب بشكل إيجابي: استعلام السجل الكامل يثبت عدم وجود سجل. ويمكن أن يفشل الفحص من الناحية التشغيلية: الملف لم يتم تحليله، المصدر انتهى وقته. كل واحد من هذه يستحق استجابة مختلفة، وفقط بعض منها هو خطأ النموذج.
تبدأ Decision Gate برفض الاختصار الذي يسبب الضرر: اعتبار إعلان الممثل الطليق كسلطة قبول.
ما يعنيه معرفة شيء ما
قبل أي آلة، سؤال: ماذا يتطلب الأمر لمعرفة أن “الاختبارات ناجحة” هو أمر صحيح؟
ليس هناك يقين بالمعنى الفلسفي. التحقق دائمًا نسبي لإجراء ما: عملية معينة، باستخدام أدلة معينة من مصادر معينة، تحت افتراضات محددة، أثبتت فرضية محددة في وقت محدد. تحتوي تلك الجملة على أجزاء تحمل الأعباء. غير المصدر وستحصل على حقيقة مختلفة. غير النطاق، أي التزام، أي حساب، أي سجل، وستحصل على حقيقة مختلفة. غير الوقت، وقد لا تحصل على حقيقة على الإطلاق.
تقوم معظم الأنظمة بتسوية هذا إلى قيمة منطقية وتفقد كل ما جعل القيمة المنطقية ذات معنى. يحتفظ Decision Gate بالهيكل. ادعاؤه محدد عمدًا: يمكنه تحديد ما إذا كانت إجراءً مسمىً، باستخدام أدلة مسماة بموجب سياسة مسماة، قد أسست فرضية مسماة. تعتمد مصداقية النتيجة على القانون، والأدلة، والسلطات التي أنتجتها، ويكون النظام صادقًا بشأن ذلك الاعتماد بدلاً من إخفائه خلف درجة ثقة.
يتضح أن هذا الادعاء المحدود هو بالضبط ما يحتاجه سير العمل الوكالي، لأن سير العمل لا يحتاج إلى حقيقة ميتافيزيقية. يحتاج إلى معرفة ما إذا كان يمكنه المتابعة.
شروط الكتابة
تعذر التحقق من التعليمات الغامضة، لذا فإن التحويل الأول هو من النثر إلى التزامات إثبات مكتوبة. “أضف خمسة اختبارات وتأكد من نجاحها” تصبح مجموعة مغلقة من الاقتراحات:
P1: new_test_count == 5
P2: required_test_result_count == 5
P3: all(required_test_status == PASSED)
P4: tested_commit_digest == proposed_delivery_commit_digest
Completion law: P1 AND P2 AND P3 AND P4
التحرك المهم ليس أن اللغة أصبحت حقيقة. بل هو أن جملة غامضة أصبحت مجموعة مغلقة وقابلة للتفتيش من الالتزامات التي إما أن تكون صحيحة أو لا تكون.
كل شرط يعلن عن مجال ملاحظة وعبارة محددة عليه، والمجالات مغلقة عن عمد: الأعداد الصحيحة، الأعداد العشرية الدقيقة، القيم البوليانية، السلاسل المحدودة، التواريخ، اللحظات، السجلات المغلقة. المقارنات التي تبدو تافهة تخفي دلالات حقيقية. هل 1 تساوي 1.0؟ هل “contains” تعني جزء من سلسلة أو عضوية مجموعة؟ هل الحقل الغائب مختلف عن الحقل null؟ هل التاريخ هو لحظة UTC أم يوم محلي؟ يتطلب Decision Gate القانون للإجابة على هذه الأسئلة قبل التقييم. يتم رفض العمليات غير الصالحة أو غير المتوافقة عند إنشاء الشرط؛ فهي لا تتسرب إلى وقت التشغيل وتظهر مرة أخرى كخطأ مريح.
المعنى، مفصول عن الاسترجاع
تعرف الحالة ما تعنيه الاقتراح: نطاقها، وموضوعها، وما هي الأدلة الكافية لها. إنها لا تحدد عمدًا أي واجهة برمجة تطبيقات (API) يجب استدعاؤها، أو أي ملف يجب قراءته، أو أي مزود يجب الوثوق به. هذه ارتباط منفصل وصريح: مسار اكتساب يصف كيف يمكن إنتاج ملاحظة لحالة.
تعتبر مسألة الفصل أكثر أهمية مما تبدو في البداية. “يتطابق الالتزام المختبر مع الالتزام الخاص بالتسليم” هو شرط ذو معنى واحد. قد تصل التجزئات من إيصال CI تم تقديمه بواسطة الحزام المستدعي، أو من بيان بناء موقع في مستند محلي، أو من تكامل مسجل مستقبلي يسترجعها مباشرة. لا يتغير الشرط عندما تتغير الأنابيب. يبقى القانون الدلالي مستقراً بينما يختلف الاستحواذ حسب النشر، وحسب حدود الخصوصية، وحسب بيئة العميل.
الأنظمة التي تدمج بين الاثنين - حيث تكون الحالة ببساطة استعلام مزود - لا يمكنها إجراء هذا التمييز، وهذا يكلفها: كل تغيير في مصدر البيانات يتحول بصمت إلى تغيير في المعنى.
الأدلة هي منتج، وليست نتيجة
الاختصار الشائع هو تصنيف الأدلة على سلم ثقة واحد. يرفض Decision Gate القياس. تحمل الأدلة مجموعة من الحقائق المستقلة: كيف دخلت إلى النظام، ما الشكل الذي تتخذه محتوياتها، من أو ماذا أنتجها، مما تم اشتقاقها، ما النطاق الدقيق الذي يتعلق به، متى تم ملاحظتها، ما الحمايات التي تغطي سلامتها، ومدى استقلالية مصدرها عن الفاعل الذي يتم التحقق منه.
لا تقلل هذه المحاور إلى رقم واحد. يمكن أن يكون للقيمة نزاهة قوية وانتعاش ضعيف. يمكن أن يكون المصدر موثوقًا ولكنه خارج النطاق. يمكن أن تكون الملاحظة المحلية جديدة ودقيقة ومع ذلك تخضع للوكيل الذي يدعم ادعاءه. يمكن أن تثبت التوقيع من وقع البايتات دون إثبات أن البيان صحيح. سياسة استخدام الأدلة لكل حالة تحدد التركيبة التي تكفي لهذا الادعاء في ذلك السياق - قد يقبل سيناريو التطوير تقرير اختبار الوكيل البرمجي الخاص به، بينما يتطلب سيناريو الإصدار إيصالًا مستقلًا مرتبطًا بالالتزام الدقيق. نفس البوليان لا يحمل نفس الدليل.
القبول ليس كافيًا أيضًا. تمر المادة أولاً بحدود القبول - محددة، موثقة، معادية بشكل افتراضي. ثم يتم تقييم الأدلة المقبولة وفقًا لسياسة الحالة، وكل شرط مطلوب من التقييم يحل بدقة بطريقة واحدة:
| Resolution | Meaning |
|---|---|
| Present | قيمة مكتوبة تلبي السياسة متاحة. |
| ObservedAbsent | ملاحظة كاملة معترف بها تثبت الغياب في كون معلن. |
| Missing | التقييم ليس لديه أي مرشح لهذا الهدف على الإطلاق. |
| Insufficient | توجد مرشحات، لكن لا يوجد أي منها يلبي سياسة الاستخدام. |
تمنع التمييزات الأخطاء المحددة والمألوفة. عدم استجابة واجهة برمجة تطبيقات سجلات المحكمة ليس دليلاً على عدم وجود القضية. بحث لم يكتمل ترقيم صفحاته لا يمكن أن يثبت الغياب. “غير موجود” و “لم ينظر أحد” هما حالتان مختلفتان، ونظام يخلط بينهما سيبالغ في النهاية.
صحيح، خطأ، غير معروف
يؤدي استخدام دالة منطقية على دليل صالح إلى إنتاج واحدة من ثلاث نتائج دلالية. صحيح: الدليل المقبول يفي بالدالة. خاطئ: يتعارض مع الدالة. غير معروف: الدليل المقبول لا يحدد الدالة بموجب السياسة المعلنة.
تجبر الأنظمة الثنائية على أحد خطأين. إذا تم اعتبار العمل غير المحلولة كخطأ، فإنك تفقد التمييز بين “المتناقض” و”لم يثبت بعد” — يعاقب سير العمل على البيانات المفقودة كما لو كانت فشلاً. إذا تم اعتبار العمل غير المحلولة كصحيح أو “أفضل جهد”، فإن التقدم غير المدعوم يتجاوز الحدود. تسمح الدلالات ذات القيم الثلاثة لسير العمل بالاحتفاظ بأمان دون التظاهر في أي اتجاه. يمكن للوكيل الحصول على مزيد من الأدلة، إصلاح العمل، أو التصعيد، مع العلم تمامًا بأي التزام لا يزال غير محلول.
الـ unknown له معنى دقيق، وليس مجرد سلة مهملات. إنه نتيجة دلالية مشتقة من أدلة مقبولة بشكل صحيح. فشل التحليل ليس unknown. انتهاء المهلة ليس unknown. شاهد مزور، رفض تفويض، حمولة مشوهة - هذه هي حالات فشل تشغيلية وفشل في النزاهة، محفوظة في عائلاتها المخصصة، لأنها تتطلب معالجة مختلفة: إعادة المحاولة، إنذار، تدقيق، رفض. نظام يغسل فشله إلى unknown قد دمر بهدوء تصنيف فشله الخاص.
جبر المتطلبات
تقرر الشروط الفردية نادراً أي شيء مثير للاهتمام. تتكون المتطلبات منها:
ALL(tests_passed, coverage_met, NOT critical_vulnerability_present)
ANY(primary_registry_match, two_independent_attestations)
QUORUM(2 of: ci_passed, security_scan_passed, reviewer_approved)
تقييم المتطلبات هو تركيبي وحتمي، ويحتفظ بالنتائج غير المحلولة: تظل المتطلبات المتعلقة بالمدخلات True وFalse وUnknown غير معروفة عندما لا يمكن للمدخلات أن تقررها بعد، بدلاً من أن تتجه افتراضيًا في أي اتجاه.
تمييز هيكلي واحد يقوم بعمل حقيقي هنا. اكتمال المرحلة - هل تم إنجاز هذه الوحدة من العمل؟ - قد يستخدم منطقًا غنيًا على نتائج الشروط، بما في ذلك النفي القانوني، لأن حقيقة الدليل ليست أحادية: يمكن اكتشاف ثغرة. طوبولوجيا سير العمل - أي المراحل يمكن أن تفتح بعد ذلك؟ - مقيدة بمتطلبات أحادية على التقدم المكتمل، لأن التقدم يجب ألا يتلألأ: بمجرد أن تكون المرحلة جاهزة لأن متطلباتها السابقة اكتملت، لا يمكن أن يجعلها أي تقدم غير ذي صلة غير جاهزة. منطق غني داخل مرحلة؛ حركة للأمام فقط من خلال سير العمل.
التقدم هو رسم بياني
سير العمل الحقيقي ليست قوائم. المهام تتفرع وتعيد الانضمام؛ الإصدار يحتاج إلى اثنين من ثلاثة مراجعات؛ المكونات غير المرتبطة تسير بالتوازي. نموذج Decision Gate يصور طوبولوجيا السيناريو كرسمة اعتماد نهائية — سلاسل، تفرعات، ماسات، جذور متعددة، مكونات غير متصلة — مع استعداد المرحلة المستمد من التقدم المكتمل المقبول بموجب قانون المتطلبات الأحادية.
كل مرحلة تكون في واحدة من أربع حالات بالضبط: غير جاهزة، حيث إن متطلباتها لم تتحقق بعد؛ جاهزة ولكن غير مفتوحة؛ مفتوحة وغير مكتملة؛ أو مكتملة، مما يعني أن قانون اكتمالها تم تقييمه على أنه صحيح في طفرة مقبولة. فتح مرحلة لا يعين أي وكيل، ولا يحتفظ بشيء، ولا يلغي شيئًا - يبقى جدولة العمل خارجًا، حيث تنتمي. وتنتهي السيناريوهات فقط من خلال قانون اكتمالها المعلن صراحةً على المراحل المكتملة، وليس من خلال حادث هيكلي مثل “تم الوصول إلى العقدة الأخيرة في المخطط.”
الرسم البياني هو ما يمنع السرد السلس للتقدم من أن يصبح مؤشر سير عمل ضمني. يمكن للنظام دائمًا أن يجيب، من الحقائق المقبولة بدلاً من النص: أي المراحل مؤهلة بشكل مثبت الآن؟
قيم أولاً، اقبل ثانياً
التقييم نقي. يقوم المقيّم باستهلاك القانون المعتمد، والتقدم المقبول، ولقطة الأدلة المعترف بها، ولا يقوم بأي إدخال/إخراج - لا قراءة ملفات، لا ساعة، لا شبكة، لا تخزين. من تلك المدخلات يستنتج مرشحًا: ربما دلتا إكمال وحدود جديدة، ربما محاولة خاطئة أو غير معروفة لا تغير شيئًا.
لم يتقدم المرشح بعد. كل عملية تشغيل لها تاريخ مقبول واحد فقط برأس حالي دقيق، ولا يلتزم المرشح إلا إذا كان الرأس الذي تم اشتقاقه منه لا يزال هو الرأس. قد يتسابق عاملان لتمديد نفس التشغيل؛ أحدهما يلتزم، ومرشح الآخر قديم — ليس فاسدًا، وليس مطبقًا جزئيًا، بل مشتق من حالة ملغاة، وقابل لإعادة الاشتقاق. تؤدي التقديمات المتكررة لنفس العملية إلى إعادة تشغيل النتيجة الأصلية بدلاً من التطبيق المزدوج. عندما تكون نتيجة الالتزام غير معروفة حقًا — قد يكون التخزين قد التزم بينما كانت الاستجابة مفقودة — فإن البروتوكول يبلغ عن تلك الحالة بصدق بدلاً من التخمين.
الفصل هو ما يجعل النظام بأكمله قابلاً للتدقيق: التقييم هو دالة حتمية يمكنك إعادة تشغيلها، والقبول هو نقطة تسلسل يمكنك فحصها.
القبول ليس له تأثير
قد تحمل الطفرة المقبولة نية: إرسال المبلغ المسترد، نشر الأثر، نشر الإصدار. يثبت القبول أن النية تنتمي إلى مراجعة مقبولة من التشغيل وهي مؤهلة للإرسال. لا يثبت أن النظام الخارجي قد استلمها أو نفذها أو نفذها مرة واحدة بالضبط. تعيش الآثار خارج الحدود، في أنظمة لها أنماط فشل خاصة بها، والتظاهر بخلاف ذلك هو كيف تأتي سير العمل لتؤمن بمبالغ مستردة لم تحدث أبداً.
تنطبق نفس النزاهة على السجل نفسه. يتم إعادة التحقق من الحالة الدائمة عند التحميل بدلاً من الوثوق بها لأن النظام كتبها سابقًا. يمكن إعادة التحقق من تاريخ التشغيل المصدر بشكل مستقل - يتم إعادة تجزئة عناصره، وإعادة تقييمه مقابل الأدلة المسجلة. وتبقى مطالبات التحقق منفصلة عن عمد: نزاهة السجل، أصالة المصدر، حداثة الحزمة، وصدق الأدلة الأصلية هي خصائص مختلفة، تم تأسيسها بوسائل مختلفة. علامة التحقق الخضراء التي تجمع بينها هي علامة تحقق خضراء لا يمكنك الوثوق بها.
ما الذي لا يحله هذا
تعمل Decision Gate على تعزيز سير العمل ضد المطالبات غير المدعومة والزائفة التي يمكن التعبير عنها كالتزامات إثبات صريحة. تحتوي تلك الجملة على حواف، وهي تحمل الحمولة.
لا يقوم بتفكيك النثر العشوائي تلقائيًا إلى الاقتراحات الصحيحة؛ المؤلف لعملية العمل، أو أداة سابقة، يحدد ما هو مهم. لا يجعل الأدلة الضعيفة قوية: ينتج عن predicate مكتوب بشكل كسول أو سياسة دليل متساهلة بالضبط علاقة الإثبات التي يعلنها، ويتم التحقق منها بدقة. لا يرى الاستدلال المخفي، ولا يحكم في التفسير المتنازع عليه، ولا يكتشف الخداع خارج الحقائق المضمونة التي تسميها السياسة. يمكن استجواب مصدر بصدق ومع ذلك يكون خاطئًا؛ تحدد السياسة مقدار الاستقلال والنزاهة التي يتطلبها فئة الادعاءات.
ما يتم إزالته هو أضيق وهيكلية: طلاقة الممثل كسلطة حاسمة. يجب أن تنتج كل مطالبة تختار سير العمل حجبها أدلة تتجاوز سياسة معلنة، وكل قبول يترك سجلاً بالضبط لما تم تأسيسه، من ماذا، تحت أي قانون.
أين يتركنا هذا
تم تحديد الآلية بشكل رسمي؛ تم تأسيس خصائصها الدلالية والبروتوكولية؛ توجد تنفيذات عملية، ونماذجها الرسمية وحدودها موثقة بدلاً من أن تُهمل. ما يغيره اعتمادها عن سلوك الوكلاء عبر النماذج، والأدوات، والمجالات هو برنامج تجريبي مفتوح - هذا النظام هو الأداة التي تجعل السؤال قابلًا للاختبار، وليس ادعاءً بأن الإجابة موجودة بالفعل.
سيستمر الوكلاء في اقتراح الواقع بطلاقة. الأنظمة من حولهم تتخذ القرار بشأن ما إذا كانت الاقتراحات ستصبح حقائق. Basics تعلم المفردات الأساسية، وApplications تظهر الحدود داخل المنتجات الحقيقية، والمستندات تحمل المعالجة الرسمية الكاملة: جبر المتطلبات، نموذج الرسم البياني، معايير الأدلة، وإثباتاتها.
(بشكل ما) أكثر جدية مما يوحي به الشعار: هذا هو نفس النظام الموصوف في علامة التبويب العادية، الذي تم شرحه من قبل الشخص الذي بناه. سأقوم بتجاوز المواد التمهيدية حول ما هي الهلوسات، وما إذا كانت الحقيقة الموضوعية موجودة، والطبيعة الأساسية للواقع - أترك هذه القضايا البسيطة كتمارين للقارئ.
المستندان العادي وغير الرسمي إسقاطان أُلِّفا بصورة مستقلة. يمتلك كل وضع عناوينه ومواده الختامية، ويقيّد العارض كل مرساة عنوان بنطاق وضعها كي لا يتعارض المخططان.
الرسالة
تتخيل نماذج اللغة الكبيرة. التخيلات سيئة. يمكن تحليل الادعاءات “المنطقية” في الجمل إلى أجزاء يمكن التحقق من صحتها. يوفر هذا طريقة تجريبية لاكتشاف أنواع معينة من التخيلات وتقوية سير العمل الوكيلة ضد الادعاءات الكاذبة بالاكتمال. النهاية.
الإصدار الأطول قليلاً يعتمد على ملاحظة واحدة: البرامج سريعة وحتمية، البشر بطيئون ويمكنهم التفكير، نماذج اللغة الكبيرة أسرع من البشر وتقارب التفكير — لكنها ليست حتمية. يجب أن يكون هناك شخص في تلك المجموعة هو البالغ في اللحظة التي يصبح فيها الادعاء قرارًا، ويجب أن يكون على الأرجح هو المشارك الذي لا يمكن إقناعه بأي شيء.
الهلوسة هي جزء فقط من المشكلة
في عام 2023، قدم المحامي ستيفن شوارز طلبًا في قضية ماتا ضد أفيانكا، إنك. (S.D.N.Y.) مستشهدًا بست قضايا قضائية تم إنشاؤها بواسطة ChatGPT. لم يكن أي منها موجودًا. واحدة - فارغيس ضد خطوط الصين الجنوبية، إنك.، 925 F.3d 1339 (الدائرة الحادية عشرة، 2019) - كانت متسقة داخليًا بما يكفي لتتضمن استشهادات بقضايا إضافية لم تكن موجودة أيضًا. عندما طلب شوارز من ChatGPT التحقق من القضية، أكد أنها حقيقية. وقد تم فرض عقوبة عليه من قبل المحكمة.
لاحظ ما الذي فشل هنا بالفعل. ليس فقط أن النموذج اخترع حالة؛ بل إن سير العمل قبل تأكيد النموذج كتحقق. الادعاء “هذه الحالة موجودة” يمكن التحقق منه — case_records.count("Varghese v. China Southern") != 0 هو استعلام قاعدة بيانات، وليس ندوة فلسفية. الادعاء الضمني، “وهو يدعم حجتي”، هو ادعاء مختلف وأصعب. دمج الاثنين هو كيف تنتهي بشرح نفسك لقاضٍ.
ما يعنيه معرفة شيء ما
اعتبر مخرجات LLM المحتملة: “السماء زرقاء” و “برشلونة هزمت ريال مدريد.”
تدعي الجملتان شيئًا عن طبيعة الواقع. قد يلاحظ المتعالم، “تجعل الحرائق البرية السماء حمراء”، أو “ما هو الأزرق حتى”، والمتعالم مزعج ولكنه على حق: كل ادعاء صحيح بالنسبة لإجراء للتحقق منه. لذا دعنا نقوم فعليًا بتطبيق الإجراء على الثاني.
Claim: "Barcelona beat Real Madrid."
For this to be accepted, what would need to be true?
C1: a match between the two exists on the claimed date
C2: winner == 'FC Barcelona'
Acquisition: my harness queries the ESPN scores API and submits the
response as caller evidence. The policy requires the competition, the
date, and both team identifiers to match exactly -- "some match, at
some point, probably" does not clear the bar.
Observed (submitted as caller evidence):
match: 2025-05-11, La Liga
final_score: Barcelona 4 - 3 Real Madrid
C1 -> True. C2 -> True. Accepted.
Now tighten the claim: "Barcelona beat Real Madrid 6-0."
C3: final_score == (6, 0)
Observed: (4, 3)
C3 -> False. Rejected as stated. A 4-3 win is still a win; it is not
the claim that was made. Precision is the entire point.
يحافظ المثال المحلول عمدًا على بنية التفكيك والأدلة والحكم المستخدمة في هذا الشرح كله.
هذه هي الحيلة الكاملة، بشكل مختصر: أصبحت الجملة شروطًا، والشروط تلبي البيانات، والحكم تبعًا للبيانات بدلاً من ثقة النموذج.
شروط الكتابة
الآن بالنسبة للإصدار ذي الصلة تجارياً. تخيل أنك مطور ساذج، حسن النية، يريد تحسين قاعدة الشيفرة الخاصة به. قد تقول: “<insert coding agent name>، يرجى إضافة 5 اختبارات إلى هذا الملف والتأكد من أن جميعها تمر.” بعد تجاوز خطر طلب اختبارات تمر، نواجه على الفور عدة مشاكل:
- كيف نعرف أن الاختبارات قد أضيفت؟
- كيف نعرف أنه كان هناك خمسة منهم؟
- كيف نعرف أنهم نجحوا؟
يساعد التحفيز في ذلك. يمكنك تهديد LLM بالإساءة، أو وعد بوجود Skynet عكسي، أو استحضار نقص الرموز الكبير في 202X، وهكذا. مثل هذه التصرفات تحسن من الموثوقية - أو هكذا قيل لي.
بدلاً من ذلك، يمكننا تحويل الجملة إلى بيانات:
P1: new_test_count == 5
P2: all(required_test_status == PASSED)
P3: tested_commit_digest == delivery_commit_digest
وجود إجابة P1 يحل بشكل تافه الأسئلة 1 و 2، بينما P2 يحل السؤال 3، و P3 يحل السؤال الذي نسيت أن تسأله: تم على أي التزام؟ كل اقتراح له نوع، ونطاق، ولا يقبل أي تهاون في الأجواء. هل 1 تساوي 1.0؟ سؤال خاطئ — الشرط قد قرر بالفعل، قبل التقييم، نوع الرقم الذي يقبله.
المعنى، مفصول عن الاسترجاع
هنا تمييز يبدو متعجرفًا حتى ينقذك: ما تعنيه الحالة و من أين تأتي البيانات هما شيئان مختلفان. “الالتزام المختبر يتطابق مع الالتزام التسليمي” يعني نفس الشيء سواء كانت التجزئات تأتي من إيصال CI، أو بيان بناء موقع موقّع، أو متدرب مخلص جدًا. الحالة هي المعنى. مسار الاسترجاع هو أنابيب، مُعلن عنه بشكل منفصل، قابل للتبديل لكل نشر.
الأنظمة التي تدمج بين الاثنين تحصل على وضع فشل ممتع: قم بتغيير مزود البيانات الخاص بك، وقم بتغيير ما تعنيه فحوصاتك بصمت. نحن نفضل أن تكون معانيها تحمل الوزن.
الأدلة هي منتج، وليست نتيجة
الخطوة المفضلة في الصناعة هي إعطاء الأدلة رقم ثقة واحد واعتبار ذلك حوكمة. لكن الـ boolean مع قصة شعر جميلة لا يزال مجرد boolean. من أين جاء؟ من الذي سيطر على المصدر - هل كان، على سبيل المثال، نفس الوكيل الذي يتم تقييم واجبه المنزلي؟ ما مدى حداثته؟ ما الالتزام، الحساب، أو السجل المحدد الذي يتعلق به؟ التوقيع يثبت من وقع البايتات؛ لكنه لا يثبت أن البايتات تقول الحقيقة.
لذا فإن الأدلة هنا تحمل جميع تلك الحقائق بشكل منفصل، وتقول سياسة كل شرط أي تركيبة تكفي لذلك الادعاء. يمكن لدورة التطوير الخاصة بك قبول تقرير اختبار الوكيل الخاص. يمكن لبوابة الإصدار الخاصة بك أن تطلب إيصالًا مستقلًا مرتبطًا بالالتزام الدقيق. نفس البوليان، دليل مختلف، والنظام يرفض التظاهر بخلاف ذلك.
وعندما لا تكون هناك أدلة، يقول النظام كيف أنها غير موجودة: عدم النظر (Missing) يختلف عن البحث الكامل الذي يثبت الغياب (ObservedAbsent)، والذي يختلف عن “توجد مرشحات ولكن لا أحد يتجاوز السياسة” (Insufficient). انتهاء الوقت ليس أيًا من هذه؛ انتهاء الوقت هو الهاتف الذي يرن دون إجابة، وليس إجابة.
صحيح، خطأ، غير معروف
كل شرط محجوز يحل إلى True أو False أو Unknown، وUnknown هو الحمل الأساسي. يجب أن تقع الأنظمة الثنائية في أحد اتجاهين: اعتبار العمل غير المثبت False (ومعاقبة البيانات المفقودة كفشل) أو اعتباره True (وتمرير التقدم غير المدعوم). لا نقوم بحل البيانات المفقودة من خلال الكذب بثقة أكبر. Unknown تعني بالضبط: الأدلة الصالحة، المعترف بها بصدق، لا تقرر بعد هذا - لذا يبقى البوابة مغلقة.
ما ليس Unknown *هو *درج المهملات. فشل التحليل، انتهاء المهلة، الحمولة المزورة، ورفض الأذونات هي إخفاقات، يتم تصنيفها والاحتفاظ بها بشكل منفصل، لأنك تعيد المحاولة عند انتهاء المهلة وتقوم بتنبيه عند حدوث تزوير، ونظام يقوم بتصنيف كلاهما تحت “لا أهتم” في النهاية لن يقوم بأي منهما.
جبر المتطلبات
الحقائق الفردية نادراً ما تكون هي القرار. ALL و ANY و QUORUM هي الطرق لجعل عدة حقائق مشكلة للجميع: جميع الاختبارات ناجحة وتغطية متحققة ولا ثغرات حرجة؛ أي من تطابق السجل الأساسي أو شهادتين مستقلتين؛ اثنان من ثلاثة مراجعين.
قاعدة واحدة ذات أسنان: يمكن أن تكون المنطق داخل مرحلة ما غنية كما تشاء، بما في ذلك النفي — “لا توجد ثغرة حرجة موجودة” هو متطلب جيد تمامًا. المنطق الذي يدفع سير العمل للأمام هو أحادي الاتجاه فقط: بمجرد أن تكون المرحلة جاهزة لأن متطلباتها قد اكتملت، لا يمكن لأي تقدم في مكان آخر أن يجعلها غير جاهزة. يتحرك سير العمل الخاص بك مثل التاريخ: للأمام، بلا تراجع.
التقدم هو رسم بياني
تعمل الأعمال الحقيقية على التفرع والانضمام والتقدم بالتوازي؛ قائمة المهام التي تفهم التفرعات يجب ألا تتظاهر بأن السهم الأول اختار موظفًا. السيناريوهات هنا هي رسومات الاعتماد. المرحلة ليست جاهزة، جاهزة، مفتوحة، أو مكتملة، و”المكتملة” تعني أن قانون اكتمالها تم تقييمه على أنه صحيح في طفرة مقبولة - وليس أن وكيلًا قال ذلك بنبرة مبهجة.
أيضًا: الوصول إلى آخر مربع في الرسم البياني ليس نجاحًا. النجاح هو شرطه المعلن الخاص. الرسوم البيانية ليست عقودًا؛ العقود هي عقود.
قيم أولاً، اقبل ثانياً
التقييم هو دالة نقية: قانون موثق، أدلة مقبولة، نتيجة مرشحة. لا إدخال/إخراج، لا ساعة، لا شبكة - لا شيء يمكن لبيئة غير مستقرة تهريبه. ثم، بشكل منفصل، يحاول المرشح الالتزام برأس التشغيل الحالي بالضبط.
قد ينتهي عميلان بنفس المستقبل؛ لكن واحدًا فقط يمكنه جعله تاريخًا. مرشح الخاسر قديم - ليس فاسدًا، وليس مُطبقًا جزئيًا، بل مشتق من عالم لم يعد موجودًا، وسهل إعادة اشتقاقه. قدّم نفس العملية مرتين وستحصل على النتيجة الأصلية مُعاد تشغيلها، وليس استرداد مزدوج. وعندما يكون مصير الالتزام غير معروف حقًا - قد يكون التخزين قد التزم بينما كانت الاستجابة مفقودة - يُبلغ النظام بذلك بالضبط، بدلاً من اختيار أي إجابة تجعل لوحة المعلومات أكثر خضرة.
القبول ليس له تأثير
كتابة refund: true ليست، للأسف، نظامًا مصرفيًا. يمكن أن تحمل العملية المقبولة نية — إرسال الاسترداد، شحن الإطلاق — وتثبت القبول بالضبط أن النية تنتمي إلى التاريخ المقبول ويمكن إرسالها. سواء كانت معالج الدفع قد نقلت الأموال بالفعل هي قصة المعالج، مع أوضاع فشل خاصة به، يتم تتبعها بشكل منفصل. الأنظمة التي تخلط بين “قررنا” و “حدث” تنتهي بها الثقة الكبيرة بشأن الاستردادات التي لم يتلقها أحد.
نفس الانضباط للسجل نفسه: يتم إعادة التحقق من الحالة المخزنة عند التحميل، يمكن إعادة التحقق من السجلات المصدرة بشكل مستقل، و”السجل سليم”، و”المصدر كان موثوقًا”، و”الادعاء كان صحيحًا” تظل ثلاثة بيانات مختلفة تم تأسيسها بطرق مختلفة. ضوء أخضر واحد لكل ادعاء، لا خصومات بالجملة.
ما الذي لا يحله هذا
حان الوقت لنكون صادقين بشأن الحواف، حيث نريد توفير الرموز ولا نحب الكلام غير المجدي من أجل التأثير الكوميدي.
هذا لا يكتشف كل الهلوسات - فقط الادعاءات التي بذل شخص ما جهدًا للتعبير عنها كالتزامات إثبات. إنه لا يجعل المحددات السيئة جيدة: أعلن عن بوابة كسولة وسيتم فرضها بدقة لا تشوبها شائبة، ولكنها عديمة الفائدة. إنه لا يقرأ عقل النموذج، ولا يحل التفسير المتنازع عليه، ولا يكتشف كاذبًا اختارت سياسة أدلتك الوثوق به. القانون الفاسد، المفروض بشكل مثالي، لا يزال قانونًا فاسدًا.
ما يزيله هو الفشل المحدد الذي يستمر في الظهور في تقارير الحوادث: الفاعل الذي يقيم ادعاءه الخاص. لا يزال يتعين على المرء مواجهة الوكلاء الذين يحاولون إضعاف معايير النجاح، أو تجاهل البوابة تمامًا - لكن البوابة توفر المرجع الموضوعي الذي يجعل تلك التحركات مرئية، وهو ما لم تفعله النثر.
أين يتركنا هذا
باختصار، نحن نقوم بـ:
- مخرجات الرمز (نص) ->
- مطالبات منطقية يمكن هيكلتها (Decision Gate) ->
- استرجاع البيانات البرمجية (Decision Gate) ->
- تقييم المطالبات الحتمي (Decision Gate) ->
- إخراج البيانات (JSON) ->
- حلقة الوكيل
أحب التجريد، لذا هناك المزيد مما يمكنني قوله. ومع ذلك، فإن الربط بـ المستندات هو على الأرجح الخيار الأفضل من حيث قابلية القراءة.
دعني أعرف إذا كان بإمكاني توضيح أي شيء!
مايكل “يونغ بيزنيس” كامبل
الإلهامات
- HAWK. (2020). Counter Ops [فيديو رسمي]. يوتيوب.
- thrown. (2023). guilt [فيديو رسمي]. يوتيوب.
- thrown. (2023). on the verge [فيديو رسمي]. يوتيوب.