طبقة الالتزام (الحل قبل التنفيذ)
طبقة الالتزام — الحل قبل التنفيذ
Section titled “طبقة الالتزام — الحل قبل التنفيذ”بوابة سياسة بين نموذج اللغة والتعديلات الدائمة. قبل أن يُسمح للوكيل بالجدولة أو الإرسال أو التنفيذ أو تغيير الإعدادات، تحلّ كاظمه نيّته مقابل الذاكرة والسياسة. الأفعال الغامضة يُزال غموضها بـبطاقة توضيح/تأكيد دلالية تفاعلية على كل منصة. كل الأطوار (0–8) مُسلَّمة. مفتاح إيقاف الطبقة وتدهور الاستيراد غير المتاح يفشلان انفتاحًا (يُعامَلان كطبقة مطفأة). استثناءات محرك التفويض على الأدوات الدلالية تفشل مغلقةً عند الاختناقين — يجب ألا يُطلق محرك سياسة معطوب remind/exec بحرية. الثوابت:
AGENTS.md§20.
ذو صلة: الأمان والسلامة (ثلاثة مسارات تنفيذ HITL + السجل)، الذاكرة وRAG (مخزن المعتقدات الذي تقرأه البوابة)، أوامر الشرطة المائلة.
1. لماذا وُجدت — فئة الحوادث التي تمنعها
Section titled “1. لماذا وُجدت — فئة الحوادث التي تمنعها”تخيَّل وكيل جدولة. يقول المستخدم “ذكِّرني بالاجتماع.” دون طبقة التزام، يستطيع نموذج اللغة اختراع تاريخ معقول، وجدولته، والأسوأ — الكتابة فوق اعتقاد المستخدم الحقيقي بشأن موعد الاجتماع. هذا فئة فشل حقيقية (“حادثة CoPilot”): يتصرف النموذج بثقة بناءً على حقيقة مهلوسة والنظام يسمح ببقائها.
تحلّ كاظمه النية مقابل الذاكرة قبل التنفيذ، وتحجب المسار السيئ عند طبقتين:
- طبقة الجدولة — العبارة النسبية (“الثلاثاء القادم”، “بعد يومين”)
تُربَط بواقعة حقيقية في الذاكرة، ويُعاد كتابة
fire_atالخاص بالأداة إلى القيمة الصحيحة من الذاكرة (قيمة البوابة تتفوق على قيمة النموذج). - طبقة الذاكرة — لا يجوز أن يُستبدل معتقد
user_explicitبمصدر ثقة أدنى (llm_inferred/system_tool) (بوابة ثقة المصدر).
إزالة أيٍّ من الثابتين تُعيد فئة الحوادث.
2. نقاط الاختناق الثلاث
Section titled “2. نقاط الاختناق الثلاث”كل مسار معدِّل يمر عبر authorize_effect (في
kazma_core/safety/commitment/authorize.py). هناك ثلاثة مواضع استدعاء:
| نقطة الاختناق | المسار | الدور |
|---|---|---|
tool_worker_node (agent/graph_tool_worker.py، _commitment_resolve_gate) | دردشة أحادية الوكيل | قرارات كاملة؛ يعمل قبل انقسام HITL الأمني ليتمكن من إعادة كتابة الوسائط أولًا |
LocalToolRegistry.execute (agent/tool_registry.py) | IDE / السرب | قائمة حجب exec / قائمة سماح الصادر / المفاتيح المحمية للإعدادات تُفرض هنا. يحتاج remind/cancel_job إلى سياق الرسم البياني (تدقيق فقط على هذا المسار). H-8: طبِّق rewritten_args؛ وclarify/confirm تفشلان مغلقتين (“شغِّله من الدردشة”) — لا تُصكّ أبدًا بوابة HITL ثانية |
_mutate_functional (memory/belief_mutation.py) | كتابات الذاكرة | النصف الفاسد — بوابة ثقة المصدر (مستقلة عن بوابة السياسة) |
3. مخطط القرار
Section titled “3. مخطط القرار”يعيد authorize_effect قيمة EffectDecision بأحد أربعة نتائج:
| القرار | المعنى | ما يحدث |
|---|---|---|
allow | تنفيذ | اختياريًا مع rewritten_args (مثلًا حسبت البوابة fire_at الصحيح لتذكير) |
clarify | مقاطعة بسؤال موجَّه | تُطلق بطاقة مقاطعة حقيقية بخيارات متمايزة (انظر §4) |
confirm | مقاطعة طلبًا لموافقة صريحة | نفس تجربة البطاقة، تُستخدم للأفعال الحرجة |
deny | محجوب | يُعاد إلى النموذج خطأ واضح؛ لا بطاقة، ولا تنفيذ |
بالإضافة إلى مسار تدقيق فقط لأدوات القراءة، وmutate_fs (الاحتواء في
IdeService.resolve)، وdelegate (ثقة HMAC تُفحص عند وقت تحميل المهارة).
سلوك خاص بكل فعل
Section titled “سلوك خاص بكل فعل”| الفعل | سلوك المُحلِّل |
|---|---|
| remind (جدولة) | وقت نسبي مربوط بواقعة في الذاكرة → سماح + إعادة كتابة fire_at. عبارة نسبية غامضة مع واقعة قريبة → clarify. غير قابلة للتحقق → deny. |
| cancel_job | يُحل مقابل مهام cron المعلقة. |
| exec (الصدفة) | قائمة حجب تحجب الأوامر الكارثية (rm -rf /، وقنابل fork، وcurl | sh، وdd of=/dev/، وmkfs، والإطفاء، وchmod 777 /) قبل بطاقة HITL. الأوامر الآمنة تمر (تبقى HITL مطبَّقة). |
| send_outbound | عندما يكون agent.commitment.outbound_allowed_targets مضبوطًا، الأهداف غير المعروفة → clarify مع قائمة السماح. |
| config_change | المفاتيح المحمية (safety.*، وagent.commitment.*، وnotifications.lifecycle.*) لا يمكن للوكيل تعديلها — حماية ذاتية. |
| منشور مدعوم بمقترح | يرفض x_post / x_schedule_post / book_x_post العمل دون proposal_id قابل للحل. تعيد البوابة كتابة text إلى القطعة المخزَّنة (المعرف يتفوق على سياق النموذج). فشل مخزن القطع المعطوب يحجب مغلقًا. |
إعادة الكتابة عند السماح: قيمة
fire_atالتي حسبتها البوابة (للتذكير) تتفوق دائمًا على وسائط النموذج الأصلية. التوقيت الأصلي، وربما الخاطئ، لا يصل إلى المجدول أبدًا.
4. بطاقات التوضيح / التأكيد الدلالية
Section titled “4. بطاقات التوضيح / التأكيد الدلالية”عندما يكون القرار clarify أو confirm، يعلَّق الرسم البياني عبر
interrupt() في LangGraph بحمولة تحمل سؤالًا وقائمة من
الخيارات — كل خيار يحزم slots_patch (تحديث جزئي للوسائط).
flowchart LR
U[User: "remind me about the meeting"] --> M[Model calls schedule tool with ambiguous time]
M --> G[Commitment gate: authorize_effect]
G -->|ambiguous| C[Clarify card: "Which meeting?"]
C --> O1[Option: Project sync — Tue 2pm]
C --> O2[Option: 1:1 — Wed 10am]
C --> OX[Cancel]
O1 --> R[Resume: apply slots_patch → correct fire_at]
OX --> X[Aborted cleanly]
- يُعرض في كل مكان — الويب (الدردشة + الشريط الجانبي)، وTelegram، وDiscord، وSlack. كل منصة تعرض زرًا واحدًا لكل خيار.
- الاستئناف يطبق
slots_patchالخاص بالخيار المختار على وسائط الأداة ويواصل. أزرار الموافقة/الرفض القائمة تعيّن أفضل خيار / إلغاء. - قائمة الخيارات فارغة → توضيح بنص حر (بلا خيارات متمايزة).
- الإلغاء نهائي — يُقال للنموذج أن يوقف المحاولة ويسأل المستخدم، لا أن يعيد المحاولة بصمت أبدًا.
هذا ناقل HITL الموحَّد (الناقل نفسه الذي يعالج موافقات أدوات الخطورة) — لا توجد قناة مقاطعة ثانية.
5. رموز النطاق (السرب)
Section titled “5. رموز النطاق (السرب)”يمكن تقييد عمّال السرب المُرسَلين بنطاق امتياز. عندما يكون
agent.commitment.swarm_scope_enforce مفعَّلًا، يبدأ العمّال افتراضيًا بـ
semantic_tier عالٍ (HIGH) (يُحجب exec/outbound/config/identity بحرجة CRITICAL)
وdenied_acts = {soul_delta, identity, config_change}. الافتراضي مفعَّل منذ
2026-08-15 (الإرسال التلقائي بمحرك النية) — اخرج منه عبر متغير البيئة / ConfigStore.
انظر kazma_core/safety/commitment/scope.py (ScopeToken، وdefault_worker_scope،
وis_act_within_scope).
6. بوابة تأكيد الروح
Section titled “6. بوابة تأكيد الروح”يُخلِّد محرك التحسين الذاتي “دلتا الروح” — تحسينات موجه النظام من توليد
نموذج اللغة مستمدة من مخرجات محادثة/أدوات غير موثوقة. عندما يكون
agent.commitment.soul_requires_confirm مفعَّلًا، تُحتجَز الدلتا حتى
يؤكدها مشغِّل عبر الطابور عند GET /api/commitment/soul/pending
و**POST /api/commitment/soul/{cid}/confirm** (أو /reject). افتراضي الإعدادات
مطفأ؛ تفعيل تلقائي في الإنتاج / تعدد المستخدمين ما لم يضبط المشغِّل المفتاح
صراحةً (get_commitment_config).
صدق التخزين: تعيش دلتا الروح في get_config_store() تحت المفتاح
self_improvement.agent_evolution ({"agents": {<id>: {soul, history}}}) —
وليست ملف SOUL.md ماركداون وليست ملف agent_evolution.json حيًّا.
يمرّ _load_agent_evolution / _save_agent_evolution عبر ConfigStore — لا
تُعد إدخال كتابة path.write_text مباشرة أبدًا. قفل قراءة-تعديل-كتابة مركّب
(_agent_evo_lock) يُسلسل apply_agent_mutation داخل العملية؛ قفل ConfigStore
نفسه لا يحرس إلا الفردية get/set. كلاهما مطلوب.
هجرة لمرة واحدة (_migrate_legacy_evolution_if_present) تنقل أي
agent_evolution.json موجود مسبقًا إلى ConfigStore وتعيد تسميته
.migrated. اترك هذا في مكانه.
تُفحص الدلتا عند وقت الإنشاء (_analyze_success/_analyze_failure)
وعند وقت التطبيق (_auto_apply/apply_agent_mutation) — دفاع في العمق.
لا تحقن دلتا أبدًا عبر تأطير "Apply these refinements to your behaviour:"
القديم؛ استخدم دائمًا format_untrusted_block(evo, source="self_improvement").
مفتاح الإيقاف KAZMA_SELF_IMPROVEMENT=0 يُفحص حيًّا (لا عند التهيئة فقط) على
مسار الدردشة/المشرف ومسار عامل السرب معًا.
7. الأوضاع ومفاتيح الإيقاف
Section titled “7. الأوضاع ومفاتيح الإيقاف”الأوضاع (agent.commitment.mode أو KAZMA_COMMITMENT_MODE)
Section titled “الأوضاع (agent.commitment.mode أو KAZMA_COMMITMENT_MODE)”| الوضع | السلوك |
|---|---|
strict | الأكثر تحفظًا — أوسع سطح توضيح/تأكيد |
balanced (الافتراضي) | حلّ النية الواضحة، والتوضيح عند الغموض الحقيقي فقط |
autonomous | مقاطعة دنيا |
yolo | تمرير فعلي (أدوات الخطورة تبقى مقيَّدة بـHITL على حدة) |
مفاتيح الإيقاف (كلها مطفأة افتراضيًا ما لم يُذكر خلاف ذلك — SWARM_SCOPE_ENFORCE مفعَّل افتراضيًا منذ 2026-08-15)
Section titled “مفاتيح الإيقاف (كلها مطفأة افتراضيًا ما لم يُذكر خلاف ذلك — SWARM_SCOPE_ENFORCE مفعَّل افتراضيًا منذ 2026-08-15)”| متغير البيئة | الطبقة | الافتراضي | الأثر |
|---|---|---|---|
KAZMA_COMMITMENT_ENABLED | الطبقة بأكملها | مفعَّل | يعطِّل 0 الطبقة كلها |
KAZMA_COMMITMENT_MODE | الوضع | balanced | يتجاوز الوضع |
KAZMA_COMMITMENT_SWARM_SCOPE_ENFORCE | نطاق السرب | مفعَّل | يقيّد امتيازات العمّال المُرسَلين (عطِّله للخروج) |
KAZMA_COMMITMENT_SOUL_REQUIRES_CONFIRM | بوابة الروح | مطفأ (تفعيل تلقائي في الإنتاج / تعدد المستخدمين ما لم يُضبط) | تحتجز دلتا الروح بانتظار التأكيد |
KAZMA_AUTO_STORE_BELIEFS | التخزين التلقائي للذاكرة | متحفظ | مدى عدوانية تخزين المعتقدات |
كل مفتاح إعدادات قابل للضبط أيضًا في واجهة الإعدادات / ConfigStore تحت
agent.commitment.* ويُعاد قراءته حيًّا (get_commitment_config) — لا
حاجة إلى إعادة تشغيل.
8. المقاييس
Section titled “8. المقاييس”مقاييس Prometheus مكشوفة عند /metrics:
kazma_commitment_decisions_total{decision="allow|clarify|confirm|deny|cancelled"}kazma_commitment_pending— الالتزامات المحتجزة حاليًا بانتظار الحل
9. المكوّنات (kazma_core/safety/commitment/)
Section titled “9. المكوّنات (kazma_core/safety/commitment/)”| الوحدة | المسؤولية |
|---|---|
side_effects.py | سجل مصدر الحقيقة الوحيد: أداة → ToolEffectProfile. أدوات MCP (mcp__*) تمر عبر classify_mcp_tool_effect. المعدِّلات غير المسجلة تفشل مغلقةً (مُرمَّزة) عندما يكون enforce_unknown_mutators مفعَّلًا. |
authorize.py | authorize_effect (البوابة) + EffectDecision + محلِّلات الأفعال (remind، وcancel_job، وexec، وsend_outbound، وconfig_change، والمنشور المدعوم بمقترح) |
relative_time.py | resolve_remind — ربط الوقت النسبي (EN + AR)، مقيس بـG2 (صفر سماح خاطئ) |
store.py | صفوف Commitment + جداول ops-SQLite + TTL/GC + احتجاز متدرج + list_pending_soul() |
constraints.py | is_commitment_enabled + load_constraint_beliefs + cron_pending_jobs |
config.py | get_commitment_config — قارئ الإعدادات الحي الوحيد |
scope.py | ScopeToken + swarm_scope (ContextVar) + default_worker_scope() + is_act_within_scope() |
resume.py | build_resume_value() + is_semantic_kind() — يعيّن الموافقة/الرفض → خيار/إلغاء على كل منصة |
_commitment_resolve_gate | البوابة المستخرجة في graph_tool_worker.py (وليست graph_builder.py) |
10. الصدق والافتراضيات
Section titled “10. الصدق والافتراضيات”- مفتاح الإيقاف / الاستيراد مفقود → فشل انفتاحًا (تُعامَل الطبقة كمطفأة). الاستثناءات على الأدوات الدلالية → فشل مغلقًا عند الاختناقين (لا تُطلق remind/exec بحرية لأن محرك السياسة رمى استثناءً).
- تخزين تلقائي متحفظ — لا تُستبدل المعتقدات بعدوانية.
ثقة المصدر: معتقدات
user_explicitالوظيفية لا يمكن أن تُستبدل بـllm_inferred/system_tool. - لا موافقة متأخرة — لا يمكن المصادقة على التزام بأثر رجعي بعد الوقوع؛ يجب حلّه في دوره.
- إيقاع GC — الالتزامات منتهية الصلاحية/المحتجزة تُحصد في حلقة
start_memory_workerكل 15 دقيقة (نفس الحلقة تحمل TTL بوابة HITL).
الطبقة بأكملها مفعَّلة افتراضيًا في وضع balanced؛ أطفئها بـ
KAZMA_COMMITMENT_ENABLED=0 إذا احتجت سلوك تمرير خامًا.

