
ذاكرة ذكاء اصطناعي وكيلية مع انحلال منحنى النسيان لإبنجهاوس. +16 نقطة مئوية أفضل استرجاع من Mem0 على LoCoMo.

ذاكرة دائمة ومحسّنة ذاتيًا لوكلاء AI — مبنية على علم كيفية تذكر البشر.
▶ جرّب العرض التفاعلي المباشر · الموقع الإلكتروني · المعايير
كل صباح يعاملك وكيل AI الخاص بك كغريب. نفس السياق يُعاد شرحه. نفس التفضيلات تُنسى. كل جلسة تبدأ من الصفر.
معظم أدوات "الذاكرة" تربط قاعدة بيانات متجهات بالوكيل وتسميها مكتملة — لكن هذا مجرد تخزين. إنها تكتنز كل تكرار تقريبًا حتى يغرق الاسترجاع في الضوضاء. سمكة ذهبية بحوض أكبر.
YourMemory مختلف: ذاكرة تعمل كالدماغ، وليس كقاعدة بيانات.
flowchart LR
A["🧠 أنت تخبر<br/>AI الخاص بك بشيء"] --> B["استخراج حقائق<br/>دائمة"]
B --> C["إزالة التكرار + تضمين<br/>+ ربط بياني"]
C --> D[("مخزن<br/>الذاكرة")]
D -->|"تراكم الحقائق ذات الصلة"| E["✨ دمج<br/>N → 1 ملخص"]
D -->|"قديم + غير مستخدم"| F["📉 اضمحلال<br/>+ تقليم"]
D -->|"جلسة جديدة"| G["♻️ استرجاع<br/>هجين + بياني"]
E --> D
G --> H["🤖 وكيلك<br/>يواصل من حيث<br/>توقف"]
style D fill:#0a2540,stroke:#19cdff,color:#fff
style E fill:#0c2b3a,stroke:#5eead4,color:#fff
style H fill:#0c2b3a,stroke:#19cdff,color:#fff
أمر واحد للتثبيت. DuckDB افتراضيًا (بدون إعداد)، Postgres + pgvector للفرق.
ثلاث مجموعات بيانات خارجية. كل رقم قابل لإعادة الإنتاج بشكل مستقل — كود المعايير موجود في المستودع. المنهجية الكاملة في BENCHMARKS.md.
xychart-beta
title "Recall@5 · LoCoMo-10 (الأعلى أفضل)"
x-axis ["Mem0", "Zep Cloud", "Supermemory", "YourMemory"]
y-axis "نسبة Recall@5" 0 --> 70
bar [18, 28, 31, 59]
استرجاع أفضل بمرتين من Zep Cloud عبر جميع العينات العشر. *Supermemory وMem0 استنفدا حصص الطبقة المجانية في منتصف المعيار؛ النتائج محسوبة على كامل أزواج 1,534.
أصعب معيار قياسي للذاكرة طويلة المدى. كل سؤال مدفون في حوالي 53 جلسة.
| المقياس | الدرجة |
|---|---|
| Recall@5 (أي جلسة ذهبية في أعلى 5) | 89.4% |
| Recall-all@5 (جميع الجلسات الذهبية في أعلى 5) | 84.8% |
| nDCG@5 (جودة الترتيب) | 87.4% |
| النظام | BOTH_FOUND@5 |
|---|---|
| YourMemory (متجه + BM25 + رسم بياني للكيانات) | 71.5% |
| YourMemory (بدون حواف الكيانات) | 59.5% |
حواف الرسم البياني للكيانات تضيف +12 نقطة مئوية — تنتقل من الحقيقة 1 إلى الحقيقة 2 حتى عندما تكون الحقيقة 2 ذات تشابه تضمين منخفض مع الاستعلام.
شرح: لقد بنيت اضمحلال الذاكرة لوكلاء AI باستخدام منحنى نسيان إبينجهاوس
Python 3.11–3.14. لا حاجة لـ Docker، لا إعداد قاعدة بيانات. جميع الذكريات مخزنة محليًا في ~/.yourmemory/.
pip install yourmemory
yourmemory-register <your-token>
yourmemory-setup
احصل على رمزك: قم بزيارة yourmemoryai.xyz ← أدخل بريدك الإلكتروني ← تحقق برمز مكون من 6 أرقام ← انسخ رمزك.
yourmemory-setup يكتشف تلقائيًا ويربط Claude Code، Claude Desktop، Cursor، Windsurf، و Cline، ثم يسأل عن أي جزء خلفي تريد استخدامه:
DATABASE_URL (يحتاج إلى إضافة pgvector)اختياري — استخراج محلي أكثر ذكاءً: يعمل YourMemory فورًا باستخدام إرشادات مدمجة. لاستخراج حقائق عالي الجودة ومحلي بالكامل، قم بتثبيت Ollama ويسحب
yourmemory-setupالنموذج (qwen2.5:7b، حوالي 4.7 جيجابايت) تلقائيًا. تفضل السحابة؟ قم بتعيينYOURMEMORY_EXTRACT_BACKEND=anthropic.
هل تفضل عدم لمس pip؟ احصل على الملف الثنائي المستقل لمنصتك من الإصدار الأحدث:
| المنصة | الملف |
|---|---|
| macOS (Apple Silicon) | yourmemory-macos-arm64.tar.gz |
| macOS (Intel) | yourmemory-macos-x86_64.tar.gz |
# macOS / Linux — تنزيل، فك ضغط، تشغيل
tar -xzf yourmemory-macos-arm64.tar.gz
./yourmemory-macos-arm64 register <your-token>
./yourmemory-macos-arm64 setup
./yourmemory-macos-arm64 # بدء الخادم
ملف تنفيذي واحد يتعامل مع كل أمر: register, setup, ask "<question>", path, و (بدون وسائط) يبدأ الخادم.
مكتفٍ ذاتيًا بالكامل وغير متصل — يحتوي الملف الثنائي على Python، كل التبعيات، وكلاهما النموذجين (نموذج التضمين + spaCy). لا شيء يُنزل عند التشغيل الأول. الثمن هو الحجم (~2 جيجابايت). قم ببناء خاصتك بأمر واحد — ./build-binary.sh — ويتم إنتاج ملفات ثنائية متعددة المنصات تلقائيًا بواسطة سير العمل البناء.
تعامل YourMemory الذاكرة كنظام حي — إنها تنمو، وتندمج، وتنسى، وتتصل، بالطريقة التي يعمل بها الدماغ.
معظم أدوات الذاكرة تستمر في النمو فقط. تراقب YourMemory تجمعات الحقائق ذات الصلة وبمجرد تراكم ما يكفي، تضغطها في ملخص نظيف واحد — مع أرشفة الأصول (لا تحذف أبدًا، فلا شيء يُفقد).
flowchart LR
subgraph before [تراكم الحقائق ذات الصلة]
A1["Railway تستخدم Nixpacks"]
A2["Railway على خطة Pro"]
A3["متغيرات بيئة Railway تحتوي<br/>على رابط Postgres"]
A4["تنشر على Railway<br/>مع Postgres"]
end
before --> C{"تجميع +<br/>تلخيص LLM"}
C --> S["✨ ملخص<br/>ينشر على Railway (Pro،<br/>Nixpacks) مع Postgres<br/>عبر متغيرات البيئة"]
C -.->|"مؤرشف، قابل للاسترداد"| ARC[("الأرشيف")]
style S fill:#0a2540,stroke:#5eead4,color:#fff
style C fill:#0c2b3a,stroke:#19cdff,color:#fff
مثال حقيقي من مخزن إنتاجي: 444 ذكرى → 16 ملخصًا — نفس المعرفة، جزء بسيط من الضوضاء. الدمج مدفوع بالأحداث (يتم تشغيله عند تراكم الذكريات ذات الصلة)، وليس وظيفة ليلية عمياء.
قوة الذاكرة تتحلل بشكل أسي. الأهمية وتكرار الاسترجاع يبطئان هذا الاضمحلال:
effective_λ = base_λ × (1 − importance × 0.8)
strength = clamp(importance × e^(−effective_λ × active_days) × (1 + recall_count × 0.2), 0, 1)
active_days تحسب فقط الأيام التي كنت نشطًا فيها — العطلات لا تسبب فقدان الذاكرة. الذكريات التي تقل قوتها عن 0.05 تُقلم تلقائيًا. كل فئة تشيخ بمعدلها الخاص:
التقليم المدرك للسلسلة: الذكرى المتدهورة تبقى حية إذا كان أي جار في الرسم البياني لا يزال قويًا — السياق الحامل للحمل يبقى حتى عند الاستعلام عنه نادرًا مباشرة.
يتم الاسترجاع في جولتين بحيث يظهر ما طلبته و ما نسيت أن تطلبه:
flowchart LR
Q["استعلام"] --> R1["بحث هجين<br/>متجه + BM25"]
R1 --> R2["توسيع بياني<br/>(ما نسيت أن تطلبه)"]
R2 --> S["ترتيب حسب<br/>التشابه × القوة"]
S --> OUT["🎯 ذكريات مرتبة"]
style OUT fill:#0a2540,stroke:#19cdff,color:#fff
إزالة التكرار المدرك للموضوع يجري قبل كل تخزين — يدمج موضوع كل جملة بحيث "Sachit يستخدم DuckDB" و "YourMemory يستخدم DuckDB" يبقيان منفصلين (كيانات مختلفة)، بينما "YourMemory يستخدم DuckDB" و "YourMemory يخزن البيانات في DuckDB" يندمجان (نفس الكيان). لا قوائم كلمات ثابتة؛ يعمم على أي لغة.
لن تسمح الشركات لصندوق أسود معتم بتخزين بياناتها. لذلك كل عملية — قراءة، كتابة، تحديث، حذف، دمج — تُلحق بسجل تدقيق مربوط بالتجزئة، ومقاوم للتلاعب.
flowchart LR
E0["GENESIS"] --> E1
subgraph E1 [الحدث 1]
H1["row_hash =<br/>sha256(prev + data)"]
end
E1 --> E2
subgraph E2 [الحدث 2]
H2["row_hash =<br/>sha256(#1.hash + data)"]
end
E2 --> E3
subgraph E3 [الحدث 3]
H3["row_hash =<br/>sha256(#2.hash + data)"]
end
E3 --> V{"GET /audit/verify"}
V -->|السلسلة سليمة| OK["✅ تم التحقق"]
V -->|أي صف معدّل| BAD["❌ السلسلة تنقطع<br/>عند هذا الصف"]
style OK fill:#0a2540,stroke:#5eead4,color:#fff
style BAD fill:#3a0c14,stroke:#fb7185,color:#fff
كل صف يسجل الطابع الزمني، المستخدم الفاعل + الوكيل، الإجراء، العملية، الذاكرة المستهدفة، المصدر (http مقابل mcp)، وتجزئة الصف السابق. قم بتغيير أي سجل تاريخي وverify_chain() يحدد بالضبط أين انكسرت السلسلة.
GET /audit # تصفح السجل (تصفية حسب المستخدم / الإجراء / العملية)
GET /audit/verify # التحقق التشفيري من أن السلسلة غير معدلة
POST /audit/prune # تنظيف يعتمد على الاحتفاظ (90 يومًا كحد أدنى، لا تقل أبدًا)
تسجيل التدقيق هو فشل مفتوح — لا يمنع أبدًا عملية ذاكرة — ويتم استبعاد أحداث القراءة/القائمة من حلقة العرض الخاصة بلوحة التحكم، لذلك يبقى السجل إشارة وليس ضوضاء.
امنح وكلاء فريق بأكمله دماغًا مشتركًا واحدًا — دون تسريب سياق أي شخص الخاص. الذكريات إما مشتركة (مرئية للمجموعة) أو خاصة (مرئية فقط لمالكها).
flowchart TB
P(("🧠 مجموعة الفريق<br/>الذاكرة المشتركة"))
A["وكيل أليس"] <-->|مشتركة| P
B["وكيل بوب"] <-->|مشتركة| P
C["وكيل كارول"] <-->|مشتركة| P
A -. خاصة .-> AP["🔒 فقط أليس"]
B -. خاصة .-> BP["🔒 فقط بوب"]
style P fill:#0a2540,stroke:#19cdff,color:#fff
style AP fill:#0c1424,stroke:#5a6b80,color:#8294a8
style BP fill:#0c1424,stroke:#5a6b80,color:#8294a8
الوصول القائم على الأدوار يُفرض لكل وكيل — ما يتعلمه وكيل مهندس واحد، يستفيد منه الفريق بأكمله فورًا؛ السياق الحساس يبقى محصورًا في مالكه.
POST /pools # إنشاء مجموعة
POST /pools/{id}/members # إضافة عضو (مع دور)
POST /pools/{id}/memories # المساهمة بذاكرة مشتركة
POST /pools/{id}/retrieve # استرجاع عبر المجموعة
لأن الذاكرة التي تخزن بيانات حقيقية تحتاج إلى الضوابط لتكون جديرة بالثقة:
بالاقتران مع سجل التدقيق المربوط بالتجزئة وحد أدنى للاحتفاظ 90 يومًا، هذه الخرائط مباشرة إلى الضوابط الموثقة في SECURITY.md (متوافقة مع SOC 2).
واجهتا مستخدم مدمجتان في المتصفح — لا إعداد إضافي، تبدأان تلقائيًا مع الخادم.
http://localhost:3033/uiعرض كامل للقراءة/الكتابة مع علامات تبويب الذكريات · التدقيق · المجموعات: شريط إحصاءات (قوية / متلاشية / قريبة من التقليم)، علامات تبويب لكل وكيل، بطاقات ذاكرة مع أشرطة قوة حية، مرشحات الفئة، سجل التدقيق، وإدارة المجموعة.
http://localhost:3033/graphخريطة تفاعلية موجهة بالقوى لكيفية اتصال الذكريات — الذاكرة الجذرية كعقدة ساطعة، الجيران ملونون حسب الفئة، سمك الحافة = قوة الاتصال. اسحب، زوّم، وانقر على أي عقدة لمحتواها الكامل.
http://localhost:3033/graph?memoryId=42&userId=alex&depth=2
ثلاث أدوات، يستدعيها AI الخاص بك تلقائيًا.
# تخزين مع سياق مكاني
store_memory(
"Alex يفضل المسافات على علامات التبويب في Python",
importance=0.9, category="fact",
context_paths=["/projects/backend"],
)
# الجلسة التالية — يشتعل التعزيز المكاني عند العمل في هذا الدليل
recall_memory("تنسيق Python", current_path="/projects/backend")
# → {"content": "Alex يفضل المسافات على علامات التبويب في Python", "strength": 0.87}
نظام الذاكرة الوحيد الذي يمكنه الإجابة على الأسئلة دون إجراء أي استدعاء LLM API:
yourmemory ask "ما قاعدة البيانات التي يستخدمها هذا المشروع"
# → YourMemory يستخدم DuckDB محليًا و Postgres في الإنتاج.
yourmemory ask "كيف أصلح نشر Kubernetes"
# → لا يوجد سياق ذاكرة كافٍ للإجابة دون LLM.
عندما تكون الذاكرة قوية بما فيه الكفاية، تجيب فورًا — صفر رمز، صفر تكلفة سحابية، صفر زمن وصول. عندما لا تكون كذلك، ترفض بشكل نظيف بدلاً من التخيل. استفسارك لا يغادر جهازك أبدًا.
أدوات MCP تُستدعى وفق تقدير AI. وكيل API يزيل هذا الغموض — يعترض كل استدعاء LLM، يحقن الذكريات ذات الصلة تلقائيًا، ويعالج store_memory / update_memory دون أي تكوين نموذج.
ابدأ الخادم (yourmemory)، ثم وجه عميلك إلى localhost:3033:
from anthropic import Anthropic
client = Anthropic(
api_key="sk-ant-...",
base_url="http://localhost:3033/proxy/anthropic",
default_headers={"X-YourMemory-User": "alex"}, # ذاكرة لكل مستخدم
)
# يتم حقن الذاكرة تلقائيًا — لا حاجة لتغييرات أخرى
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "ما قاعدة البيانات التي أستخدمها؟"}],
)
يعمل OpenAI بنفس الطريقة عبر base_url="http://localhost:3033/proxy/openai".
flowchart LR
C["عميل AI الخاص بك<br/>Claude · Cursor · أي MCP"] <--> Y["🧠 YourMemory"]
Y --> M[("مخزن<br/>الذاكرة")]
Y --> A[("دفتر الأستاذ<br/>التدقيق")]
style Y fill:#0a2540,stroke:#19cdff,color:#fff
style M fill:#0c1a2c,stroke:#5eead4,color:#fff
style A fill:#0c1a2c,stroke:#5eead4,color:#fff
الكتابة تتعطل / تنتهي المهلة (قفل الكتابة الوحيد لـ DuckDB). إذا كان خادم MCP وخادم HTTP يعملان في نفس الوقت، يتنافسان على قفل الكتابة. الإصلاح:
pkill -f yourmemory 2>/dev/null || true
rm -f ~/.yourmemory/memories.duckdb.wal ~/.yourmemory/memories.duckdb.lock 2>/dev/null || true
# أعد تشغيل عميلك
هل تستخدم Claude Desktop (MCP) و Claude Code (خطافات) في وقت واحد؟ استخدم SQLite بدلاً من ذلك — يتعامل مع القراء/الكتّاب المتزامنين بشكل نظيف:
DATABASE_URL=sqlite:///~/.yourmemory/memories.db
الطلبات مرحب بها — راجع CONTRIBUTORS.md.
حقوق النشر 2026 Sachit Misra — مرخص بموجب CC-BY-NC-4.0.
مجاني للاستخدام الشخصي، التعليم، البحث الأكاديمي، والمشاريع مفتوحة المصدر. الاستخدام التجاري يتطلب اتفاقية خطية منفصلة → [email protected]
pip install yourmemory| الميزة | ماذا تفعل |
|---|
| 🧠 | الدمج | عندما تتراكم حقائق كافية ذات صلة، تُضغط في ملخص نظيف واحد وتُؤرشف الأصول. الذاكرة تصبح أكثر حدة مع الوقت، وليست منتفخة. |
| 📉 | الاضمحلال البيولوجي | كل ذكرى تتقدم في العمر وفق منحنى نسيان إبينجهاوس. الحقائق القديمة غير المستخدمة تتلاشى؛ المهمة والتي يتم استرجاعها بشكل متكرر تبقى. |
| 🔗 | الرسم البياني للكيانات | الذكريات ترتبط بالأشخاص والأماكن والمفاهيم المشتركة — بحيث يُظهر الاسترجاع ما نسيت أن تطلبه. |
| ♻️ | البقاء بعد إعادة تعيين السياق | عندما يضيق نافذة السياق، يعيد YourMemory سياق العمل — لا حاجة لإعادة قراءة الملفات لمعرفة أين كنت. |
| 🔒 | سجل تدقيق مقاوم للتلاعب | كل قراءة / كتابة / حذف يُسجل في دفتر أستاذ مربوط بالتجزئة. تغيير سجل واحد يكسر السلسلة. |
| 👥 | مجموعات ذاكرة الفريق | ذاكرة مشتركة قائمة على الأدوار، بحيث تستفيد وكلاء الفريق بأكمله من نفس المعرفة المؤسسية — مع بقاء الذكريات الخاصة خاصة. |
| 🛡️ | حقوق البيانات مضمونة | أمر واحد للتصدير (حق الوصول) والحق في النسيان (المسح)، بالإضافة إلى ضوابط متوافقة مع SOC 2. |
| 🔌 | مدمج مع MCP ومحلي أولاً | يعمل مع Claude وCursor وCline وWindsurf أو أي عميل MCP. يعمل بالكامل على جهازك — لا حاجة لمفتاح API، لا شيء يغادر نظامك. |
| Linux (x86-64) | yourmemory-linux-x86_64.tar.gz |
| Windows (x86-64) | yourmemory-windows-x86_64.exe.zip |
| الفئة | نصف العمر | الأفضل لـ |
|---|
strategy | ~38 يومًا | الأنماط التي نجحت، القرارات المعمارية |
fact | ~24 يومًا | التفضيلات، الهوية، المعرفة المستقرة |
assumption | ~19 يومًا | السياق المستنتج، المعتقدات غير المؤكدة |
failure | ~11 يومًا | الأخطاء، الطرق الخاطئة، المشكلات الخاصة بالبيئة |
| الحق | نقطة النهاية | ماذا تفعل |
|---|
| الوصول (تصدير DSAR) | GET /users/{id}/export | تصدير كامل لكل شيء مخزن لمستخدم |
| المسح (حق النسيان) | DELETE /users/{id}/memories | أمر واحد لمسح ذكريات المستخدم |
| قابلية النقل | POST /users/{id}/import | إعادة استيراد تصدير سابق |
| قابلية الاسترداد | GET /users/{id}/archive | استرجاع الأصول التي تم دمجها بعيدًا |
| الأداة | عندما يستدعيها AI الخاص بك | ماذا تفعل |
|---|
recall_memory(query, current_path?) | بداية كل مهمة | يعرض الذكريات مرتبة حسب التشابه × قوة الاضمحلال؛ تعزيز مكاني للذكريات المطابقة للمسار |
store_memory(content, importance, category?, context_paths?) | بعد تعلم شيء جديد | يدمج، يزيل التكرار، يخزن مع الاضمحلال؛ يوسم مسارات ملف/مجلد اختيارية |
update_memory(id, new_content, importance) | عندما تكون حقيقة مخزنة قديمة | يعيد التضمين والاستبدال؛ يسجل التغيير في سجل التدقيق |
| المكون | الدور |
|---|
| DuckDB | مخزن المتجهات الافتراضي — بدون إعداد، تشابه جيب التمام الأصلي |
| PostgreSQL + pgvector | اختياري — للفرق أو مجموعات البيانات الكبيرة |
| NetworkX | الجزء الخلفي البياني الافتراضي (~/.yourmemory/graph.pkl) |
| Neo4j | الجزء الخلفي البياني الاختياري |
| sentence-transformers | التضمينات المحلية (multi-qa-mpnet-base-dot-v1, 768 بعدًا) |
| spaCy | NLP محلي لإزالة التكرار واستخراج الكيانات |
| APScheduler | الاضمحلال التلقائي + التقليم |