Mohamed Ashraf Elsaed

استخدام aletheia-mem: ذاكرة لوكلاء البرمجة

بقلم Mohamed Ashraf Elsaedنُشر 5 دقيقة قراءة

هذه ترجمة آلية لم تُراجَع بعد. الأصل الإنجليزي هو المرجع. اقرأ الأصل الإنجليزي

aletheia-mem هي حزمة npm الخاصة بـ Aletheia، وهو مركز ذاكرة وقواعد محلي ومجاني لأدوات البرمجة بالذكاء الاصطناعي. يحفظ الذكريات في ملف SQLite واحد على جهازك. تستطيع قراءتها الأدوات التي تدعم MCP، والسكربتات التي تستدعي واجهة REST أو سطر الأوامر؛ وما جرى التحقق منه على تثبيت حقيقي مذكور في النهاية. يستغرق هذا الدليل بضع دقائق (لم أقِس الزمن) وينتهي بنظرة حقيقية إلى ما ستتلقاه جلسة برمجة جديدة.

شعار Aletheia: شبكة على شكل دماغ، بداخلها طبقات من الذاكرة فوق بعضها

قبل أن تبدأ

يحتاج Aletheia إلى Bun 1.1 أو أحدث. يعمل سطر الأوامر على Bun لا على Node. لا يوجد حساب ولا تتبّع (telemetry)، وافتراضيًا يستمع الخادم على 127.0.0.1 فقط.

npm install -g aletheia-mem

لتجربة كل شيء دون المساس بإعدادك الحقيقي، وجّه Aletheia إلى مجلدات مؤقتة أولًا. افعل هذا في كل طرفية تستخدمها:

export HOME=$(mktemp -d) ALETHEIA_DATA_DIR=$(mktemp -d) ALETHEIA_PORT=37999

تجاوز هذا السطر إذا أردت الاحتفاظ بما تحفظه. لا شيء في هذا الدليل يكتب في إعدادات أي أداة إلا إذا قالت الخطوة --write.

شغّلت كل أمر أدناه مع aletheia-mem 0.1.10 بتاريخ 2026-10-30، داخل مجلدات مؤقتة. الذكريات بيانات تجريبية مختلقة لمشروع متجر خيالي.

الخطوة 1: شغّل الخادم

aletheia-server
aletheia-mem listening on http://localhost:37999
  source db : ~/.claude-mem/claude-mem.db (read-only)
  data dir  : ~/.aletheia
  refresh   : off (set ALETHEIA_PROVIDER=claude-cli|openai to enable)
  extraction: worker on (rule-based)

المسارات مختصرة. سيختلف مجلد بياناتك إذا استخدمت السطر المؤقت أعلاه.

المنفذ الافتراضي هو 37790. افتح العنوان في المتصفح. الشاشة الأولى هي Home: اختر مشروعًا وانظر، بكلمات واضحة، ما يعرفه Aletheia عنه والقواعد المطبقة والأدوات المتصلة.

صفحة Home في Aletheia لمشروع اسمه shop: ما يعرفه Aletheia مرتبًا من الأحدث، والقواعد المطبقة مع مفاتيح تشغيل
صفحة Home للمشروع التجريبي shop. التبويبات الخمسة هي Home وActivity وKnowledge وRules وConnections.

يعمل الأمر aletheia أيضًا والخادم متوقف. يفتح ملف SQLite نفسه.

الخطوة 2: احفظ الذكريات

aletheia save "The deploy script needs Node 20.19.6 on the staging server" --project shop --pin
aletheia save "We chose SQLite over Postgres because the hub must run with no extra service" --project shop --type decision
aletheia save "Webhook retries use exponential backoff, at most 5 attempts" --project shop --type gotcha
aletheia save "Fixed the login redirect loop when the session cookie was missing" --project shop --type bugfix

--project يسمّي المشروع، و--pin يُبقي الذاكرة في أعلى سياق الجلسة، و--type يضع لها تصنيفًا (decision وgotcha وbugfix وnote وغيرها).

طرفية تعرض أربعة أوامر aletheia save، يرد على كل منها Saved as ورقم
أربع ذكريات محفوظة، إحداها مثبّتة.

