Skip to main content

وحدات وقت التشغيل الخمس عشرة

كيف يعمل الدماغ

يصمم وولفيش وقت تشغيله على نمط الدماغ البشري — ليس كاستعارة، بل كنمط معماري. كل وحدة تتولى وظيفة إدراكية واحدة بالضبط، وتتواصل عبر ناقل أحداث مشترك (الجسم الثفني) بدلاً من استدعاء بعضها البعض مباشرة. عندما تصل رسالة، تتدفق عبر الوحدات مثل إشارة عصبية:
  1. وصول المدخل — محوّل القناة (سطح المكتب أو Telegram أو WhatsApp) يُطلق حدث message.received على corpus
  2. بناء السياق — القشرة الجبهية الأمامية تجمّع موجّه نظام رشيقًا: ملفات هويتك، وحقائق الجهاز، وعقد التشغيل، وخلاصة التفضيلات المتعلَّمة، وفهرس قدرات بسطر واحد لكل قدرة من المخيخ، وخريطة ذاكرة تصف ما هو موجود ويمكن استرجاعه — دون محتوى الذاكرة نفسه أبدًا. ويحرس RAS ميزانية الرموز
  3. LLM يفكر — المهاد يرسل الموجّه المُجمَّع إلى نموذج الدماغ الوحيد الذي اخترته (config.llm.brain) ويبث الرد؛ لا يوجد تدرّج بين المزودين
  4. تحليل الرد — منطقة فيرنيكه تستخرج استدعاءات الأدوات والنص من البث، مع التوحيد عبر صيغ المزوّدين السحابيين التسعة جميعها
  5. فحص الأمان — إذا وُجدت استدعاءات أدوات، تفحصها اللوزة مقابل أنماط الخطر وإما توافق أو تطلب تأكيداً أو تحظر
  6. تنفيذ الأدوات — القشرة الحركية تشغّل الأدوات الموافق عليها، مع تسجيل كل خطوة في ملفات المهام مع منطق إعادة المحاولة. وهنا أيضًا تحدث الذاكرة: عندما يحتاج الدور شيئًا من الماضي، يستدعي النموذج memory_search على فهرس cortex بدلًا من حقن الذكريات مسبقًا
  7. تسليم الرد — منطقة بروكا تبث النص النهائي للمستخدم عبر القناة
  8. حفظ الذاكرة — الحصين يُلحق المحادثة بملف حلقة اليوم، موسومةً بمصدر الدور
  9. التعلم — العقد القاعدية تسجّل نجاح أو فشل استدعاءات الأدوات، مبنيةً سجل تغذية راجعة
كل هذا يحدث في خط أنابيب حتمي من 17 خطوة. جذع الدماغ يشغّل العمليات الخلفية (مراقبة الملفات، المهام المجدولة، دمج الذاكرة الليلي)، الوطاء يراقب صحة النظام، والجزيرة توفر الوعي الذاتي حتى يستطيع الوكيل الإبلاغ عن حالته. الفكرة الأساسية: لأن كل وحدة تتواصل عبر الأحداث وتكتب حالتها في ملفات Markdown، فإن الدماغ بأكمله قابل للمراقبة والتعديل في كل طبقة.

مرجع الوحدات

يمتلك وولفيش 15 وحدة وقت تشغيل، كل منها تتولى وظيفة محددة. كلها موجودة في src/main/runtime/ وتتواصل حصرياً عبر ناقل الأحداث (corpus).

corpus.ts — ناقل الأحداث

يقابل الجسم الثفني. الجهاز العصبي الذي يربط جميع الوحدات. مبني على mitt مع أكثر من 80 حدثًا مكتوب النوع. يسجّل معالج جامع (wildcard) كل حدث في ملفات Markdown يومية في brain/corpus/YYYY-MM-DD.log.md بتفريغ مؤقت كل ثانيتين. تُنظَّف السجلات القديمة بعد 7 أيام بالتصميم — فما يهم على المدى الطويل يبقى في أماكن أخرى (الحلقات، الملخصات، سجل التشغيلات). يُهيَّأ أولًا ويُمرَّر ككائن وحيد (singleton) لجميع الوحدات الأخرى.

