تخطَّ إلى المحتوى

مشاركة ذاكرة مشروع واحد عبر مستودعات متداخلة

افتراضيًا يُعرَّف المشروع بمستودع git المحيط، لذا يحصل كل مستودع git فعلي على مخزن ذاكرة معزول خاص به. هذا خاطئ لـ مساحات العمل متعددة المستودعات — الأشجار التي يديرها repo من Google، أو monorepos، أو أي تخطيط تنتمي فيه عدة مستودعات git متداخلة إلى مشروع منطقي واحد — لأن كل مستودع فرعي سيكون معزولًا.

ضع ملف علامة .opencode-mem-project فارغًا في جذر مساحة العمل:

my-workspace/
├── .opencode-mem-project ← workspace root
├── kernel/ (own git repo)
├── userspace/ (own git repo)
└── tools/ (own git repo)

كل جلسة تبدأ في أي مكان تحت العلامة تُحل حينها إلى ذلك الجذر وتشارك مخزن ذاكرة واحدًا، بغض النظر عن المستودع الفرعي الذي يعيش فيه مجلد العمل:

نافذة طرفيّة
touch ~/my-workspace/.opencode-mem-project

يُبحث عن العلامة بالمشي صعودًا من مجلد العمل الذي تمرّره بالفعل كل مسارات الشيفرة (مجلد عمل المكون الإضافي، process.cwd() لـ web API)، لذا الهوية مدفوعة بالمجلد ومستقلة عن العملية. لا تعتمد على متغيرات البيئة أو قيمة إعداد عامة، والتي ستكون غير موثوقة هنا: يعمل opencode-mem عبر عدة عمليات opencode تشارك خادم ويب واحدًا، وبعض تلك العمليات فقط يحمل متغير بيئة معيّنًا. مع العلامة، يُشتق جذر المشروع دائمًا من مكان تشغيل الجلسة فعليًا.

تتقدم العلامة على اكتشاف git. عندما تكون موجودة، يُتجاهل بعد remote git الخاص بالمستودع الفرعي عمدًا (سيصف مستودعًا متداخلًا واحدًا فقط). بدون علامة، يبقى السلوك دون تغيير (هوية قائمة على git).