Plugin guides
ويكي الذاكرة
memory-wiki هو Plugin مضمّن يجمع المعرفة الدائمة في ويكي قابلة للتصفح: صفحات حتمية، وادعاءات منظّمة مدعومة بالأدلة، ومعلومات المصدر، ولوحات معلومات، وملخصات قابلة للقراءة آليًا.
لا يحل محل Plugin الذاكرة النشطة. تظل مسؤولية الاسترجاع، والترقية، والفهرسة، وDreaming مملوكة لواجهة الذاكرة الخلفية التي تم تكوينها (memory-core أو QMD أو Honcho أو غيرها). يعمل memory-wiki إلى جانبها ويجمع المعرفة في طبقة ويكي خاضعة للصيانة.
| الطبقة | المسؤوليات |
|---|---|
| Plugin الذاكرة النشطة | الاسترجاع، والبحث الدلالي، والترقية، وDreaming، وبيئة تشغيل الذاكرة |
memory-wiki |
صفحات الويكي المجمّعة، والتركيبات الغنية بمعلومات المصدر، ولوحات المعلومات، وبحث/جلب/تطبيق الويكي |
قاعدة عملية:
- استخدم
memory_searchلإجراء عملية استرجاع واسعة واحدة عبر أي مجموعات محتوى تم تكوينها - استخدم
wiki_search/wiki_getعندما تريد ترتيبًا خاصًا بالويكي، أو معلومات المصدر، أو بنية اعتقادات على مستوى الصفحة - استخدم
memory_search corpus=allلتغطية الطبقتين في استدعاء واحد، عندما يدعم Plugin الذاكرة النشطة تحديد مجموعة المحتوى
إعداد شائع يعطي الأولوية للتشغيل المحلي: استخدام QMD كواجهة خلفية للذاكرة النشطة من أجل الاسترجاع، واستخدام memory-wiki في وضع bridge للصفحات الدائمة المركّبة. راجع مثال وضع QMD + bridge ضمن التكوين.
إذا أبلغ وضع bridge عن عدم وجود أي عناصر مصدّرة، فهذا يعني أن Plugin الذاكرة النشطة لا يوفّر حاليًا مدخلات bridge عامة. شغّل openclaw wiki doctor أولًا، ثم تأكد من أن Plugin الذاكرة النشطة يدعم العناصر العامة.
أوضاع المخزن
isolated(الافتراضي): مخزن مستقل، ومصادر مستقلة، ومن دون اعتماد على Plugin الذاكرة النشطة. استخدمه لمستودع معرفة منسّق ومكتفٍ ذاتيًا.bridge: يقرأ عناصر الذاكرة العامة وسجلات الأحداث من Plugin الذاكرة النشطة عبر واجهات plugin SDK العامة. استخدمه لتجميع العناصر التي يصدّرها Plugin الذاكرة من دون الوصول إلى مكوّناته الداخلية الخاصة.unsafe-local: منفذ صريح للاستخدام على الجهاز نفسه للوصول إلى المسارات المحلية الخاصة. تجريبي وغير قابل للنقل عن قصد؛ لا تستخدمه إلا عندما تفهم حدود الثقة وتحتاج تحديدًا إلى وصول محلي لنظام الملفات لا يستطيع وضع bridge توفيره.
وضع المخزن ونطاقه خياران منفصلان:
- يحدد
vaultModeمصدر مدخلات الويكي. - يحدد
vault.scopeما إذا كان جميع الوكلاء يستخدمون مخزنًا واحدًا أو يحصل كل وكيل على مخزن فرعي.
القيمة vault.scope: "global" هي الافتراضية وتحافظ على سلوك المخزن الواحد الحالي. استخدم vault.scope: "agent" مع وضع isolated أو bridge عندما يجب ألا يتشارك الوكلاء صفحات الويكي، أو الملخصات المجمّعة، أو نتائج البحث، أو عمليات الكتابة. لا يمكن الجمع بين نطاق الوكيل ووضع unsafe-local لأن تلك المسارات الخاصة المكوّنة ليست مدخلات مملوكة للوكيل. يرفض التحقق من صحة التكوين هذا الجمع.
يمكن لوضع bridge فهرسة ما يلي، وفق مفتاح التبديل المقابل في تكوين bridge.*:
- عناصر الذاكرة المصدّرة (
indexMemoryRoot) - الملاحظات اليومية (
indexDailyNotes) - تقارير Dreaming (
indexDreamReports) - سجلات أحداث الذاكرة (
followMemoryEvents)
عندما يكون وضع bridge نشطًا ويكون bridge.readMemoryArtifacts مفعّلًا، تُوجَّه أوامر openclaw wiki status وopenclaw wiki doctor وopenclaw wiki bridge import عبر Gateway قيد التشغيل، بحيث ترى سياق Plugin الذاكرة النشطة نفسه الذي تراه ذاكرة الوكيل/بيئة التشغيل. إذا كان bridge معطّلًا أو كانت قراءة العناصر متوقفة، تحتفظ هذه الأوامر بسلوكها المحلي/غير المتصل.
تخطيط المخزن
<vault>/ AGENTS.md WIKI.md index.md inbox.md entities/ concepts/ syntheses/ sources/ reports/ _attachments/ _views/ .openclaw-wiki/يبقى المحتوى المُدار داخل الكتل المُنشأة، بينما تُحفظ كتل الملاحظات البشرية عبر عمليات إعادة الإنشاء.
sources/: المواد الأولية المستوردة والصفحات المدعومة بواسطة bridge أوunsafe-localentities/: الأشياء والأشخاص والأنظمة والمشاريع والكائنات الدائمةconcepts/: الأفكار والتجريدات والأنماط والسياسات (وهو أيضًا موضع وصول واردات OKF)syntheses/: الملخصات المجمّعة والتجميعات الخاضعة للصيانةreports/: لوحات المعلومات المُنشأة
واردات تنسيق المعرفة المفتوح
openclaw wiki okf import ./bundles/ga4استورد حزمة غير مضغوطة بتنسيق المعرفة المفتوح إلى صفحات مفاهيم الويكي. يناسب ذلك الحالات التي ينتج فيها كتالوج بيانات أو زاحف توثيق أو وكيل إثراء محتوى بتنسيق OKF بالفعل: احتفظ بـ OKF كعنصر تبادل قابل للنقل، ودع memory-wiki يحوّله إلى صفحات مفاهيم أصلية لـ OpenClaw وملخصات مجمّعة.
- ملفات
.mdغير المحجوزة هي مستندات مفاهيم - يتطلب كل مفهوم مستورد حقل frontmatter غير فارغ باسم
type؛ يؤدي غيابtypeإلى تحذيرmissing-typeوتخطي الملف - تُقبل قيم
typeغير المعروفة كمفاهيم عامة - الملفان
index.mdوlog.mdمحجوزان ولا يُستوردان مطلقًا كمفاهيم - تُترك روابط Markdown المعطّلة أو الخارجية من دون تغيير
تُسطّح الصفحات المستوردة ضمن concepts/ بحيث تراها مسارات التجميع والبحث والجلب ولوحات المعلومات الحالية من دون شجرة ويكي ثانية. تحتفظ كل صفحة بمعرّف مفهوم OKF الأصلي، ومسار المصدر، وtype، وresource، وtags، والطابع الزمني، وfrontmatter الكامل الخاص بالمنتِج. يُعاد توجيه روابط OKF الداخلية إلى صفحات مفاهيم الويكي المُنشأة، كما تنشئ إدخالات relationships منظّمة تتضمن kind: okf-link.
الادعاءات والأدلة المنظّمة
تحمل الصفحات frontmatter منظّمًا باسم claims، وليس مجرد نص حر. يمكن أن يتضمن كل ادعاء id وtext وstatus وconfidence وevidence[] وupdatedAt. ويمكن أن يتضمن كل إدخال دليل kind وsourceId وpath وlines وweight وconfidence وprivacyTier وnote وupdatedAt.
يجعل ذلك الويكي تعمل كطبقة اعتقادات، لا كمستودع ملاحظات سلبي. يمكن تتبع الادعاءات وتقييمها والاعتراض عليها وحسمها بالرجوع إلى المصادر.
بيانات الكيانات الوصفية الموجّهة للوكلاء
تحمل صفحات الكيانات بيانات توجيه وصفية عامة قابلة للاستخدام مع الأشخاص أو الفرق أو الأنظمة أو المشاريع أو أي نوع آخر من الكيانات:
entityType: مثلpersonأوteamأوsystemأوprojectcanonicalId: مفتاح هوية ثابت عبر الأسماء البديلة والوارداتaliases: أسماء أو معرّفات أو تسميات تشير إلى الصفحة نفسهاprivacyTier: سلسلة حرة؛ تُعاملpublicعلى أنها لا تتطلب مراجعة، بينما تُعلّم أي قيمة أخرى (مثلlocal-privateأوsensitiveأوconfirm-before-use) فيreports/privacy-review.mdbestUsedFor/notEnoughFor: تلميحات توجيه مختصرةlastRefreshedAt: طابع زمني لتحديث المصدر، منفصل عن وقت تعديل الصفحةpersonCard: بطاقة توجيه اختيارية خاصة بالشخص (المعرّفات، وحسابات التواصل الاجتماعي، وعناوين البريد الإلكتروني، والمنطقة الزمنية، والمسار، وما يمكن سؤاله عنه، وما ينبغي تجنب سؤاله عنه، والثقة، ومستوى الخصوصية)relationships: حواف ذات أنواع إلى الصفحات ذات الصلة (الهدف، والنوع، والوزن، والثقة، ونوع الدليل، ومستوى الخصوصية، والملاحظة)
بالنسبة إلى ويكي الأشخاص، ابدأ بـ reports/person-agent-directory.md، ثم افتح صفحة الشخص باستخدام wiki_get قبل استخدام تفاصيل الاتصال أو الحقائق المستنتجة.
مثال على صفحة كيان
pageType: entityentityType: personid: entity.example-personcanonicalId: maintainer.example-personaliases:- Alex- example-handleprivacyTier: local-privatebestUsedFor:- Example ecosystem routingnotEnoughFor:- legal approvallastRefreshedAt: "2026-04-29T00:00:00.000Z"personCard:handles: - "@example-handle"socials: - "https://x.example/example-handle"emails: - alex@example.comtimezone: America/Chicagolane: Example ecosystemaskFor: - Example rollout questionsavoidAskingFor: - unrelated billing decisionsconfidence: 0.8privacyTier: confirm-before-userelationships:- targetId: entity.other-person targetTitle: Other Person kind: collaborates-with confidence: 0.7 evidenceKind: discrawl-statclaims:- id: claim.example.routing text: Alex is useful for example-ecosystem routing. status: supported confidence: 0.9 evidence: - kind: maintainer-whois sourceId: source.maintainers privacyTier: local-privateمسار التجميع
تقرأ عملية التجميع صفحات الويكي، وتوحّد الملخصات، وتنتج عناصر ثابتة موجّهة للآلات ضمن:
.openclaw-wiki/cache/agent-digest.json.openclaw-wiki/cache/claims.jsonl
تقرأ الوكلاء وشيفرة بيئة التشغيل هذه الملخصات بدلًا من استخلاص محتوى Markdown. كما يشغّل الناتج المجمّع الفهرسة الأولية للويكي من أجل البحث/الجلب، والبحث بمعرّف الادعاء وصولًا إلى الصفحة المالكة، وإضافات المطالبات المختصرة، وإنشاء التقارير.
لوحات المعلومات وتقارير السلامة
عندما يكون render.createDashboards مفعّلًا، تحافظ عملية التجميع على لوحات المعلومات ضمن reports/:
| التقرير | ما يتتبعه |
|---|---|
reports/open-questions.md |
الصفحات التي تتضمن أسئلة غير محسومة |
reports/contradictions.md |
مجموعات ملاحظات التناقض |
reports/low-confidence.md |
الصفحات والادعاءات منخفضة الثقة |
reports/claim-health.md |
الادعاءات التي تفتقر إلى أدلة منظّمة |
reports/stale-pages.md |
الصفحات القديمة أو ذات حداثة غير معروفة |
reports/person-agent-directory.md |
بطاقات توجيه الأشخاص/الكيانات |
reports/relationship-graph.md |
حواف العلاقات المنظّمة |
reports/provenance-coverage.md |
تغطية فئات الأدلة |
reports/privacy-review.md |
مستويات الخصوصية غير العامة التي تحتاج إلى مراجعة قبل الاستخدام |
البحث والاسترجاع
واجهتان خلفيتان للبحث:
shared: استخدام مسار بحث الذاكرة المشترك عند توفرهlocal: البحث في الويكي محليًا
ثلاث مجموعات محتوى: wiki وmemory وall.
- يستخدم
wiki_search/wiki_getالملخصات المجمّعة كمرحلة أولى متى أمكن - تُرجع معرّفات الادعاءات إلى الصفحة المالكة
- تؤثر الادعاءات المتنازع عليها والقديمة والحديثة في الترتيب
- تظل تسميات معلومات المصدر موجودة في النتائج
أوضاع البحث (--mode / معامل الأداة mode):
| الوضع | ما يعززه |
|---|---|
auto |
إعداد افتراضي متوازن |
find-person |
الكيانات الشبيهة بالأشخاص، والأسماء البديلة، والمعرّفات، وحسابات التواصل الاجتماعي، والمعرّفات الأساسية |
route-question |
بطاقات الوكلاء، وتلميحات ما يمكن سؤاله عنه/أفضل استخدام، وسياق العلاقات |
source-evidence |
صفحات المصادر والبيانات الوصفية للأدلة المنظّمة |
raw-claim |
الادعاءات المنظّمة المطابقة؛ يعيد البيانات الوصفية للادعاء/الدليل |
عندما تتطابق نتيجة مع ادعاء منظّم، يعيد wiki_search الحقول matchedClaimId وmatchedClaimStatus وmatchedClaimConfidence وevidenceKinds وevidenceSourceIds ضمن حمولة التفاصيل. يتضمن الإخراج النصي أسطر Claim: وEvidence: مختصرة عند توفرها.
أدوات الوكيل
| الأداة | الغرض |
|---|---|
wiki_status |
وضع الخزنة ونطاقها الحاليان، والوكيل المحدد، والحالة، ومدى توفر CLI الخاص بـ Obsidian |
wiki_search |
البحث في صفحات الويكي، وعند الإعداد، في مجموعة الذاكرة المشتركة؛ يقبل mode للبحث عن شخص أو توجيه الأسئلة أو أدلة المصادر أو الاستقصاء التفصيلي للادعاءات الأولية |
wiki_get |
قراءة صفحة ويكي حسب المعرّف/المسار، مع الرجوع إلى مجموعة الذاكرة المشتركة عند تمكين البحث المشترك وعدم العثور على نتيجة |
wiki_apply |
تعديلات محدودة على التوليف/البيانات الوصفية دون تحرير حر للصفحات |
wiki_lint |
فحوصات بنيوية، وفجوات في مصدر المعلومات، وتناقضات، وأسئلة مفتوحة |
يسجّل Plugin أيضًا ملحقًا غير حصري لمجموعة الذاكرة، بحيث يمكن لـ
memory_search وmemory_get المشتركين الوصول إلى الويكي عندما يدعم Plugin
الذاكرة النشط اختيار المجموعة.
سلوك الموجّه والسياق
عند تمكين context.includeCompiledDigestPrompt، تُلحق أقسام موجّه الذاكرة
لقطة مترجمة مدمجة من agent-digest.json: أهم الصفحات فقط،
وأهم الادعاءات فقط، وعدد التناقضات، وعدد الأسئلة، ومؤهلات الثقة/الحداثة.
هذه ميزة اختيارية لأنها تغيّر بنية الموجّه؛ وهي تهم أساسًا محركات السياق
أو عمليات تجميع الموجّهات التي تستهلك ملحقات الذاكرة صراحةً.
الإعداد
ضع الإعداد ضمن plugins.entries.memory-wiki.config:
{ plugins: { entries: { "memory-wiki": { enabled: true, config: { vaultMode: "isolated", vault: { scope: "global", path: "~/.openclaw/wiki/main", renderMode: "obsidian", }, obsidian: { enabled: true, useOfficialCli: true, vaultName: "OpenClaw Wiki", openAfterWrites: false, }, bridge: { enabled: false, readMemoryArtifacts: true, indexDreamReports: true, indexDailyNotes: true, indexMemoryRoot: true, followMemoryEvents: true, }, unsafeLocal: { allowPrivateMemoryCoreAccess: false, paths: [], }, ingest: { autoCompile: true, maxConcurrentJobs: 1, allowUrlIngest: true, }, search: { backend: "shared", corpus: "wiki", }, context: { includeCompiledDigestPrompt: false, }, render: { preserveHumanBlocks: true, createBacklinks: true, createDashboards: true, }, }, }, }, },}مفاتيح التبديل الأساسية:
| المفتاح | القيم / القيمة الافتراضية | الملاحظات |
|---|---|---|
vaultMode |
isolated (افتراضي)، bridge، unsafe-local |
يختار سلوك الإدخال والتكامل |
vault.scope |
global (افتراضي)، agent |
خزنة مشتركة واحدة أو خزنة فرعية واحدة لكل وكيل |
vault.path |
القيمة العامة الافتراضية ~/.openclaw/wiki/main |
مسار الخزنة الدقيق في النطاق العام؛ والمسار الأب الافتراضي لنطاق الوكيل هو ~/.openclaw/wiki |
vault.renderMode |
native (افتراضي)، obsidian |
|
bridge.readMemoryArtifacts |
الافتراضي true |
استيراد العناصر العامة الخاصة بـ Plugin الذاكرة النشط |
bridge.followMemoryEvents |
الافتراضي true |
تضمين سجلات الأحداث في وضع الجسر |
unsafeLocal.allowPrivateMemoryCoreAccess |
الافتراضي false |
مطلوب لتشغيل عمليات استيراد unsafe-local |
unsafeLocal.paths |
الافتراضي [] |
مسارات محلية صريحة للاستيراد في وضع unsafe-local |
search.backend |
shared (افتراضي)، local |
|
search.corpus |
wiki (افتراضي)، memory، all |
|
context.includeCompiledDigestPrompt |
الافتراضي false |
إلحاق لقطة الملخص المدمجة الخاصة بالوكيل المحدد بأقسام موجّه الذاكرة |
render.createBacklinks |
الافتراضي true |
إنشاء كتل مترابطة ذات نتائج حتمية |
render.createDashboards |
الافتراضي true |
إنشاء صفحات لوحات المعلومات |
خزنات منفصلة لكل وكيل
اضبط vault.scope على agent لمنح كل وكيل مُعدّ ويكي منفصلة.
في هذا النطاق، يكون vault.path دليلًا أبًا ويُلحق OpenClaw
معرّف الوكيل بعد تطبيعه:
{ agents: { list: [{ id: "support" }, { id: "marketing" }], }, plugins: { entries: { "memory-wiki": { enabled: true, config: { vaultMode: "bridge", vault: { scope: "agent", path: "~/.openclaw/wiki", }, bridge: { enabled: true, readMemoryArtifacts: true, }, }, }, }, },}ينتج عن ذلك المساران ~/.openclaw/wiki/support و
~/.openclaw/wiki/marketing. إذا أُغفل vault.path في نطاق الوكيل، تكون
القيمة الافتراضية للمسار الأب هي ~/.openclaw/wiki. لذلك يحتفظ الوكيل
الافتراضي main بالمسار الحالي ~/.openclaw/wiki/main.
تحدد أدوات الوكيل وملخصات الموجّه المترجمة وملحق الويكي المكشوف من خلال
memory_search / memory_get الخزنة من سياق الوكيل النشط.
بالنسبة إلى استدعاءات CLI وGateway في إعداد يحتوي عدة وكلاء مُعدّين، حدّد
الوكيل صراحةً باستخدام openclaw wiki --agent <agentId> ... أو agentId
في طلب Gateway. يظل الوكيل الوحيد المُعدّ هو الافتراضي عند عدم تقديم معرّف.
في وضع الجسر، لا تقبل عمليات الاستيراد ذات نطاق الوكيل عنصر ذاكرة عامًا إلا عندما
تتضمن agentIds الخاصة به الوكيل المحدد. تُتخطى العناصر المملوكة لوكيل آخر،
أو التي لا تحتوي على بيانات وصفية للملكية، أو التي لها مالك مجهول. يحتفظ النطاق العام
بسلوك العناصر المشتركة الحالي.
مثال: QMD + وضع الجسر
استخدم هذا عندما تريد QMD للاسترجاع وmemory-wiki لطبقة معرفية مُدارة.
تظل كل طبقة مركزة على مهمتها: يحافظ QMD على قابلية البحث في الملاحظات الأولية
وتصديرات الجلسات والمجموعات الإضافية، بينما يترجم memory-wiki
الكيانات والادعاءات ولوحات المعلومات وصفحات المصادر المستقرة.
{ memory: { backend: "qmd", }, plugins: { entries: { "memory-wiki": { enabled: true, config: { vaultMode: "bridge", bridge: { enabled: true, readMemoryArtifacts: true, indexDreamReports: true, indexDailyNotes: true, indexMemoryRoot: true, followMemoryEvents: true, }, search: { backend: "shared", corpus: "all", }, context: { includeCompiledDigestPrompt: false, }, }, }, }, },}يُبقي هذا QMD مسؤولًا عن استرجاع الذاكرة النشطة، ويركز memory-wiki على
الصفحات المترجمة ولوحات المعلومات، ويُبقي بنية الموجّه دون تغيير حتى
تُفعّل عمدًا موجّهات الملخص المترجم.
CLI
openclaw wiki statusopenclaw wiki doctoropenclaw wiki initopenclaw wiki ingest ./notes/alpha.mdopenclaw wiki compileopenclaw wiki lintopenclaw wiki search "alpha"openclaw wiki get entity.alphaopenclaw wiki apply synthesis "Alpha Summary" --body "..." --source-id source.alphaopenclaw wiki bridge importopenclaw wiki obsidian statusراجع CLI: الويكي للاطلاع على مرجع الأوامر الكامل، بما في ذلك
wiki okf import وwiki apply metadata وwiki unsafe-local import
وwiki chatgpt import / wiki chatgpt rollback، ومجموعة أوامر
wiki obsidian الفرعية الكاملة.
دعم Obsidian
عندما تكون قيمة vault.renderMode هي obsidian، يكتب Plugin صيغة
Markdown ملائمة لـ Obsidian، ويمكنه اختياريًا استخدام CLI الرسمي
obsidian لاستقصاء الحالة، والبحث في الخزنة، وفتح صفحة، واستدعاء أمر،
والانتقال إلى الملاحظة اليومية. هذا اختياري؛ تظل الويكي تعمل في الوضع
الأصلي دون Obsidian.
لا يزال بإمكان الخزنات ذات نطاق الوكيل استخدام Markdown الملائم لـ Obsidian،
لكن التحقق من الإعداد يرفض obsidian.useOfficialCli: true مع
vault.scope: "agent". إعداد obsidian.vaultName الحالي عام ولا يمكنه
تحديد خزنة Obsidian مميزة لكل وكيل. استخدم بدلًا من ذلك أدوات الويكي وعمليات
CLI، أو احتفظ بويكي يديرها Obsidian ضمن النطاق العام.
سير العمل الموصى به
احتفظ بـ Plugin الذاكرة النشط للاسترجاع
يبقى الاسترجاع والترقية وDreaming تحت مسؤولية واجهة الذاكرة الخلفية المُعدّة.
فعّل memory-wiki
ابدأ بالوضع isolated ما لم تكن تريد وضع الجسر صراحةً.
استخدم wiki_search / wiki_get عندما يكون مصدر المعلومات مهمًا
فضّلهما على memory_search عندما تريد ترتيبًا خاصًا بالويكي أو بنية معتقدات على مستوى الصفحة.
استخدم wiki_apply للتوليفات المحدودة أو تحديثات البيانات الوصفية
تجنب تحرير الكتل المُدارة والمُنشأة يدويًا.
شغّل wiki_lint بعد التغييرات المهمة
يكتشف التناقضات والأسئلة المفتوحة وفجوات مصدر المعلومات.
فعّل لوحات المعلومات لإظهار المحتوى القديم والتناقضات
اضبط render.createDashboards: true (افتراضي).