thalamus.ts — بوابة النماذج

يقابل المهاد (بوابة الحس). يدير تسعة مزودي نماذج لغة سحابيين بالإضافة إلى Ollama عبر fetch() خالص. يحلّ نموذج الدماغ الوحيد الذي اخترته صراحةً (config.llm.brain) ويبث منه — لا يوجد تدرّج تلقائي ولا استبدال بين المزودين. يستخدم net.isOnline() للكشف الفوري عن وضع عدم الاتصال. عند خطأ عابر، يُعيد محاولة الدماغ نفسه وفق جدول تراجع؛ ويغذّي تتبّع الصحة بالتراجع الأسّي إعادةَ المحاولة على النموذج نفسه والتشخيصات، لا تبديل المزودين. يكشف عن مولّد موحَّد async *stream() يُرجع أنواع StreamChunk.

prefrontal.ts — بنّاء السياق

يقابل القشرة الأمامية الجبهية (الوظيفة التنفيذية). أهم وحدة. يجمّع موجّه نظام رشيقًا — ~5,000 رمز لمحادثة جديدة — بأقسام موسومة بـ XML: <identity>‎ (soul.md + user.md)، وحقائق <device>‎، و<prefrontal>‎ (عقد التشغيل agents.core.md، وتجاوزاتك في agents.md، وخلاصة التفضيلات المتعلَّمة المحدودة من basalganglia)، و<capabilities>‎ (فهرس بسطر واحد لكل قدرة مع علامات [loaded])، و<memory_map>‎ (خريطة ثابتة على مستوى البايت لكل يوم لما هو موجود في الذاكرة — أعداد السجلات، ونطاقات التواريخ، والمواضيع — دون المحتوى أبدًا)، وكتلة <runtime>‎ نحيفة. لا إغراق للذاكرة، ولا إغراق للحلقات، ولا كتالوج أدوات نثري: كل شيء آخر يعيش في فهرس cortex ويُسترجَع عند الطلب عبر memory_search وtool_search. يكتب لقطة تصحيح لكل موجّه مُجمَّع في brain/prefrontal/.debug/ (بتدوير، تُحفظ أحدث 50 لقطة).

ras.ts — مرشّح الانتباه

يقابل جهاز التنشيط الشبكي. يحرس ميزانية الرموز. منذ إعادة تصميم السياق الرشيق، لم يعد RAS يقيّم مرشحي الذاكرة — الذاكرة لا تُحقن في الموجّه أبدًا، فلا يوجد ما يُقيَّم. ما تبقى هو حارس الميزانية: يقيّد ميزانية التجميع مهما اتسعت نافذة سياق النموذج، ويوزّعها على أقسام الموجّه الثابتة، ويقلّم بمقتطف مقدمة + خاتمة أي مرشح منفرد كان سيبتلع الميزانية. يستخدم تقدير ~4 أحرف لكل رمز، المشترك مع بقية وقت التشغيل.

cortex.ts — فهرس البحث

يقابل القشرة المخية. فهرس سجلات واحد فوق كل شيء. cortex.db (SQLite بوضع WAL، مع FTS5 وترتيب BM25) هو مخزن سجلات — صفوف بدقّة القسم والرسالة مع سقوف مقتطفات مقدمة + خاتمة — يغطي 11 مصدرًا: الحلقات، والمعرفة، والدمج الأسبوعي، والمحادثات (كل رسالة وكل استدعاء أداة مع مخرجاته)، وتشغيلات المهام، والملاحظات، ودفتر الاستخدام، وسجلات أحداث corpus، وسجلات التطبيق/الامتداد، والمُخرَجات (الملفات، والمرفوعات، ولقطات الشاشة، والكلام — بياناتها الوصفية ومصدرها)، والمستندات المستقلة مثل heartbeat.md وrun-history.md. تُفهرَس رسائل WhatsApp الواردة أيضًا. بدء التشغيل مُدار بإصدار المخطط: إعادة البناء الكاملة لا تحدث إلا عند ترقية الإصدار (~1.3 ثانية لمساحة عمل 2 جيجابايت)؛ أما الإطلاق العادي فهو فرق تزايدي على mtime/الحجم (~22 مللي ثانية). قابل للتخلص بالكامل — احذف cortex.db وسيُعاد بناؤه من الملفات المصدرية. يخدم أدوات الاسترجاع memory_search/conversation_read والتعداد الفوري للمحادثات لصفحة السجل (History). يدعم فهرسة/إزالة ملف واحد لمراقب الملفات في brainstem.

hippocampus.ts — الذاكرة

