الحالة والملفات
يخزن EstaCoda الحالة في نطاقين: عام (تحت ~/.estacoda/) ومحلي للملف الشخصي (تحت ~/.estacoda/profiles/<profile-id>/). يتم تتبع الملف الشخصي النشط على مستوى عام؛ كل شيء آخر مملوك للملف الشخصي المحدد.
الحالة العامة
الجذر الافتراضي: ~/.estacoda/
| المسار | الغرض | المنشئ |
|---|---|---|
active-profile.json | مؤشر الملف الشخصي النشط | estacoda init، estacoda profile switch |
trust.json | منح الثقة في مساحات العمل | estacoda workspace trust |
workspace-approvals.json | منح الموافقة في مساحات العمل | أوامر الموافقة |
sessions.sqlite | قاعدة بيانات الجلسات العامة مع تحديد النطاق بواسطة profile_id | تهيئة التشغيل |
update-cache.json | ذاكرة تخزين مؤقت لفحص التحديث (عامة، TTL 6 ساعات) | التحميل المسبق عند البدء، أمر التحديث |
packs/registry.jsonl | ذاكرة تخزين مؤقت للحزم العامة | عمليات الحزم |
memory/shared/ | مقتطفات الذاكرة المشتركة العامة | عمليات الذاكرة |
python-env/ | بيئة Python الافتراضية المُدارة لـ STT المحلي عبر faster-whisper | estacoda voice setup --stt-provider local |
cache/huggingface/ | ذاكرة تخزين النموذج الافتراضية لـ faster-whisper / Hugging Face | تشغيل faster-whisper STT |
cache/pip/ | ذاكرة pip المؤقتة المحصورة تحت حالة EstaCoda لإعداد STT المحلي المُدار | إعداد Python المُدار |
logs/update.log | سجل عملية التحديث (وضع البوابة وتحديثات managed-source) | أمر التحديث |
.backups/<label>/ | نسخ احتياطية لحالة المستخدم قبل تعديل managed-source | estacoda update |
لا يتم حذف الحالة العامة عند إزالة ملف شخصي. إذا أردت بداية نظيفة، احذف الجذر العام. قم بنسخ قاعدة بيانات الجلسات احتياطياً أولاً إذا كنت تهتم بالتاريخ.
بيئة STT المحلية المُدارة وذاكرة النموذج منفصلتان عمداً:
~/.estacoda/python-env
~/.estacoda/cache/huggingface
ذاكرة النموذج لا تعيش داخل venv. حذف أحد المسارين لا يصلح الآخر؛ أعد تشغيل estacoda voice setup --stt-provider local لإعادة إنشاء بيئة Python المُدارة.
بيئات Python المدارة
تعيش بيئات قدرات Python المدارة تحت جذر حالة EstaCoda.
<stateRoot>/python-envs/<capability-id>/
<stateRoot>/python-envs/<capability-id>/env.json
<stateRoot>/cache/pip/<capability-id>/
يخزن مسار البيئة بيئة Python الخاصة بقدرة مسجلة واحدة. يسجل ملف البيان بصمة المواصفة المثبتة، وقائمة الحزم، والمجموعات الاختيارية، والمسارات، والطوابع الزمنية، وحالة التحقق. وتكون ذاكرة pip المؤقتة منفصلة لكل قدرة.
هذه المسارات ليست خاصة بملف شخصي. حالة المهارة الخاصة بالملف الشخصي، والذاكرات المؤقتة، والمخرجات التي يراها المستخدم، كلها حدود منفصلة.
يحافظ faster-whisper المحلي لتحويل الكلام إلى نص على مسار بيئته المدارة الحالي للتوافق. لا ينقله هذا التغيير بصمت إلى مسار القدرات العام.
الحالة المحلية للتثبيت
قد تحتوي أدلة تثبيت المصدر على ملف .install-method.json يثبت ملكية التثبيت. يستخدمه EstaCoda للتمييز بين التثبيت managed-source (مملوك من قبل المثبت، قد يتم تعديله بواسطة التحديث) وmanual-source (مملوك من قبل المساهم، لا تعديل ذاتي أبداً).
| المسار | الغرض | المنشئ |
|---|---|---|
.install-method.json | ختم طريقة التثبيت: الطريقة، عنوان المصدر، الفرع، دليل التثبيت | المثبت (scripts/install.sh، scripts/setup-estacoda.sh) |
الحالة المحلية للملف الشخصي
جذر الملف الشخصي: ~/.estacoda/profiles/<id>/
| المسار | الغرض | منشئ |
|---|---|---|
config.json | إعدادات التشغيل للملف الشخصي المحدد | estacoda init، estacoda setup، التحرير اليدوي |
.env | أسرار الملف الشخصي المحدد | تدفقات الإعداد، مخزن الأسرار |
auth.json | حالة مصادقة OAuth للملف الشخصي المحدد | إعداد Codex OAuth |
USER.md | تفضيلات المستخدم وأسلوب التواصل للملف الشخصي | ترقية الذاكرة، memory.curate |
SOUL.md | هوية وذاكرة الأمان للملف الشخصي | memory.curate |
MEMORY.md | الحقائق والاتفاقيات المكتسبة للملف الشخصي | ترقية الذاكرة، memory.curate |
promotions.json | بيانات وصفية للترقية | ترقية الذاكرة |
gateway/ | حالة البوابة: الجلسات، الموافقات، وضع الصوت، رموز التسليم | تشغيل البوابة |
cron/jobs.json | تعريفات مهام Cron | estacoda cron create |
skills/ | المهارات المثبتة للملف الشخصي | عمليات المهارة، التعلم |
skills/.usage.json | تليمتري استخدام المهارات | التشغيل |
skills/.evolution/ | مقترحات وتوجيهات تطور المهارات | تطور المهارات |
logs/ | سجلات الملف الشخصي | البوابة، التشغيل |
channel-media/ | تنزيلات مرفقات القنوات | محولات البوابة |
audio-cache/ | ذاكرة التخزين المؤقت للصوت | أدوات الصوت |
image-cache/ | ذاكرة التخزين المؤقت للصور المُنشأة والمعدّلة | image.generate, image.edit |
temp/ | الملفات المؤقتة | عمليات متنوعة |
temp/delegation/ | تشخيصات timeout/stale-heartbeat محدودة للتفويض عند تفعيلها | Runtime التفويض |
temp/audio/ | تسجيلات CLI، ملفات auto-TTS المؤقتة، تحويل Telegram، استقبال Discord | عمليات الصوت |
external-memory/ | سجلات الذاكرة الخارجية المدعومة بالملفات | الذاكرة الخارجية (إذا مُفعلة) |
يسجل التفويض أيضًا صفوف/أحداث جلسات في sessions.sqlite. جلسات الأطفال مرتبطة بـ parentSessionId. ذاكرة نتائج التفويض، عند تفعيلها، تُخزن عبر مزود الذاكرة المضبوط كـ metadata محدودة للمهمة/الحالة فقط. تحذيرات stale-file هي metadata في الجلسة/النتيجة ولا تخزن محتوى ملفات أو diffs.
قاعدة الملكية
- الملفات العامة مشتركة بين جميع الملفات الشخصية.
- الملفات المحلية للملف الشخصي تنتمي إلى ملف شخصي واحد بالضبط.
- الأوامر التي تنشئ حالة تُبلغ عن الملف الشخصي المالك للتغيير.
- الأوامر التي تفحص الحالة تتطلب الملف الشخصي المحدد أو علامة
--profileصريحة.
الاسترداد والفحص
# انظر أي ملف شخصي نشط
cat ~/.estacoda/active-profile.json
# فحص إعدادات الملف الشخصي
estacoda config show
# سرد جميع الملفات الشخصية
estacoda profiles list
# التحقق من شجرة حالة ملف شخصي محدد
ls -la ~/.estacoda/profiles/work/
# عرض السجلات للملف الشخصي المحدد
tail -f ~/.estacoda/profiles/work/logs/gateway.log
ما لا يجب فعله
- لا تُعدّل
sessions.sqliteمباشرة ما لم تعرف المخطط. - لا تنسخ ملفات
.envبين الملفات الشخصية دون تحديث المسارات والأسرار. - لا تحذف
gateway/بينما البوابة قيد التشغيل; أوقف البوابة أولاً. - لا تحذف
.install-method.jsonإلا إذا كنت تنوي تحويل تثبيتmanaged-sourceإلىmanual-source. - لا تحرّر
update-cache.jsonيدوياً; هو ذاكرة آلية.
صفحات ذات صلة
- الإعدادات — محتوى ملف الإعدادات
- متغيرات البيئة — تخزين متغيرات البيئة
- الملفات الشخصية — إدارة الملفات الشخصية
- الذاكرة — سلوك ملفات الذاكرة