الخطوة 3: ابحث

aletheia search "retry" --project shop --explain

كل سطر نتيجة يحتوي معرّف الذاكرة، ثم التاريخ، ثم النوع، ثم العنوان، ثم المشروع والأداة التي كتبتها. يطبع --explain قنوات البحث التي عملت. في الإعداد الافتراضي هذا بحث بالكلمات؛ والبحث الدلالي اختياري.

طرفية تعرض بحثًا عن retry يعيد ذاكرة واحدة من نوع gotcha، ثم إضافة قاعدة وعرضها
بحث مع --explain، ثم إضافة قاعدة وعرضها.

الخطوة 4: شاهد حذف الأسرار قبل التخزين

تحذف الـ hooks الأسرار وكتل <private> قبل تخزين أي شيء. يمكنك اختبار ذلك بتغذية hook بحمولة مسجلة تحمل مفتاحًا مزيفًا. يأخذ الـ hook اسم المشروع من المجلد الذي يعمل فيه، فشغّله من مجلد اسمه shop:

mkdir -p shop && cd shop && git init -q
printf '%s' '{"hook_event_name":"UserPromptSubmit","session_id":"s1","cwd":"'$PWD'","prompt":"Deploy to staging with token sk-abcdefghijklmnopqrstuvwx1234 and <private>customer list: Acme</private> then run the tests"}' \
  | aletheia hook claude-code UserPromptSubmit
aletheia search "staging" --project shop
طرفية تعرض الـ hook ينتهي برمز 0 والذاكرة المخزنة فيها علامة api-key محذوفة وعلامة private
ينتهي الـ hook برمز 0، ويحتوي النص المخزن علامات لا المفتاح ولا الكتلة الخاصة.

حذف الأسرار قائم على الأنماط، فهو غير كامل. وهو لا يعمل أيضًا حين تكتب عبر مسار REST POST /v1/memories أو خانة الملاحظة في لوحة التحكم. لا تلصق أسرارًا في هذين.

الخطوة 5: أضف قاعدة

القاعدة تعليمات دائمة لكل أداة. اكتبها مرة واحدة:

aletheia rules add "Run the tests before saying a task is done"
aletheia rules list

يعرض تبويب Rules القواعد نفسها، مع Confirm وTurn off وEdit وReplace. وخطوة منفصلة تكتب قواعدك في ملف كل أداة الخاص، مثل CLAUDE.md أو AGENTS.md، وتبدأ كمعاينة.

تبويب Rules في Aletheia يعرض ثلاث قواعد، لكل منها أزرار Confirm وTurn off وEdit وReplace
تبويب Rules. تُظهر لقطة الشاشة أيضًا قاعدتين تجريبيتين إضافيتين ليستا في الأوامر أعلاه.

الخطوة 6: شاهد ما تتلقاه جلسة جديدة

هذه هي الكتلة التي تتلقاها أداة البرمجة عند بدء جلسة في المشروع shop:

aletheia context --project shop
طرفية تعرض كتلة بدء الجلسة: ذاكرة مثبّتة، وذكريات حديثة مجمعة حسب اليوم، وطلبات الجلسة، والقواعد، ومفتاح رموز، وتلميح للجلب، وسطر تقدير الرموز
الذاكرة المثبّتة أولًا، ثم الحديثة، ثم القاعدة. الكتلة ملفوفة بوسمي aletheia-memory مع ملاحظة أن محتواها بيانات لا تعليمات.

السطر الأخير تقدير (عدد الأحرف مقسومًا على أربعة). مع أربع ذكريات قصيرة تكون الكتلة أكبر من الذكريات التي تعرضها، لأن مفتاح الرموز والتلميح يكلّفان رموزًا. التوفير الحقيقي يحتاج إلى ملاحظات أطول.

الخطوة 7: عاين الاتصال بأداة

ربط أداة حقيقية يغيّر ملفات، لذلك الافتراضي تشغيل تجريبي (dry run):

aletheia install claude-code
طرفية تعرض التشغيل التجريبي للأمر aletheia install claude-code: ثلاثة ملفات ستُكتب والملاحظة Dry run: nothing was written
ثلاثة ملفات ستتغير. المسارات مختصرة إلى ~ ومجلد البيانات المؤقت.

