تخطَّ إلى المحتوى
kazma.
البحث في كاظمه والتوثيق
EN

سجل المهام

وُلد من حادثة حيّة (2026-08-27). ردّ المستخدم بـ*“أكمل التالي”* على مسح جارٍ لأسماء العلامات التجارية. كان نص تلك الدورة قد قُطع للتوّ إلى شذرة من 158 حرفًا بسبب توقف في منتصف البث، فأصبحت أعلى إشارة متبقية في الموجِّه هي بيئة العمل المحيطة (“uncommitted changes…”) — فحلّ النموذج كلمة “التالي” إلى git commit لإعدادات لا صلة لها بالأمر. ولم تظهر بطاقة موافقة لأن نافذة YOLO لمدة 4 ساعات كانت ما تزال نشطة.

يجعل السجل هذا الصنف كله مستحيلًا بنيويًا: المتابعات القصيرة تُحلّ مقابل حالة مهام دائمة، لا مقابل النص أبدًا؛ والمتابعات غير المحسومة لا تُنتج إلا سؤالًا؛ وتعديلات المستودع تمر بالبوابة دائمًا، حتى في YOLO.

سجل نشط واحد لكل محادثة، مخزَّن في قاعدة بيانات SQLite خاصة به (kazma-data/task_ledgers.db بصيغة WAL) — لا داخل نص الدردشة أبدًا:

الحقلالمعنى
goalالمهمة في جملة واحدة (تُزرع من أول رسالة ≥40 حرفًا لديك؛ ويصقلها الوكيل عبر الأداة).
stepsالخطة المعلنة — كل خطوة بحالة pending / running / done / failed ونتيجة في سطر واحد.
next_actionهدف الربط: الخطوة التالية التي أعلنها الوكيل بنفسه.
findingsنتائج دائمة تستحق الإبقاء (مثل قائمة الأسماء الخضراء).
open_questionsتفرّعات غير محسومة يُسأل المستخدم عنها.

ولأنه يعيش في SQLite، فإنه ينجو من إعادة التشغيل، وتحديث المتصفح، والردود المقطوعة، والجلسات الجديدة — فلا يمكن لأخطاء النص أن تفسد سطح الحلّ.

كاتبان، دون أي استدعاءات LLM إضافية:

  1. الاستخراج الحتمي — سياج ```plan في كل ردّ للمساعد يصبح خطوات السجل، وسطر النية المعلنة الختامي — “الآن المسح الاجتماعي لـ X، Y، Z”، “Next: …”، “التالي: …” — يصبح next_action (أنماط إنجليزية وعربية؛ آخر إعلان هو الفائز، لأن الوكيل يعيد الإعلان كلما أعاد التخطيط).
  2. أداة task_ledger_update — يصون الوكيل الهدف والخطوة التالية والنتائج وحالة الخطوات عمدًا. صيانة السجل هي طريقته لجعل “التالي” غير ملتبس.

عندما تكون رسالتك متابعة قصيرة (“proceed”، “next”، “continue”، كمّل، تابع)، يستشير المُشرف السجل قبل أن تعمل الدورة:

  • توجد خطوة تالية معلنة → ربط ملزم. ينصّ سياق الدورة صراحةً على أيّ خطوة يعنيها “التالي” — “CONTINUATION BINDING: this means ‘the social sweep for potensfit, acerfit, voimfit’” — مع بند إفلات صريح كي تتجاوزه المهمة الجديدة حقًّا.
  • لا خطوة تالية معلنة → توضيح بنيوي. تُقفل الدورة على سؤال توضيحي واحد وتُسحب كل الأدوات منها لتلك الدورة — لا يستطيع الوكيل فيزيائيًا التصرف بناءً على تخمين. سوء القراءة يكلّف سؤالًا واحدًا، لا فعلًا أبدًا.
  • تحوّل الموضوع → إحلال. التحوّل المكتشف يعلّم السجل القديم مُحلًّى (يُحفظ للتاريخ) ويُزرع سجل جديد تلقائيًا.

حدّان صارمان حتى يبقى سوء الفهم الحقيقي نفسه رخيصًا:

  • أوامر git الكتابية تمر بالبوابة دائمًا. git commit وpush وmerge وrebase وreset وcheckout -- وrestore وclean وrm وأشباهها تتطلب بطاقة موافقة على كل مسار تنفيذ (عامل أدوات الرسم وسجل swarm/IDE) — لا يستطيع YOLO الموافقة عليها تلقائيًا. أما git القرائي (status وlog وdiff) فمعفى.
  • نوافذ YOLO ساعة واحدة افتراضيًا (كانت 4). تجاوز ذلك عبر KAZMA_YOLO_TTL_SECONDS (0/off = بلا انتهاء) إن احتجت حقًّا إلى مدة أطول.
  • المخزن بأفضل جهد ولا يرفع استثناءً أبدًا — السجل المعطوب يتدهور إلى “لا سجل”، لا إلى دورة فاشلة.
  • السجلات لكل خيط محادثة؛ ويُحتفظ بتاريخ السجلات المُحلّاة لكل خيط.
  • التوصيل موجود في kazma_core/agent/task_ledger.py والمُشرف (graph_supervisor.py)؛ والاختبارات في tests/test_task_ledger.py.
  • ذو صلة: طبقة الالتزام (البوابات الدلالية) والأمان والسلامة (مستويات HITL).