Skip to main content

سجل زمني كامل

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

الموقع

ملف واحد في اليوم. سجل اليوم دائماً في:

كيف يعمل

يلفّ ناقل أحداث corpus كل استدعاء emit() بالتسجيل. يتم تخزين الأحداث مؤقتاً لمدة ثانيتين قبل الكتابة على القرص — ليس بالوقت الفعلي تماماً، لكنه قريب بما يكفي لتصحيح الأخطاء. السجلات اليومية أيضاً مفهرسة بواسطة cortex (بوصفها المصدر corpus)، لذا ضمن نافذة الاحتفاظ لا تحتاج إلى البحث بـ grep يدوياً — وولفيش نفسه يستطيع إيجاد الأحداث عبر memory_search، وتستطيع أنت ذلك أيضاً بمجرد سؤاله.
سجلات الأحداث الخام تُحذف بعد 7 أيام بالتصميم — فهي الطبقة الجنائية، لا طبقة الذاكرة. ما يهم لأكثر من أسبوع يستمر في مكان آخر: الحلقات والملخصات الأسبوعية تُحفظ إلى الأبد، وتشغيلات الأتمتة تُسجّل بشكل دائم في brain/brainstem/run-history.md (مفهرس أيضاً)، الذي يبقى بعد الحذف. إذا احتجت السجلات الخام لفترة أطول، انسخها خارج مجلد corpus/.

أنواع الأحداث

يُصدر النظام عشرات أنواع الأحداث. إليك الأكثر فائدة لتصحيح الأخطاء:

صيغة السجل

كل إدخال هو عنوان بطابع زمني يتبعه اسم الحدث وحمولته الكاملة كسطر JSON واحد:

تتبع مهمة

أحداث الأدوات والمهام تتشارك taskId. لمتابعة مهمة واحدة عبر السجل، ابحث عن معرّفها:
الإدخالات تُكتب بالترتيب الزمني، لذا فإن قراءة عادية للملف حول طابع زمني ما تعيد بناء الدور بأكمله: وصول الرسالة ← بناء السياق ← استجابة LLM ← استدعاءات الأدوات ← نتيجة المهمة. ولنسخة أغنى خطوة بخطوة من المهمة نفسها، افتح brain/motor/tasks/TASK-1747.md.

سيناريوهات تصحيح شائعة

اقرأ الأحداث حول الطابع الزمني للرسالة:
  1. message.received — هل وصلت الرسالة أصلاً؟
  2. context.built — هل نجح تجميع السياق (ينبغي أن تتضمن sectionsIncluded القيمة capabilities
  3. tool.called — هل طلب النموذج الأداة؟
إذا لم يُنتج النموذج استدعاء أداة، فالمشكلة في السياق (تحقق من لقطة التصحيح — هل كانت القدرة في فهرس <capabilities>؟). إذا أنتج استدعاءً لكن لم يحدث شيء بعده، ابحث عن حدث safety.blocked.

المراقبة المباشرة

شاهد السجل في الوقت الفعلي أثناء التطوير:
ادمج مع grep --line-buffered لتصفية أنواع أحداث محددة في الوقت الفعلي: