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

قائمة الإنتاج

استخدمها قبل تعريض كاظمه لما هو أبعد من loopback. تتوافق مع AUDIT_DEEP_2026-09-01_EXEC.md (الموجات 0–8 مُنفَّذة) ومع خطة REMEDIATION_PLAN_2026-07-21.md التاريخية (المراحل 0–4). الثوابت: AGENTS.md.

الفحص الدخاني للميزات (البحث / مكتبة المعرفة / البروكسي / شرح الذاكرة): انظر مصفوفة الفحص الدخاني — شغّلها بعد عمليات النشر ذات الصلة.

هل التثبيت حيّ فعلًا؟ بطارية النظام الكاملة — أدوات الدردشة (A)، وHTTP/التشغيل (B)، وكتابة HITL واحدة (C). الجزء A الأخضر لا يعني كاظمه خضراء.

  • KAZMA_HOST مضبوط بقصد (127.0.0.1 أو 0.0.0.0 خلف بروكسي فقط)
  • KAZMA_SECRET قوي وفريد وليس kazma-local-dev-secret التاريخي
  • الربط خارج loopback يفشل مغلقًا بلا سر (CLI / serve)
  • KAZMA_PRODUCTION=1
  • KAZMA_VAULT_KEY مضبوط
  • فحص الصحة يستخدم /health/live (العملية) و**/health/ready** (الاعتماديات الحرجة). أما /health/details فبمصادقة (يفصح عن النموذج/MCP). واستطلع /health/deep بوصفه عُصفور الكناري الصامت بلا أثر (مفتوح، TTL ‏30 ثانية)

P0 — دورة الحياة والفشل المغلق

