التاريخ الكامل مع كل طلب
يستخدم وولف فيش نموذجًا عديم الحالة يُرسل السجل الكامل في كل طلب مع جميع مزودي السحابة. لا توجد جلسات دائمة ولا معرّفات خيوط ولا أي حالة محادثة على الخادم. كل استدعاء لواجهة برمجة التطبيقات قائم بذاته ومستقل. هذه ليست قيدًا — بل هي أهم خصائص هذه البنية.كيف يعمل
في كل دور، يُجمّع الوكيل مصفوفة الرسائل الكاملة من الصفر:- القشرة الجبهية الأمامية (Prefrontal) تبني موجّه النظام (الهوية، الوكلاء، الذكريات، سياق الجهاز، المهارات)
- النظام الشبكي المنشط (RAS) يصفّي الرموز ويوزّع الميزانية عبر فئات السياق
- الوكيل يحمّل سجل المحادثة كاملًا ويلحقه بالطلب
- المهاد (Thalamus) يوجّه الطلب إلى المزود النشط، الذي يحوّل الرسائل إلى التنسيق الأصلي للمزود ويرسل طلب HTTP واحدًا
داخل دور واحد
يُنفّذ الوكيل حلقة استخدام الأدوات: استدعاء النموذج، تنفيذ الأدوات، إلحاق النتائج، ثم استدعاء النموذج مجددًا. كل تكرار يُرسل مصفوفة الرسائل المتنامية مرة أخرى إلى المزود:تنسيق الطلب الخاص بكل مزود
يستقبل كل مزود المحتوى المنطقي ذاته، محوّلًا إلى واجهة برمجة التطبيقات الأصلية الخاصة به:| المزود | نقطة النهاية | موجّه النظام | نتائج الأدوات |
|---|---|---|---|
| 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:
- موجّه النظام — سياق القشرة الجبهية كبير ومتطابق تقريبًا عبر الأدوار
- تعريفات الأدوات — مستقرة خلال المحادثة
- بادئة سجل المحادثة — دور المستخدم قبل الأخير، الذي يُحدّد الحد الفاصل بين السجل المستقر والتبادل الأخير
OpenAI
تطبّق OpenAI تخزينها المؤقت التلقائي للبادئات بشفافية (خصم 50% على الإدخال عند تطابق المخزن). لا حاجة إلى تفعيله.DeepSeek
يطبّق DeepSeek تخزينه المؤقت الخاص للبادئات مع خصم 75% على الإدخال عند تطابق المخزن، مما يجعله أكثر المزودين فعالية من حيث التكلفة للمحادثات الطويلة وسير العمل الوكيلي متعدد الخطوات.Ollama
يعمل Ollama محليًا ولا يحتوي على طبقة تخزين مؤقت.لماذا عديم الحالة
تعتمد ثلاث خصائص على التصميم عديم الحالة، وفقدان أي منها سيُضرّ بالبنية.تبديل النماذج
يستدعي المهاد أيّ نموذج دماغ اخترته — DeepSeek أو Anthropic أو OpenAI أو Ollama — ولا يوجد تدرّج تلقائي بينها. لكن لأن التطبيق يمتلك مصفوفة الرسائل الكاملة، فإن تبديل نموذج دماغك في منتصف المحادثة يعمل ببساطة: يحصل النموذج الجديد على السجل الكامل في دوره التالي مباشرةً، دون خيط يُهاجَر. (يعتمد وضع التنسيق على الخاصية نفسها — يُسلَّم كل عامل سياقًا كاملًا مكتفيًا بذاته.) أما واجهات برمجة التطبيقات القائمة على الخيوط فتجعل ذلك مستحيلًا.الخصوصية
لا يحتفظ أي مزود بحالة المحادثة بين الاستدعاءات. كل طلب معزول. وإذا تم تبديل المزود في منتصف المحادثة، فلا يبقى لدى المزود السابق أي شيء. يبقى سجل محادثتك على جهازك، وليس على خادم شخص آخر.التحكم في السياق
لأن التطبيق يُعيد بناء السياق في كل دور عبر القشرة الجبهية وRAS، فإنه يتحكم بالضبط في ما يراه النموذج. ميزانيات الرموز، وتصفية الملاءمة، واختيار الذاكرة — كلها تحدث قبل أن يغادر الطلب جهازك. أما واجهات برمجة التطبيقات القائمة على الخيوط فتُراكم كل ما رآه النموذج، وتُفقد تلك الدقة في التحكم.الاستمرارية على جانب التطبيق فقط
تُحفظ المحادثات محليًا في~/.wolffish/workspace/brain/conversations/ بصيغة ملفات JSON تحتوي على سجل الرسائل الكامل، ومقاطع التدفق، وتوقيتات الأدوات، والمرفقات. هذا محلي بالكامل — لا يرى المزودون أبدًا معرّف محادثة ولا يستأنفون من حالة مخزَّنة.
التطبيق هو مصدر الحقيقة. والمزودون مجرد حوسبة عديمة الحالة.