يقابل قرن آمون. نظام ذاكرة ثلاثي الطبقات.
  • الحلقات (episodes/YYYY-MM-DD.md): سجلات محادثة يومية، تُضاف في كل دور دون استدعاء نموذج لغة. المدخلات موسومة بمصدرها (## HH:MM [heartbeat] — …) بحيث تتمايز أدوار نبض القلب والإجراءات ووكلاء سير العمل عن الدردشة
  • المُدمَجة (consolidated/YYYY-WNN.md): ملخصات أسبوعية يولّدها دمج brainstem الليلي
  • المعرفة (knowledge/): ملفات موضوعية دائمة تُرقَّى من الحلقات؛ الترقية تزيل التكرار حتى لا تتراكم الحقائق المُعاد اشتقاقها
الحصين هو الكاتب. أما الاسترجاع فيمر عبر فهرس cortex — كل ما يكتبه قابل للبحث عبر memory_search.

cerebellum.ts — محمّل القدرات

يقابل المخيخ (تنسيق الحركة). يكتشف القدرات ويحمّلها. يمسح brain/cerebellum/ بحثًا عن مجلدات القدرات، ويحلل واجهة YAML لـ SKILL.md، ويستورد الإضافات ديناميكيًا، ويسجل الأدوات وأنماط الخطر. يمرر PluginContext (pluginDir + workspaceRoot) إلى الإضافات عند التهيئة. وهو أيضًا من يقرر أي مخططات أدوات تُشحَن إلى النموذج. مجموعة أساسية محمَّلة دائمًا — tool-discovery وintrospect وfilesystem وshell وask وutilities وweb-search وsecrets وsystem، بالإضافة إلى workflow (متاحة للقائد وحده) وtelegram/whatsapp/electron ما دامت متصلة. كل شيء آخر — github وgoogle وnotion والمتصفح واستخدام الحاسوب وأدوات الوسائط وجميع خوادم MCP — على بُعد استدعاء tool_search أو tool_activate واحد، وقابل للاستدعاء في الدور نفسه. التفعيلات على مستوى المحادثة (‏ActiveToolset بمفتاح conversationId، مقيَّدة بآلية LRU عند 10 قدرات غير أساسية)، لذا فإن تحميل github في تشغيلٍ لنبض القلب لا يُبطل أبدًا مخزن الموجّهات المؤقت لدردشة حية، واستدعاء أداة مُخلاة يُعيد تفعيلها بشفافية. ويضيف pinnedCapabilities في config.json قدرات إضافية محمَّلة دائمًا.

wernicke.ts — محلل الرد

يقابل منطقة فيرنيكه (فهم اللغة). يفهم مخرجات نموذج اللغة. يحلل القطع المتدفقة، ويستخرج استدعاءات الأدوات، ويوحّدها عبر ثلاثة تنسيقات مزودين في نوع واحد ToolCall. يتعامل مع JSON الجزئي وكتل التفكير.

broca.ts — مجمّع الرد

يقابل منطقة بروكا (إنتاج اللغة). ينتج الرد النهائي. يدفق الرموز إلى المُعرِّض عبر IPC، وينسق نتائج الأدوات، ويدير فواصل الأسطر بين المقاطع النصية من أدوار نموذج اللغة المختلفة.

amygdala.ts — بوابة الأمان

يقابل اللوزة الدماغية (كشف التهديد). لا توجد أنماط مكتوبة في الكود — كلها مُحمَّلة من SKILL.md عبر cerebellum. يطابق ضد toolName + " " + JSON.stringify(args). ثلاثة مستويات تصنيف: safe (المتابعة)، confirm (إظهار مربع موافقة)، block (الرفض). تدفق موافقة عبر IPC مع جسر مبني على Promise.

motor.ts — منفّذ المهام

يقابل القشرة الحركية. يشغّل استدعاءات الأدوات مع تسجيل كامل. ينشئ ملفات Markdown للمهام في brain/motor/tasks/TASK-{id}.md. تسجيل لكل خطوة بالمعطيات والمخرجات والمدة وعدد المحاولات. إعادة محاولة 3 مرات بتراجع أسّي 2ث/6ث/18ث. AbortController لدعم الإيقاف.

basalganglia.ts — حلقة الملاحظات

يقابل العقد القاعدية (المكافأة/التعلم). يتعلم من النتائج. ملفات ملاحظات يومية بكامل المعطيات ومقتطف من المخرجات (اقتطاع عند ~200 حرف). يسجل أربعة أنواع نتائج: نجاح، فشل، رفض، موافقة.

hypothalamus.ts — مراقب النظام

يقابل الوطاء (التوازن الداخلي). يراقب صحة النظام. setInterval كل 60 ثانية يراقب الذاكرة العشوائية، والقرص، والمعالج، واستخدام نافذة السياق. يطلق أحداث health.warning وhealth.critical على corpus عند تجاوز العتبات.

brainstem.ts — العمليات الخلفية

يقابل جذع الدماغ (الوظائف اللاإرادية). يعمل دون تفاعل المستخدم. مراقب ملفات chokidar يحفّز إعادة فهرسة cortex عند تغير الملفات — يغطي brain/ بالإضافة إلى أشجار مساحة العمل التي تفهرسها أدوات الاسترجاع (usage وlogs وfiles وuploads وscreenshots وspeech وwhatsapp) بتأخير 500 مللي ثانية؛ أما سجلات corpus والتطبيق الثرثارة فتأخذ تأخيرًا بطيئًا قدره 60 ثانية حتى لا يُرهَق المُفهرِس. مجدول node-cron يقرأ الجداول من brainstem/heartbeat.md ويخزّن سجل تشغيلات الأتمتة في brainstem/run-history.md، الذي يبقى بعد تطهير corpus كل 7 أيام. الدمج الليلي المدعوم بنموذج لغة يجمّع الحلقات في ملخصات أسبوعية (السحابة أولًا للجودة). كل ذلك داخل العملية — لا توجد عمليات خفية على مستوى النظام.

insula.ts — الوعي الذاتي

يقابل الجزيرة (الإحساس الداخلي). يعرف حالته الخاصة. يظهر عبر قدرة introspect: تقرأ wolffish_status وchannel_status وwolffish_performance وwolffish_memory وwolffish_list_files ملفات مساحة العمل مباشرةً للحصول على الإحصائيات. وتحمل القدرة نفسها مجموعة أدوات الاسترجاع التي تركب فهرس cortex — memory_search وmemory_get وconversation_list وconversation_read وmemory_save وusage_report وwolffish_recall. اسأل وولفيش “كيف حالك؟” وسيقرأ سجلاته الخاصة للإجابة؛ واسأله “ماذا قررنا الأسبوع الماضي؟” وسيبحث في فهرسه الخاص.