خزّن الذكريات طويلة الأمد واضغطها واسترجعها بضغط دلالي بلا فقدان للمعلومات. مع دعم الوسائط المتعددة الآن: نصوص وصور وصوت وفيديو.
يعمل مع أي منصة ذكاء اصطناعي تدعم MCP (ذاكرة نصية) أو تكامل Python (وسائط متعددة كاملة)
|
Claude Desktop |
Cursor |
LM Studio |
Cherry Studio |
حزمة PyPI |
+ أي عميل MCP |
🇨🇳 中文 •
🇯🇵 日本語 •
🇰🇷 한국어 •
🇪🇸 Español •
🇫🇷 Français •
🇩🇪 Deutsch •
🇧🇷 Português
🇷🇺 Русский •
🇸🇦 العربية •
🇮🇹 Italiano •
🇻🇳 Tiếng Việt •
🇹🇷 Türkçe •
🇬🇧 English
🚀 البداية السريعة • 🌟 نظرة عامة • 📦 التثبيت • 🔌 خادم MCP • 📊 إعادة الإنتاج • 📝 الاستشهاد
- [05/21/2026] 📦 حزمة
simplememالموحّدة — استيراد واحد، توجيه تلقائي! تعيش الآن SimpleMem وOmni-SimpleMem وEvolveMem في حزمة واحدة.from simplemem import SimpleMemيختار تلقائيًا الواجهة الخلفية النصية أو متعددة الوسائط بناءً على أول استدعاء تجريه، وsimplemem.optimize(...)يستغل حلقة التطوّر الذاتي في EvolveMem. ثبّتها في خطوة واحدة بـpip install -e .. - [05/14/2026] 🧬 EvolveMem (v3.0) — ذاكرة تتطور ذاتيًا عبر AutoResearch! تتطور البنية التحتية للاسترجاع ذاتيًا الآن من خلال تشخيص دائري مدفوع بنماذج اللغة الكبيرة. على LoCoMo، تتفوق EvolveMem على أقوى خط أساس بفارق +25.7% نسبي؛ وعلى MemBench بفارق +18.9% نسبي. يكتشف النظام أبعادًا جديدة للاسترجاع لم تكن موجودة في التصميم الأصلي. عرض EvolveMem →
- [04/02/2026] 🧠 Omni-SimpleMem (v2.0) — الذاكرة متعددة الوسائط هنا! تدعم SimpleMem الآن ذاكرة النصوص والصور والصوت والفيديو. محققةً أفضل أداء جديد على LoCoMo (F1=0.613, +47%) وMem-Gallery (F1=0.810, +51%) مقارنةً بأفضل نتيجة سابقة. عرض Omni-SimpleMem →
- [02/09/2026] 🚀 ذاكرة عبر الجلسات — تتفوق على Claude-Mem بنسبة 64%! عرض توثيق الذاكرة عبر الجلسات →
- [01/20/2026] 📦 SimpleMem متوفرة الآن على PyPI! ثبّتها عبر
pip install simplemem. عرض دليل استخدام الحزمة → - [01/14/2026] 🎉 خادم SimpleMem MCP أصبح مباشرًا! مستضاف سحابيًا على mcp.simplemem.cloud. عرض توثيق MCP →
- [01/05/2026] نُشرت ورقة SimpleMem على arXiv!
- 🚀 البداية السريعة
- 🌟 نظرة عامة
- 📦 التثبيت
- 🐳 Docker
- 🔌 خادم MCP
- 📊 إعادة إنتاج نتائج الورقة
- 🗺️ خارطة الطريق
- 📝 الاستشهاد
على مستوى رفيع، تعمل SimpleMem كنظام ذاكرة طويلة الأمد للوكلاء المبنية على نماذج اللغة الكبيرة. يتكون سير العمل من ثلاث خطوات بسيطة:
- تخزين المعلومات — تُعالَج الحوارات أو الحقائق وتُحوَّل إلى ذكريات منظّمة وذرية.
- فهرسة الذاكرة — تُنظَّم الذكريات المخزّنة باستخدام تضمينات دلالية وبيانات وصفية منظّمة.
- استرجاع الذاكرة ذات الصلة — عند تقديم استعلام، تسترجع SimpleMem المعلومات المخزّنة الأكثر صلةً بناءً على المعنى لا على الكلمات المفتاحية.
يتيح هذا التصميم لوكلاء نماذج اللغة الكبيرة الحفاظ على السياق واستدعاء المعلومات السابقة بكفاءة وتجنّب المعالجة المتكررة للتاريخ الزائد.
تُشحن SimpleMem كحزمة simplemem واحدة. الوضع الافتراضي mode="auto" يكتشف تلقائيًا الواجهة الخلفية التي يجب استخدامها بناءً على ما تستدعيه — دون الحاجة إلى أي إعداد يدوي:
from simplemem import SimpleMem
mem = SimpleMem() # mode="auto" — backend chosen by first callأول استدعاء تجريه يحدد الواجهة الخلفية:
| أول استدعاء | الواجهة الخلفية المختارة | السبب |
|---|---|---|
add_dialogue() |
نصية (SimpleMem) | واجهة برمجية قائمة على الحوار ← وضع النص |
add_text() / add_image() / add_audio() / add_video() |
شاملة (Omni-SimpleMem) | واجهة برمجية متعددة الوسائط ← الوضع الشامل |
|
📝 تلقائي ← نصي (إدخال نصي خالص) from simplemem import SimpleMem
mem = SimpleMem() # auto mode
# add_dialogue() → text backend auto-selected
mem.add_dialogue(
"Alice",
"Bob, let's meet at Starbucks tomorrow at 2pm",
"2025-11-15T14:30:00",
)
mem.add_dialogue(
"Bob",
"Sure, I'll bring the market analysis report",
"2025-11-15T14:31:00",
)
mem.finalize()
answer = mem.ask("When and where will Alice and Bob meet?")
# → "16 November 2025 at 2:00 PM at Starbucks" |
🧠 تلقائي ← شامل (إدخال متعدد الوسائط) from simplemem import SimpleMem
mem = SimpleMem() # auto mode
# add_image() → omni backend auto-selected
mem.add_text(
"User loves hiking in the Rocky Mountains.",
tags=["session_id:D1"],
)
mem.add_image("photo.jpg", tags=["session_id:D1"])
mem.add_audio("voice_note.wav", tags=["session_id:D1"])
result = mem.query("What does the user enjoy?", top_k=5)
for item in result.items:
print(item["summary"])
mem.close() |
💡 نصيحة: يختار الوضع التلقائي أخف واجهة خلفية تناسب بياناتك. لا يزال بإمكانك استخدام
mode="text"أوmode="omni"صراحةً إن كنت تفضل ذلك.
ضبط المعاملات الفائقة للاسترجاع دون اتصال على مجموعة التطوير الخاصة بك، ثم انشر Config الناتج للاستنتاج. هذه غلاف رفيع حول حلقة التطوّر الذاتي في EvolveMem:
import simplemem
from simplemem import SimpleMem, load_config
# mem is a finalized SimpleMem instance with memories already built
dev_questions = [
("When is the meeting?", "2pm tomorrow at Starbucks"),
("What should Bob prepare?", "market analysis report"),
]
config = simplemem.optimize(mem, dev_questions, max_rounds=3)
config.save("my_config.json")
# Later, deploy with the optimized config
config = load_config("my_config.json")
mem = SimpleMem(config=config)تشغّل EvolveMem دورة تقييم → تشخيص → اقتراح → حماية مدفوعة بنماذج اللغة الكبيرة على أسئلة التطوير الخاصة بك، مع ضبط أعلام الاسترجاع الشاملة (top_k، وضع الدمج، التحقق من الإجابة، جولات التأمل، ...). للنسخة المستقلة الكاملة مع محوّلات المعايير وتجاوزات لكل فئة، راجع
EvolveMem/.
لمعالجة الحوارات على نطاق واسع، مكّن الوضع المتوازي:
from simplemem import create
mem = create(
mode="text",
clear_db=True,
enable_parallel_processing=True, # ⚡ Parallel memory building
max_parallel_workers=8,
enable_parallel_retrieval=True, # 🔍 Parallel query execution
max_retrieval_workers=4
)💡 نصيحة احترافية: تقلل المعالجة المتوازية بشكل ملحوظ من زمن الاستجابة لعمليات الدُّفعات!
SimpleMem هي مجموعة ذاكرة موحّدة لوكلاء نماذج اللغة الكبيرة، مبنية على مبدأ واحد: تخزين ذاكرة دلالية بلا فقدان للمعلومات بكثافة معلوماتية عالية، حتى يتذكر الوكيل أكثر مع استهلاك رموز (tokens) أقل بكثير. تجمع الحزمة ثلاثة أعمال تشترك في هذا المبدأ لكنها تعالج أجزاء مختلفة من المشكلة.
تفرض معظم أنظمة الذاكرة مقايضةً سيئة. إما أن تتراكم تاريخ التفاعل الخام بشكل سلبي (زائد، يستهلك الرموز) أو تشغّل حلقات استدلال مكلفة لتصفية الضوضاء (بطيئة، مكلفة). تضغط SimpleMem بدلاً من ذلك التفاعلات عبر مسار من ثلاث مراحل:
| المرحلة | ما تفعله |
|---|---|
| 1. الضغط الدلالي المنظّم | تقطير التفاعلات غير المنظّمة إلى وحدات ذاكرة مدمجة (حقائق قائمة بذاتها بمراجع محلولة وطوابع زمنية مطلقة)، كل منها مفهرسة من خلال وجهات نظر متعددة متكاملة لاسترجاع مرن. |
| 2. التركيب الدلالي عبر الإنترنت | دمج السياق المتصل خلال جلسة في تمثيلات مجردة موحّدة، مع إزالة الازدواجية أثناء بناء الذاكرة لا في وقت الاستعلام. |
| 3. التخطيط الاسترجاعي الواعي بالنوايا | استنتاج نية البحث وراء الاستعلام لتحديد ما يجب استرجاعه وتجميع سياق دقيق ومدمج. |
يحقق هذا على معيار LoCoMo تحسينًا بنسبة 26.4% في متوسط F1 مقارنةً بالأنظمة السابقة مع تقليل استهلاك الرموز في وقت الاستنتاج بمقدار 30x تقريبًا. تفاصيل الآلية (طبقات الفهرس الهجين، أمثلة الضغط، تخطيط الاسترجاع): ذاكرة النص في SimpleMem →.
تمتد Omni-SimpleMem بفلسفة الضغط أولاً إلى أربع طرائق، مبنيةً على ثلاثة مبادئ: الاستيعاب الانتقائي (تصفية مدفوعة بالإنتروبيا لكل طريقة)، الاسترجاع التدريجي (FAISS + BM25 هجيني مع توسيع هرمي لميزانية الرموز)، وتعزيز الرسم البياني للمعرفة (استدلال متعدد الخطوات عبر الوسائط). بدلاً من أن يكون مصمَّمًا يدويًا، اكتُشفت بنيته بواسطة مسار بحث ذاتي أجرى نحو 50 تجربة عبر معيارين، يشخّص أوجه الفشل ويقترح تغييرات معمارية بل ويصلح أخطاء مسار البيانات دون تدخل بشري في الحلقة الداخلية. والجدير بالذكر أن إصلاحات الأخطاء والتغييرات المعمارية أسهمت أكثر من كل ضبط المعاملات الفائقة مجتمعةً، محوّلةً النظام من خط أساس ساذج إلى أفضل أداء على كل من LoCoMo وMem-Gallery. التوثيق الكامل: Omni-SimpleMem →.
تسد EvolveMem نقطة عمياء يشاركها تقريبًا كل نظام ذاكرة: المحتوى المخزّن يتطور، لكن آلية الاسترجاع (دوال التسجيل، استراتيجيات الدمج، سياسات توليد الإجابات) تبقى مجمّدة بعد النشر. تشغّل EvolveMem عملية AutoResearch دائرية الحلقة (تقييم ← تشخيص ← اقتراح ← حماية ← تكرار) يشخّص فيها نموذج لغوي كبير إخفاقات كل سؤال ويقترح تغييرات إعداد، محمية بإعادة طرح تلقائية عند الانحدار وحوافز استكشاف خلال الركود. تكتشف أبعادًا جديدة للاسترجاع (تحليل الاستعلام، تبادل الكيانات، التحقق من الإجابة) غير موجودة في التصميم الأصلي، وتحسّن LoCoMo بنسبة 25.7% نسبية على أقوى خط أساس، وإعداداتها المتطورة تنتقل إيجابيًا عبر المعايير. التوثيق الكامل: EvolveMem →.
from simplemem import SimpleMem يمنحك النواة النصية مع التوجيه التلقائي إلى الواجهة الخلفية متعددة الوسائط، وsimplemem.optimize(...) يستغل EvolveMem لضبط الاسترجاع لبياناتك الخاصة. حزمة واحدة، نموذج ذهني واحد: اضغط بلا فقدان، استرجع بحسب النوايا، ودع النظام يواصل تحسين ذاته.
- تأكد من استخدام Python 3.10+ في بيئتك النشطة، وليس مجرد التثبيت العالمي.
- يجب تهيئة مفتاح API متوافق مع OpenAI قبل تشغيل أي بناء للذاكرة أو استرجاع، وإلا قد يفشل التهيئة.
- عند استخدام مزودين من غير OpenAI (مثل Qwen أو Azure OpenAI)، تحقق من اسم النموذج و
OPENAI_BASE_URLفيconfig.py. - بالنسبة لمجموعات بيانات الحوار الكبيرة، يمكن أن يقلل تمكين المعالجة المتوازية بشكل ملحوظ من وقت بناء الذاكرة.
- 🐍 Python 3.10+
- 🔑 واجهة برمجية متوافقة مع OpenAI (OpenAI، Qwen، Azure OpenAI، إلخ.)
# 📥 Clone repository
git clone https://github.com/aiming-lab/SimpleMem.git
cd SimpleMem
# 📦 Install dependencies (pinned versions)
pip install -r requirements.txt
# — OR — install as an editable package
pip install -e . # default: text + multimodal + evolver
pip install -e ".[server]" # + MCP / HTTP server (mcp, fastapi, ...)
pip install -e ".[all]" # everything, including dev tools
# ⚙️ Configure API settings
cp config.py.example config.py
# Edit config.py with your API key and preferences# config.py
OPENAI_API_KEY = "your-api-key"
OPENAI_BASE_URL = None # or custom endpoint for Qwen/Azure
LLM_MODEL = "gpt-4.1-mini"
EMBEDDING_MODEL = "Qwen/Qwen3-Embedding-0.6B" # State-of-the-art retrievalيمكن تشغيل خادم MCP في Docker لبيئة متسقة ومعزولة. تُحفظ البيانات (LanceDB وقاعدة بيانات المستخدم) في وحدة تخزين على المضيف.
# From the repository root
docker compose up -d- واجهة الويب: http://localhost:8000/
- REST API: http://localhost:8000/api/
- MCP (SSE): http://localhost:8000/mcp/sse?token=<TOKEN>
تُخزَّن البيانات في ./data على المضيف (تُنشأ تلقائيًا).
- انسخ قالب البيئة وعدّله:
cp .env.example .env # Edit .env: set JWT_SECRET_KEY, ENCRYPTION_KEY, LLM_PROVIDER, model URLs, etc. - شغّل مع ملف البيئة:
docker compose --env-file .env up -d
عندما يكون LLM_PROVIDER=ollama ويعمل Ollama على جهازك (ليس في Docker)، عيّن في .env:
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434/v1على Linux، يُمكَّن host.docker.internal تلقائيًا عبر ملف Compose.
docker compose logs -f simplemem # Follow logs
docker compose down # Stop and remove containers📖 للاستضافة الذاتية لخادم MCP (Docker أو المعدن المجرد)، راجع توثيق MCP.
تتوفر SimpleMem كـخدمة ذاكرة مستضافة سحابيًا عبر بروتوكول Model Context Protocol (MCP)، مما يتيح التكامل السلس مع مساعدي الذكاء الاصطناعي مثل Claude Desktop وCursor وعملاء MCP الآخرين المتوافقين.
🌐 الخدمة السحابية: mcp.simplemem.cloud — أو استضف خادم MCP محليًا باستخدام Docker.
| الميزة | الوصف |
|---|---|
| HTTP قابل للتدفق | بروتوكول MCP 2025-03-26 مع JSON-RPC 2.0 |
| عزل متعدد المستأجرين | جداول بيانات لكل مستخدم مع مصادقة رمزية |
| الاسترجاع الهجين | بحث دلالي + مطابقة كلمات مفتاحية + تصفية بيانات وصفية |
| محسَّن للإنتاج | أوقات استجابة أسرع مع تكامل OpenRouter |
{
"mcpServers": {
"simplemem": {
"url": "https://mcp.simplemem.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}📖 للحصول على تعليمات الإعداد التفصيلية ودليل الاستضافة الذاتية، راجع توثيق MCP
أعد إنتاج أرقام LoCoMo / MemBench / Mem-Gallery من الأوراق البحثية. لكل ركيزة منشغلها الخاص بالمعايير في مجلدها الخاص. ثبّت إضافات المعيار أولاً: pip install -e ".[benchmark]".
شغّل من جذر المستودع:
python test_locomo10.py # full LoCoMo benchmark
python test_locomo10.py --num-samples 5 # quick subset
python test_locomo10.py --result-file my_results.jsonشغّل من مجلد EvolveMem/ (راجع EvolveMem/README.md):
cd EvolveMem
python run_evolution.py --data data/locomo10.json --max-rounds 7
python run_benchmark.py locomo --sample 0 --initial weak --max-rounds 3
python run_benchmark.py membench --agent FirstAgent --max-rounds 3شغّل من مجلد OmniSimpleMem/ (راجع OmniSimpleMem/README.md):
cd OmniSimpleMem
python benchmarks/locomo/run_locomo.py --data-path /path/to/locomo10.json --model gpt-4oالقدرة الحالية حسب قناة التكامل:
| القدرة | Python (pip install) |
خادم MCP (Claude Desktop، Cursor، ...) |
|---|---|---|
| ذاكرة نصية | ✅ | ✅ |
| وسائط متعددة (صورة / صوت / فيديو) | ✅ | ⬜ مخطط |
optimize() الاسترجاع المتطور ذاتيًا |
✅ | ⬜ مخطط |
العمل المخطط لسد الفجوة (خادم MCP هو خدمة نصية مستقلة متعددة المستأجرين؛ هذه ميزات حقيقية، وليست إصلاحات توثيق):
- وسائط متعددة عبر MCP. إضافة أدوات
memory_add_image/memory_add_audio/memory_add_video. يحتاج إلى مسار رفع ملفات (base64 أو URL، إذ لا يمكن لـ MCP تمرير مسارات الملفات المحلية)، وتكيّف متعدد المستأجرين لواجهة تخزين Omni-SimpleMem الخلفية، والوصول من جانب الخادم إلى نماذج الرؤية والصوت. - EvolveMem عبر MCP. كشف
optimize()كأداة MCP. أكثر قابليةً للتنفيذ من الوسائط المتعددة (نص دخل، JSON إعداد خرج، دون نقل ملفات)، لكن مسترجع MCP يدعم حاليًا فقطsemantic_top_k/keyword_top_kمن أصل ~10 أبعاد تطوّرها EvolveMem. يتطلب توسيع مسترجع MCP لدعم المقابض المتبقية (structured top_k، وضع/أوزان الدمج، تبادل الكيانات، تحليل الاستعلام، التحقق من الإجابة)، ومحوّل لتشغيل حلقة التطور على الذكريات المخزّنة للمستأجر، وثبات الإعداد لكل مستأجر، والتنفيذ غير المتزامن (الحلقة ثقيلة على نماذج اللغة وستتجاوز مهلة الطلب المتزامن). - Docker يرث كليهما تلقائيًا بمجرد دعم خادم MCP لهما (إضافة تبعيات الوسائط المتعددة إلى الصورة وحجم تخزين Omni).
للوسائط المتعددة والاسترجاع المتطور ذاتيًا اليوم، استخدم واجهة Python البرمجية (راجع البداية السريعة).
إذا استخدمت SimpleMem في بحثك، يرجى الاستشهاد بـ:
@article{simplemem2026,
title={SimpleMem: Efficient Lifelong Memory for LLM Agents},
author={Liu, Jiaqi and Su, Yaofeng and Xia, Peng and Zhou, Yiyang and Han, Siwei and Zheng, Zeyu and Xie, Cihang and Ding, Mingyu and Yao, Huaxiu},
journal={arXiv preprint arXiv:2601.02553},
year={2026},
url={https://arxiv.org/abs/2601.02553}
}@article{evolvemem2026,
title={EvolveMem: Self-Evolving Memory Architecture via AutoResearch for LLM Agents},
author={Liu, Jiaqi and Ye, Xinyu and Xia, Peng and Zheng, Zeyu and Xie, Cihang and Ding, Mingyu and Yao, Huaxiu},
journal={arXiv preprint arXiv:2605.13941},
year={2026},
url={https://arxiv.org/abs/2605.13941}
}@article{omnisimplemem2026,
title = {Omni-SimpleMem: Autoresearch-Guided Discovery of Lifelong Multimodal Agent Memory},
author = {Liu, Jiaqi and Ling, Zipeng and Qiu, Shi and Liu, Yanqing and Han, Siwei and Xia, Peng and Tu, Haoqin and Zheng, Zeyu and Xie, Cihang and Fleming, Charles and Ding, Mingyu and Yao, Huaxiu},
journal = {arXiv preprint arXiv:2604.01007},
year = {2026},
}هذا المشروع مرخّص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.
نودّ أن نشكر المشاريع والفرق التالية:
- 🔍 نموذج التضمين: Qwen3-Embedding - أداء استرجاع متطور
- 🗄️ قاعدة بيانات المتجهات: LanceDB - تخزين عمودي عالي الأداء
- 📊 المعيار: LoCoMo - إطار تقييم الذاكرة طويلة السياق