يسرد الأمر إدخال MCP في ~/.claude.json، والـ hooks في ~/.claude/settings.json، والقواعد في ~/.claude/CLAUDE.md. كل ملف يتغير يحصل على نسخة احتياطية بطابع زمني. لتطبيقه، شغّل aletheia install claude-code --write مع مجلد المنزل الحقيقي. ولإلغائه، شغّل aletheia uninstall claude-code --write. يقول التوثيق إن أمر uninstall يرفض إذا تغيّر ملف بعد التثبيت (ويحتاج حينها إلى --force) وقد نظّف الملفات الأخرى بالفعل، فتحقق من المخرجات.

تجوّل في لوحة التحكم

تبويب Knowledge هو المكان الذي تبحث فيه وتعدّل وتثبّت وتخفي وتصدّر ما خزّنه Aletheia.

تبويب Knowledge في Aletheia: أعداد الذكريات والحقائق والعناصر المثبّتة والمخفية، ومرشحات حسب النوع والنطاق والصنف، وقائمة بطاقات الذكريات
تبويب Knowledge، مع مرشحات وبطاقة لكل ذاكرة.

أين تستخدمه الوكلاء

عبر MCP يحصل الوكيل على 13 أداة. النمط الذي تعلّمه كتلة السياق هو search للحصول على فهرس، وtimeline للجيران، وget_observations للنص الكامل. وتوجد أيضًا save_memory وadd_rule وsession_start_context.

ما الذي تحققت منه، وما الذي لم أتحقق منه

شغّلت الأوامر، عدا أمري --write، والتقطت مخرجات الطرفية ولقطات لوحة التحكم بنفسي، مع aletheia-mem 0.1.10 بتاريخ 2026-10-30، باستخدام مجلد منزل ومجلد بيانات مؤقتين حتى لا تُمَس أي ذاكرة حقيقية. كانت خطوة الاتصال تشغيلًا تجريبيًا. لم أشغّل aletheia uninstall.

الحالة كما يذكرها المشروع: سرد سطر أوامر Claude Code وCommand Code وCodex CLI وOpenCode الحقيقي إعداد MCP بتاريخ 2026-10-27. عملت الـ hooks في جلسات حقيقية مع Claude Code (يومان من الاستخدام) وCommand Code (جلسة قصيرة واحدة) وCodex CLI (جلسة تفاعلية واحدة)، لمستخدم واحد على جهاز واحد. أما Cursor وGemini CLI وWindsurf فإعداداتها مكتوبة من توثيقها، ولم تُختبر على تثبيت حقيقي، ولم يعمل أي hook داخلها ولا داخل OpenCode. نظام Windows مختبر في التكامل المستمر فقط. الحالة alpha، ودقة الإجابات غير مقيسة.

ما الذي كنت سأفعله بشكل مختلف

  1. حذف الأسرار على كل مسار كتابة. لما احتجت إلى كتابة التحذير في الخطوة 4 لو كان مسار REST وخانة الملاحظة في لوحة التحكم يحذفان الأسرار أيضًا.
  2. وضع سطر المجلد المؤقت في أعلى README. هو أسلم طريقة لتجربة الأداة، وهو اليوم في البدء السريع لا في الشاشة الأولى التي يقرؤها الناس.

المصادر

كُتبت مسودة هذه المقالة بمساعدة الذكاء الاصطناعي. راجعت كل ادعاء ونفذت الأوامر المعروضة.

عن المشروع: Aletheia.

Mohamed Ashraf Elsaed
Mohamed Ashraf Elsaed
قائد تقني في Convertedin، القاهرة. أبني أدوات لوكلاء البرمجة بالذكاء الاصطناعي وأكتب عن لارافيل وNode والهندسة.

ما يقدمه aletheia-mem وما لا يقدمه

فوائد Aletheia بأرقامها ومصادرها: مخزن محلي واحد لعدة أدوات، وقواعد تُكتب مرة واحدة، وخصوصية افتراضية، واسترجاع مقيس، مع الحدود.