الالتباس بين الذاكرة والحالة
عندما ينسى الوكيل أن طلبًا قد تم تقديمه بالفعل، تكون الغريزة هي إضافة مخزن متجهات. هذا عادةً هو الإصلاح الخاطئ، لأن الإخفاق ليس في الاستدعاء، بل في السلطة.
في معظم المنتجات، تعني "الذاكرة" الاسترجاع عبر الأدوار السابقة: تضمين المحادثة، تضمين الاستعلام الجديد، سحب أقرب الأجزاء، ولصقها في نافذة السياق. هذه الآلية مفيدة حقًا لاستمرارية النبرة، وللمراجع التي ذكرها المستخدم قبل ثلاث جلسات، وللحقائق الخلفية التي تُعلم القرار. إنها مرشح ملاءمة احتمالي فوق كومة نصية تُضاف إليها فقط.
الحالة كائن مختلف. الحالة هي السجل الموثوق لما التزمت به المهمة: أي الخطوات نُفذت، أي الآثار الجانبية وقعت، أي الالتزامات لا تزال مفتوحة، أي الحقائق يُعتقد حاليًا أنها صحيحة وبأي دليل. للحالة ثوابت. إذا تم تقديم طلب، فالطلب موجود مرة واحدة بالضبط، ولا تغير أي كمية من التشابه الدلالي ذلك.
الاسترجاع يحسّن الاستدعاء. لا يمكنه فرض الثوابت. يمكن للمسترجع أن يُظهر الجملة "لقد قدمت الطلب 4471" ويمكنه بالمثل أن يفشل في إظهارها، أو أن يُظهر جملة قديمة تدّعي أن الطلب قد أُلغي. ثم يستنتج الوكيل بطلاقة فوق أي الشذرات فازت في مسابقة التشابه. لا شيء في المسار يمكنه أن يؤكد أن التزامًا حدث مرة واحدة بالضبط.
يتكرر النمط عبر الفرق: سير عمل يقوم أحيانًا بخصم مزدوج، أو إعادة إرسال بريد إلكتروني، أو إعادة فتح تذكرة مغلقة؛ جلسة تصحيح تنتهي إلى أن "الوكيل نسي"؛ اقتراح لتحسين جودة نموذج التضمين أو قيمة top-k. الفجوة الحقيقية هي سجل معاملات مفقود. يُطلب من التضمينات أن تؤدي وظيفة دفتر الأستاذ، ودفتر الأستاذ ليس مسألة تشابه.
ما الذي يجب أن تضمنه طبقة الحالة
طبقة الحالة ليست قاعدة بيانات باسم أجمل. إنها مجموعة من الضمانات التي يُسمح لبقية النظام بافتراضها. ثلاث منها الأهم.
اللاذاتية (Idempotency). إعادة تشغيل خطوة يجب ألا تكرر آثارها الجانبية. هذا يعني أن كل إجراء مرئي خارجيًا يحمل مفتاحًا مستقرًا مشتقًا من هوية المهمة وهوية الخطوة، ويتحقق المنفذ مما إذا كان ذلك المفتاح قد تم الالتزام به بالفعل قبل التصرف. يجب أن يكون التحقق والالتزام ذريين بالنسبة للإجراء، أو على الأقل مرتبين بحيث يكون الانهيار بينهما قابلًا للاسترداد. بدون هذا، تصبح إعادة المحاولات — التي تحتاجها كل بيئة تشغيل وكيل قوية — مصدرًا للفساد.
الترتيب. يجب أن يعرف الوكيل أي الالتزامات تسبق أيها. بعض التبعيات سببية (لا يمكنك الشحن قبل أن يتم الدفع)، وبعضها مجرد تسلسلي (لا يمكنك الإضافة إلى سجل قبل إنشائه). الترتيب هو ما يسمح لتشغيل مستأنف بتقرير ما لا يزال قانونيًا فعله. كيس من الحقائق المسترجعة لا ترتيب له؛ آلة الحالة لها ترتيب.

القابلية للاسترداد. يجب أن يستأنف تشغيل منهار من نقطة تفتيش، لا من البداية. هذا هو الضمان الذي يفصل العرض التوضيحي عن النظام. إذا كانت الطريقة الوحيدة للاسترداد هي إعادة تشغيل المسار بأكمله، فيجب أن تكون كل خطوة لاذاتية ويجب أن يتحمل كل نداء خارجي التكرار — وعمليًا، أحدها لن يفعل.
هذه الضمانات ليست مجانية. تضيف طبقة الحالة زمن كتابة، وصيانة مخطط، وعبء ترحيل في كل مرة يتغير فيها نموذج المهمة. كما أنها تقيد الوكيل: الخطوات التي كانت حرة الشكل سابقًا تصبح عمليات يجب أن تعلن مدخلاتها وآثارها. هذا القيد هو المقصود، لكنه تكلفة حقيقية، والفرق التي تتبناه باستخفاف ستجد نفسها تصارع المخطط بدلًا من المشكلة.
مخطط حالة أدنى
أصغر نموذج حالة مفيد يفصل ثلاثة أنواع من المعلومات التي عادةً ما تُدمج في كتلة سياق واحدة.
السياق العرضي (Episodic context) — ما قيل. الأدوار، مخرجات الأدوات، المستندات المسترجعة، الملخصات. هذا هو الموطن الطبيعي للتضمينات. حجمه كبير، وسلطته منخفضة، وهو فاقد بطبيعته.
الحقائق الدائمة — ما هو صحيح. كل حقيقة مُصدَّرة بإصدار، وتحمل مصدرًا، وتحمل طابعًا زمنيًا. لا تُكتب حقيقة فوق أخرى في مكانها أبدًا؛ إصدار جديد يحل محل القديم، ويبقى القديم قابلًا للقراءة. التناقضات صراعات يجب حلها، لا تحديثات صامتة.
الالتزامات المعلقة — ما هو مستحق. المهام المفتوحة، الردود المنتظرة، إعادة المحاولات المجدولة، الصراعات غير المحلولة. هذه هي مجموعة العمل التي يستشيرها الوكيل عند تقرير ما سيفعله بعد ذلك.
شكل ملموس، بمخطط شبه كودي:
facts(id, subject, predicate, value, source, observed_at, superseded_by)
obligations(id, task_id, kind, key, state, created_at, deadline)
episodes(id, task_id, role, content_ref, created_at)
حقل key على الالتزام هو مفتاح اللاذاتية. حقل superseded_by على الحقيقة هو رابط حل الصراع. حقل task_id يربط كل شيء بتشغيل واحد.
النصف الثاني من التصميم هو الإفصاح. يجب أن تكون قراءات وكتابات الحالة أدوات صريحة، لا آثارًا جانبية ضمنية لبيئة التشغيل. عندما يستدعي الوكيل state.read_facts(subject) أو state.commit(obligation_id, result)، تظهر تلك النداءات في التتبع إلى جانب كل نداء أداة آخر. هذا يجعل انتقالات الحالة قابلة للتدقيق والتصحيح بنفس الآليات المستخدمة لكل شيء آخر. كما يجعل نمط الإخفاق مرئيًا: تشغيل لا يلت

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