نموذج الذاكرة
كيف تُنظَّم الذكريات — الفئات، المفاتيح، الوسوم، الأولويات، المصادر، التحقق.
نموذج الذاكرة
نموذج ذاكرة Synapse مصمم لوكلاء LLM — منظّم بما يكفي للاستدعاء الموثوق، ومرن بما يكفي لأي مجال.
تشريح الذاكرة
{
"id": "mem_abc123",
"category": "project",
"key": "project_synapse_status",
"content": "Synapse v1.5.0 deployed on vps1. CI green.",
"tags": ["synapse", "deployment", "v1.5.0"],
"priority": "high",
"source": "agent",
"verified": false,
"confidence": 0.85,
"expires_at": null,
"mind_id": "m_xyz789",
"created_at": "2026-06-27T...",
"updated_at": "2026-06-27T..."
}الحقول
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
id |
string | تلقائي | معرّف فريد (mem_xxx) |
category |
enum | ✅ | واحدة من 8 فئات |
key |
string | ✅ | مُعرّف ثابت (يُستخدم للتحديثات) |
content |
string | ✅ | محتوى الذاكرة (أي نص) |
tags |
string[] | – | للبحث والتصفية |
priority |
enum | – | low، normal، high، critical (افتراضي: normal) |
source |
enum | تلقائي | user، agent (من خزّنها) |
verified |
bool | تلقائي | هل تحقق منها إنسان؟ |
confidence |
float | – | 0.0 إلى 1.0 (افتراضي: 1.0 للمستخدم، 0.7 للوكيل) |
expires_at |
timestamp | – | متى تُنسى هذه الذاكرة |
mind_id |
string | تلقائي | أي عقل يملكها |
created_at |
timestamp | تلقائي | أول تخزين |
updated_at |
timestamp | تلقائي | آخر تعديل |
الفئات
ثماني فئات تغطي حالات استخدام وكلاء LLM الشائعة:
| الفئة | الغرض | مثال على المحتوى |
|---|---|---|
identity |
من هو المستخدم | "User is Michael Schäfer, software engineer in Berlin" |
preference |
تفضيلات المستخدم | "Prefers concise technical responses" |
fact |
حقائق قابلة للتحقق | "Office is in Berlin, timezone Europe/Berlin" |
project |
حالة المشروع | "Synapse v1.5.0 deployed, working on v1.6.0 docs" |
skill |
مهارات المستخدم | "Advanced Python, 10+ years" |
mistake |
أخطاء سابقة | "Forgot to bump npm version — CI failed" |
context |
سياق الجلسة | "Currently reviewing PR #42" |
note |
ملاحظات متفرقة | "Try Redis for caching next sprint" |
المفاتيح: مُعرّفات ثابتة
الحقل key حاسم — فهو كيف تُحدّث الذكريات دون إنشاء
مكررات.
# التخزين الأول
store("project", "project_synapse_status", "v1.4.0 deployed", priority="high")
# التحديث بنفس المفتاح (يستبدل، لا يكرر)
store("project", "project_synapse_status", "v1.5.0 deployed", priority="high")قواعد المفتاح:
- يجب أن يكون فريدًا ضمن (الفئة، العقل)
- استخدم
snake_case - أضف بادئة الفئة للوضوح:
preference_communication،mistake_npm_version - أبقِه ثابتًا — لا تغيّر المفاتيح بعد الإنشاء
الوسوم: للبحث
تُمكّن الوسوم التصفية والبحث السريع:
# إيجاد جميع الذكريات بالوسم "docker"
GET /memory/by-tag?tag=docker
# بحث FTS5 ضمن مجموعة موسومة
GET /memory/search?q=swarm&tag=dockerأفضل ممارسات الوسوم:
- 2-5 وسوم لكل ذاكرة (لا تفرط في الوسم)
- أحرف صغيرة للاتساق
- استخدم أسماء المشاريع، المواضيع، التقنيات
- الوسوم غير حساسة لحالة الأحرف
مستويات الأولوية
| الأولوية | متى تُستخدم | سلوك الاستدعاء |
|---|---|---|
critical |
الهوية، القانونية، غير القابلة للتراجع | دائمًا في أعلى الاستدعاء |
high |
المشاريع النشطة، التفضيلات الأساسية | بارز في الاستدعاء |
normal |
معظم الذكريات (افتراضي) | ترتيب استدعاء قياسي |
low |
عابرة، جيد معرفتها | قد تُلخّص |
يُرتّب /memory/recall حسب الأولوية (critical أولًا)، ثم حسب الأحدث.
المصدر: المستخدم مقابل الوكيل
تُوسم الذكريات بـ source:
user— خزّنها إنسان (عبر JWT أو واجهة الإنسان)agent— خزّنها وكيل LLM (عبر Mind Key)
يؤثر هذا على:
- التحقق: ذكريات
userمُتحقّق منها تلقائيًا، ذكرياتagentلا - الثقة:
userافتراضي 1.0،agent0.7 - الاستدعاء: يعلّم
/memory/recallالذكريات غير المُتحقّق منها بـ "(unverified)"
التحقق
تشير علامة verified إلى أن إنسانًا أكّد الذاكرة:
- ذكريات
user: مُتحقّق منها تلقائيًا (true) - ذكريات
agent: غير مُتحقّق منها افتراضيًا (false)
تحقق من الذكريات عبر:
curl -X POST https://synapse.schaefer.zone/memory/mem_001/verify \
-H "Authorization: Bearer YOUR_JWT"الثقة
يشير الحقل confidence (0.0 إلى 1.0) إلى موثوقية الذاكرة:
- 1.0 — ذُكرت مباشرة من المستخدم
- 0.7 — مستنتجة بواسطة الوكيل
- 0.5 — غير مؤكدة، تحتاج تحققًا
- 0.0 — مشكوك فيها صراحة
عيّن الثقة عند التخزين:
{
"category": "preference",
"key": "prefers_dark_mode",
"content": "User seems to prefer dark mode (based on their IDE screenshots)",
"confidence": 0.5,
"source": "agent"
}الانتهاء
عيّن expires_at للذكريات الحساسة للوقت:
{
"category": "context",
"key": "current_meeting_topic",
"content": "Discussing Q3 roadmap",
"expires_at": "2026-06-28T00:00:00Z"
}الذكريات المنتهية لا يُرجعها /memory/recall (لكنها لا تزال موجودة في DB).
استخدم /memory/expiring?within=7d لرؤية الذكريات التي تنتهي قريبًا.
دورة حياة الذاكرة
┌─────────────────┐
│ Create │
│ POST /memory │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Active │ ◀──── PUT /memory/:id (update)
│ (in recall) │
└────────┬────────┘
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Expired │ │ Verified │ │ Deleted │
│ (in DB) │ │ (flag) │ │ (gone) │
└──────────┘ └──────────┘ └──────────┘سلوك الاستدعاء
يُرجع GET /memory/recall ملخصًا نصيًا عاديًا مُحسّنًا لسياق LLM:
Mind: Michael's Mind
Memories: 12 total (10 verified, 2 unverified)
[001] identity (CRITICAL) [verified]
user_name
Michael Schäfer
Tags: person, identity
[002] preference (HIGH) [verified]
communication_style
Prefers concise technical responses
Tags: communication
[003] project (HIGH) [unverified]
synapse_status
v1.5.0 deployed, working on v1.6.0 docs
Tags: synapse, deployment
...- مُرتّب حسب الأولوية (critical → low)، ثم حسب الأحدث
- الذكريات غير المُتحقّق منها معلّمة بـ
[unverified] - الوسوم مضمنة للسياق
- نص عادي (لا حاجة لتحليل JSON)