Section titled “P0 — دورة الحياة والفشل المغلق”
  • الإيقاف الرشيق يصرّف السرب/cron (لا مهام يتيمة)
  • NullBus يرفض أدوات الخطر (لا موافقة تلقائية في الوضع بلا واجهة)
  • YOLO معطّل ما لم يُضبط KAZMA_ALLOW_YOLO=1 (تجنّبه في الإنتاج الحقيقي)
  • دلالات مسبار نصف الفتح لقاطع الدائرة سليمة (_probe_in_flight)
  • انشر عبر kazma_guard.py --reload — ولا تقتل python/uvicorn يدويًا أبدًا (الحارس يُنعش حامل المنفذ القديم)
  • خلف nginx/Caddy/Docker: KAZMA_TRUSTED_PROXIES مضبوط؛ القرين 127.0.0.1 ليس اعتمادًا
  • CSRF مفعّل: عدم تطابق مضيف Origin/Referer → ‏403 على غير-GET من /api/*
  • المصادحة ترفض افتراضيًا على /api/*
  • حمايات SSRF للاكتشاف مفعّلة
  • إجبار Docker لأداة code_exec حيث يلزم (KAZMA_CODE_EXEC_DOCKER=force؛ التشغيل المحلي على المضيف معطّل في الإنتاج/تعدد المستخدمين)
  • الكود غير الموثوق / متعدد المستخدمين: E2B Firecracker (E2B_API_KEY + pip install -e ".[sandbox]"؛ KAZMA_E2B=0 للتعطيل)
  • الأسراب متعددة الساعات: Temporal (KAZMA_TEMPORAL_HOST + pip install -e ".[durable]")
  • إعداد HA: نسخة تشغيل نشطة واحدة وجلسة ملكية Postgres مخصصة ووحدة حالة كاملة مسيّجة؛ اجتياز تمارين العنقود المستهدف قبل ادّعاء التعافي
  • قائمة سماح الأوامر + تنظيف متغيرات البيئة مفعّلان
  • حصر جذر مساحة العمل في الإنتاج
  • معالجة تزامن cron / الإيقاف / حالات RUNNING الراكدة
  • تعدد المشغّلين: قوائم سماح المنصات مضبوطة + KAZMA_GATEWAY_STRICT_ALLOWLIST=1 (2026-08-19؛ وإلا فتعمل المُكيّفات بالسماح للجميع للتوافق الرجعي)
  • KAZMA_HITL_CANONICAL_FLOOR غير مضبوط على 0 (الأرضية مفعّلة افتراضيًا منذ 2026-09-16: لا يمكن تقليص قائمة الخطر دون القانونية)
  • النسخ الاحتياطية خارج الموقع/المتزامنة سحابيًا تتحقق من TLS (WebDAV مفعّل افتراضيًا منذ 2026-08-19؛ backups.offsite.webdav.tls_verify=false للمختبرات ذات الشهادات الموقّعة ذاتيًا فقط)
  • restic خارج الموقع: مسبار الكتابة ينجح (rclone: وs3: — البعيد للقراءة فقط يعني نسخة احتياطية فاشلة)
  • الأدوات الجديدة لها مدخل TOOL_TIERS (read / write / danger)؛ وغير المصنّفة = مقيَّدة
  • الكشط (Scraping): تثبيت IP على المسار المباشر؛ ولا تثبّت عبر proxy=

سياسات مساحة العمل والتنفيذ المحفوظة

Section titled “سياسات مساحة العمل والتنفيذ المحفوظة”

يمكن للمشرف استخدام الدفعة الذرية المصادَق عليها PUT /api/settings بدل تعديل ملف بيئة التثبيت:

[
{"key": "security.workspace_roots", "value": ["/srv/kazma-projects"]},
{"key": "security.execution.container_required", "value": true}
]

اختر أدلة مطلقة موجودة على الخادم. يمكن للجذور الصريحة المتعددة الحفاظ على مساحة قائمة وحصر المستودعات الجديدة منفصلة عنها. يجب أن تبقى الروابط الرمزية المحلولة داخل جذر مضبوط. وإذا وُجد KAZMA_WORKSPACE_ROOT فيجب أن يبقى المسار داخل جذر البيئة أيضًا؛ ولا يوسعه حفظ الإعدادات. يرفض الإنتاج إنشاء المساحات وتبديلها دون أي من السياستين. يفشل مخزن السياسة المفقود أو غير الصالح مغلقًا.

يتطلب ملف الحاوية الصارم Docker لـpython_exec، ويتجاوز E2B، ويعطّل shell_exec، ويمنع البديل المحلي حتى لو سمحت به متغيرات البيئة القديمة. ويرفض أيضًا النمط المحلي process لتحليل المستندات وOCR والتحويل وتعديل PDF (worker_isolation_required): اختر نمط الحاوية في الإعدادات ← المستندات (في التثبيت الأصلي يشغّل الحارس وسيط عمال المستندات؛ انظر معالجة المستندات، “Isolated document workers”). تحتفظ أدوات الملفات وGit الأصلية ببوابات الموافقة. افحص خدمة Docker الفعلية ونفّذ مقطعًا مؤقتًا موافَقًا عليه قبل تأهيل التنفيذ؛ فجاهزية الخدمة وحدها لا تتحقق من الصورة أو أذونات الربط. يجعل الملف الصارم code_execution قدرة جاهزية مطلوبة تلقائيًا؛ وترفض خدمة Docker غير المتاحة المرور. هذه السياسات محمية من أدوات إعداد الوكيل، وتُستبعد من نسخ الإعدادات القابلة للنقل مع بقية قيم security.*.

تميّز ملاحظات الموافقة وقت التشغيل بين التفويض ونجاح نتيجة الأداة. تستخدم خوادم MCP المرتبطة بمساحة العمل مثيلات منفصلة محددة النطاق عند استهداف مهمة لجذر آخر؛ ولا يصف الربط العام ذلك المثيل. يزوّد هذا النموذج بحقائق متحقق منها، دون ضمان كل جواب حر يولّده.

تعدد المستخدمين / التعافي النشط والاحتياطي (إن انطبق)

Section titled “تعدد المستخدمين / التعافي النشط والاحتياطي (إن انطبق)”
  • KAZMA_DATABASE_URL مضبوط؛ وسكربت الترحيل مشغّل
  • جلسات معتمة / مستخدم مشرف RBAC منشأ
  • متغيرات OIDC إن وُجد SSO
  • KAZMA_PUBLIC_URL صحيح لإعادة التوجيه
  • يحافظ HA compose / LB على مالك نشط واحد؛ تُنسخ Postgres ووحدة الحالة الكاملة وتُستعادان معًا
  • الذاكرة: حصر المستأجر تلقائي مع KAZMA_PRODUCTION=1؛ اضبط KAZMA_MEMORY_ENFORCE_TENANT=1 لتثبيتٍ متعدد المستأجرين غير موسوم بالإنتاج
  • قبل KAZMA_MEMORY_STATE_ROLE=primary: يمرّ python scripts/reconcile_memory_mirror.py --dry-run نظيفًا (لا صفوف ميتة في المرآة)
  • جداول كتالوج المستندات ومهامها واستقبالها على KAZMA_PG_TABLES عندما يكون مخزن المستندات على Postgres ‏(H-13)

ذكاء المستندات (إن فُعّل)

Section titled “ذكاء المستندات (إن فُعّل)”
  • documents.enabled مضبوط بقصد (التوافق الافتراضي: مفعّل، لكن ليس المصدر الافتراضي للحقيقة)
  • التحقق من جاهزية بيانات المستندات الوصفية عبر GET /api/documents/ops/readiness؛ لا تؤهّل بيانات Postgres الوصفية وحدها نسخ تشغيل نشطة متزامنة
  • degraded_reasons في الجاهزية فارغة، أو كل سبب منها مفهوم (stranded_intake_reservations يساوي 0)
  • نمط التنفيذ مختار عن قصد: نمط process الافتراضي بلا عزل لنظام الملفات أو الشبكة (الجاهزية hostile_document_profile: unqualified)؛ للمستندات التي لا تثق بها، انشر وسيط الحاويات (معالجة المستندات ← عمال مستندات معزولون) وتأكد أن worker_isolation.ready وimage_code_matches صحيحتان
  • documents.capacity.storage_free_floor_bytes مضبوط بتحفّظ (الافتراضي 512 ميبيبايت)
  • معرفة مسار النسخ الاحتياطي للمستندات (النسخة كل 6 ساعات: kazma-data/backups/document-store-* على SQLite، وdocument-pg-* على Postgres) وتجربة استرداد مرة واحدة؛ والبيانات الوصفية للمستندات ومهامها على الخلفية نفسها (البيانات الوصفية على SQLite بجانب مهام على Postgres ليس لها نسخ احتياطي منسّق للمستندات)
  • خطة الترحيل تشمل documents.db + شجرة المحتوى (الترحيل)؛ ومخزن مستندات Postgres ينتقل بـ scripts/document_pg_backup.py، لا بالحزمة
  • فهم المحركات الاختيارية (fitz / WeasyPrint / LibreOffice قد تكون CONDITIONAL)
  • PDF العربي / النص الإلكتروني: pip install -e ".[document-platform]" (‏PyMuPDF + pypdfium2)؛ جهوزية المحلّل (GET /api/documents/health) يجب أن تكون ready، لا وضعًا نصيًا متدهورًا
  • ملفات PDF العربية الممسوحة ضوئيًا: Tesseract نظامي + بيانات ara المدربة (وeng) على PATH؛ وOCR العربي غير مؤهل للإصدار (لا تُقرأ الأرقام العربية الهندية)
  • البرمجيات الخبيثة: ثبّت ClamAV (clamscan/clamdscan على PATH) وتحقق من الجهوزية malware.available. مع KAZMA_PRODUCTION=1 يكون الفحص فاشلًا مغلقًا افتراضيًا: دون ماسح يُرفض كل رفع
  • التحليل البعيد (documents.security.remote_parse) يبقى معطّلًا ما لم يكن إرسال المستندات الأصلية إلى طرف ثالث مقصودًا
  • الفحص الدخاني للشهادة: يخرج python scripts/certify_documents.py بغير FAIL؛ وسجّل التقرير إن رقّيت الكناري

الدليل: ذكاء المستندات · التشغيل: معالجة المستندات.

  • يستخدم المشغّلون kazma update (لا git pull ارتجاليًا) — انظر تحديث كاظمه
  • بعد التحديث: kazma --version / ‏HEAD يطابق origin/main؛ وimport kazma_cli يعمل؛ وkazma serve يبدأ
  • الإضافات الاختيارية ما تزال موجودة (rag / document-platform)؛ استخدم kazma update --reinstall -y إن مُحيت
نافذة طرفيّة
& .venv\Scripts\python.exe scripts\smoke_production.py --base http://127.0.0.1:9090 --secret $env:KAZMA_SECRET
# Document platform (optional but recommended when documents.enabled):
& .venv\Scripts\python.exe scripts\certify_documents.py
# Optional industry smoke (HITL card, health/deep):
# scripts\industry_smoke.ps1

تأكد أن GET /health/deep يعيد 200 بعد إعادة التحميل. HITL: بطاقة Approve واحدة، والنقرة الثانية 409.

شغّل أيضًا صفوف المستندات في مصفوفة الفحص الدخاني.

  • التحقق من مفتاح الإيقاف: KAZMA_COMMITMENT_ENABLED=0 يعطّل البوابة (فشل مفتوح)
  • وتيرة GC تعمل: _start_commitment_gc_scheduler كل 15 دقيقة (ابحث في السجلات عن ملخص commitment GC:)
  • الأعلام: swarm_scope_enforce مفعّل افتراضيًا (العمال محدودون بـ HIGH منذ 2026-08-15)؛ وenforce_unknown_mutators مفعّل افتراضيًا؛ وsoul_requires_confirm معطّل افتراضيًا في المختبر ومفعّل تلقائيًا في الإنتاج / تعدد المستخدمين — يبدّله المشغّلون عبر ConfigStore / env
  • نقطة القياس: GET /metrics تعرض kazma_commitment_decisions_total{decision=...} + kazma_commitment_pending
  • طابور تأكيد الروح: GET /api/commitment/soul/pending يسرد الفروقات المعلّقة؛ وPOST /api/commitment/soul/{cid}/confirm يمنح الموافقة
  • استثناءات الأدوات الدلالية تفشل مغلقًا (مفتاح الإيقاف نفسه يبقى فاشلًا مفتوحًا)

سجل بوابات HITL وتسليم الأدوار

Section titled “سجل بوابات HITL وتسليم الأدوار”
  • kazma-data/hitl_gates.db يكتب صفوفًا (pending → claimed → settled)
  • الويب يرسم من _serverGates — لا ختم Approved وهميًا؛ والمطالبة الثانية 409
  • FanOut للسرب (منصتان أو أكثر) ثلاثي الحالة (الرفض صوت، لا تسوية فورية)
  • KAZMA_GATE_REGISTRY=0 غير مضبوط في الإنتاج (مسار التنفيذ النحيف احتياطًا فقط)
  • close_turn يُبقي الدور مفتوحًا ما دام صف معلّق قائم

النسخ الاحتياطي وتنبيهات التشغيل

Section titled “النسخ الاحتياطي وتنبيهات التشغيل”
  • وتيرة النسخ الشامل + native_pg_backup هي 6 ساعات (ليست 24 ساعة)؛ والاحتفاظ الافتراضي بمنصة PG المحلية 3 (restic يحفظ التاريخ)
  • مع Postgres: تدريب الاستعادة في التمرين العميق الأسبوعي مفعّل (افتراضي منذ 2026-09-27) ودور قاعدة البيانات يملك CREATEDB؛ وسجل التمرين يسمّي postgres:restore
  • مدة الاحتفاظ بـ سجل خطوات الدردشة كما تريد (الإعدادات → النظام؛ الافتراضي 30 يومًا، و0 يحتفظ بكل نقطة تفتيش). تثبيتٌ يُرقّى ومعه سنوات من السجل: اضبطها قبل الترقية إن أردت الاحتفاظ بها
  • النسخ الشامل يفحص حداثة تفريغ PG — التفريغ المفقود/القديم ليس "ok": true
  • ops_alerts تصل تيليجرام (وFanOut إن كان Discord/Slack مضبوطًا): الإعدادات ← المحوّلات والمسارات ← إرسال تنبيه تجريبي يسمّي كل مسار وصلته الرسالة؛ ومفتاح الإيقاف KAZMA_OPS_ALERTS=0 فقط أثناء حادثة صاخبة
  • تيليجرام الحارس منفصل (سقوط الابن). جودة سبب الـ 503 ‏(database: … مقابل Service Unavailable) مؤجَّلة: GUARD_OPS_ALERTING_CAUSE_QUALITY.md