الانتقال إلى المحتوى الرئيسي

التاريخ الكامل مع كل طلب

يستخدم وولف فيش نموذجًا عديم الحالة يُرسل السجل الكامل في كل طلب مع جميع مزودي السحابة. لا توجد جلسات دائمة ولا معرّفات خيوط ولا أي حالة محادثة على الخادم. كل استدعاء لواجهة برمجة التطبيقات قائم بذاته ومستقل. هذه ليست قيدًا — بل هي أهم خصائص هذه البنية.

كيف يعمل

في كل دور، يُجمّع الوكيل مصفوفة الرسائل الكاملة من الصفر:
  1. القشرة الجبهية الأمامية (Prefrontal) تبني موجّه النظام (الهوية، الوكلاء، الذكريات، سياق الجهاز، المهارات)
  2. النظام الشبكي المنشط (RAS) يصفّي الرموز ويوزّع الميزانية عبر فئات السياق
  3. الوكيل يحمّل سجل المحادثة كاملًا ويلحقه بالطلب
  4. المهاد (Thalamus) يوجّه الطلب إلى المزود النشط، الذي يحوّل الرسائل إلى التنسيق الأصلي للمزود ويرسل طلب HTTP واحدًا
يستقبل المزود كل ما يحتاجه دفعة واحدة — موجّه النظام، والأدوات، وسجل المحادثة بأكمله. ليس لديه أي ذاكرة عن الاستدعاءات السابقة.

داخل دور واحد

يُنفّذ الوكيل حلقة استخدام الأدوات: استدعاء النموذج، تنفيذ الأدوات، إلحاق النتائج، ثم استدعاء النموذج مجددًا. كل تكرار يُرسل مصفوفة الرسائل المتنامية مرة أخرى إلى المزود:
التكرار 1:  [system] + [history] + [latest user message]
التكرار 2:  [system] + [history] + [latest user message] + [tool call A] + [tool result A]
التكرار 3:  [system] + [history] + [latest user message] + [call A] + [result A] + [call B] + [result B]
يرى المزود سياقًا أكبر مع كل تكرار، لكنه لا يحتفظ بأي حالة بينها.

تنسيق الطلب الخاص بكل مزود

يستقبل كل مزود المحتوى المنطقي ذاته، محوّلًا إلى واجهة برمجة التطبيقات الأصلية الخاصة به:
المزودنقطة النهايةموجّه النظامنتائج الأدوات
DeepSeek/chat/completionsالرسالة الأولى في المصفوفةرسائل role: "tool" متوافقة مع OpenAI
Anthropic/v1/messagesحقل system منفصلمُدمجة في كتل محتوى بدور المستخدم
OpenAI/v1/chat/completionsالرسالة الأولى في المصفوفةرسائل role: "tool" مع tool_call_id
Ollama/api/chatمصفوفة رسائل مسطّحةتُحوَّل المستندات إلى نص بديل
التحويل غير مرئي لبقية النظام. يأخذ المهاد تنسيقًا قانونيًا واحدًا ويُنتج طلبًا خاصًا بالمزود.

التخزين المؤقت للموجّهات (Prompt Caching)

قد يبدو إرسال السجل الكامل في كل استدعاء مكلفًا. لكنه ليس كذلك — بفضل التخزين المؤقت للموجّهات.

Anthropic

يستخدم مزود Anthropic التخزين المؤقت للموجّهات مع ثلاث نقاط cache_control:
  1. موجّه النظام — سياق القشرة الجبهية كبير ومتطابق تقريبًا عبر الأدوار
  2. تعريفات الأدوات — مستقرة خلال المحادثة
  3. بادئة سجل المحادثة — دور المستخدم قبل الأخير، الذي يُحدّد الحد الفاصل بين السجل المستقر والتبادل الأخير
عند الاستدعاء الأول، تكتب Anthropic البادئة إلى مخزن مؤقت على الخادم (مدة بقاء 5 دقائق تُجدَّد مع كل استخدام). تقرأ الاستدعاءات التالية من المخزن بدلًا من إعادة المعالجة، مما يقلل تكلفة رموز الإدخال بنحو 90% وزمن أول رمز بنحو 80% على الجزء المخزَّن. المخزن مؤقت ومجهول الهوية — لا يحتوي على هوية جلسة وينتهي تلقائيًا إذا أصبحت المحادثة خاملة.

OpenAI

تطبّق OpenAI تخزينها المؤقت التلقائي للبادئات بشفافية (خصم 50% على الإدخال عند تطابق المخزن). لا حاجة إلى تفعيله.

DeepSeek

يطبّق DeepSeek تخزينه المؤقت الخاص للبادئات مع خصم 75% على الإدخال عند تطابق المخزن، مما يجعله أكثر المزودين فعالية من حيث التكلفة للمحادثات الطويلة وسير العمل الوكيلي متعدد الخطوات.

Ollama

يعمل Ollama محليًا ولا يحتوي على طبقة تخزين مؤقت.

لماذا عديم الحالة

تعتمد ثلاث خصائص على التصميم عديم الحالة، وفقدان أي منها سيُضرّ بالبنية.

تبديل النماذج

يستدعي المهاد أيّ نموذج دماغ اخترته — DeepSeek أو Anthropic أو OpenAI أو Ollama — ولا يوجد تدرّج تلقائي بينها. لكن لأن التطبيق يمتلك مصفوفة الرسائل الكاملة، فإن تبديل نموذج دماغك في منتصف المحادثة يعمل ببساطة: يحصل النموذج الجديد على السجل الكامل في دوره التالي مباشرةً، دون خيط يُهاجَر. (يعتمد وضع التنسيق على الخاصية نفسها — يُسلَّم كل عامل سياقًا كاملًا مكتفيًا بذاته.) أما واجهات برمجة التطبيقات القائمة على الخيوط فتجعل ذلك مستحيلًا.

الخصوصية

لا يحتفظ أي مزود بحالة المحادثة بين الاستدعاءات. كل طلب معزول. وإذا تم تبديل المزود في منتصف المحادثة، فلا يبقى لدى المزود السابق أي شيء. يبقى سجل محادثتك على جهازك، وليس على خادم شخص آخر.

التحكم في السياق

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

الاستمرارية على جانب التطبيق فقط

تُحفظ المحادثات محليًا في ~/.wolffish/workspace/brain/conversations/ بصيغة ملفات JSON تحتوي على سجل الرسائل الكامل، ومقاطع التدفق، وتوقيتات الأدوات، والمرفقات. هذا محلي بالكامل — لا يرى المزودون أبدًا معرّف محادثة ولا يستأنفون من حالة مخزَّنة. التطبيق هو مصدر الحقيقة. والمزودون مجرد حوسبة عديمة الحالة.