الموقف غير المعتمِد على المضيف
كيف يحقّق Apothem موقفًا غير معتمِد على المضيف عبر الملف التعريفي المشترك ومحوّلات أُطُر العمل.
صُمّم Apothem حول مبدأ واحد: ينبغي أن يبقى إعداد الحوكمة لديك
أطول من أي زمن تشغيل واحد للمساعد البرمجي. الملف التعريفي المشترك لـ Apothem
هو ملف YAML مُتحقَّق منه عبر مخطط في ~/.config/apothem/profile.yaml أو
--profile PATH؛ وتوفّر مجموعات Apothem المُحزَّمة الأوامر، والقواعد، والمهارات،
والخطّافات، والقوالب، وأسطر الحالة، وأنماط الإخراج، وتعريفات التفويض.
وتترجم المحوّلات الخاصة بكل إطار عمل ضمن src/apothem/harnesses/<harness>/ تلك المُدخَلات إلى الصيغة
التي يتطلّبها كل إطار عمل مدعوم:
Claude Code, Cursor, Gemini CLI, GitHub Copilot, Codex, Windsurf,
OpenCode, Antigravity, Open-Claw, Hermes, Qwen Code,
CodeBuddy, Kiro, Trae, Zed, GLM (Z.ai), Kimi Codeالفكرة الجوهرية
عدم الاعتماد على المضيف يعني أنّ قصدك — مَن أنت، وكيف تريد أن تتصرّف المساعدات، والقواعد التي يجب أن تتّبعها — يقيم في مكان واحد لا يملكه أي إطار عمل بمفرده. أُطُر العمل مستهلِكات قابلة للتبديل لذلك القصد. فعند ظهور مساعد جديد، تتبنّاه بإضافة محوّل، لا بإعادة تأليف إعدادك. وعندما يفقد مساعد كنت تستخدمه شعبيّته، فإنّك تتخلّى عنه دون أن تفقد الحوكمة التي بنيتها. الملف التعريفي هو الأصل؛ وإطار العمل هدف تجسيد (render target). قد يُستخدم إطار العمل في البرمجة أو الدردشة أو العمل التشاركي أو البحث أو الكتابة — والملف التعريفي غير معتمِد على الغرض الذي يخدمه إطار العمل.
هذا انعكاس متعمَّد. فالمسار الشائع هو تهيئة كل أداة مباشرةً، ما يجعل استثمارك رهينةً لطول عمر تلك الأداة وصيغتها. يعامل Apothem الإعداد بوصفه رأس مال محمول، ويعامل إطار العمل بوصفه طرفيّةً قابلة للتخلّص منها.
المشكلة
لكل إطار عمل برمجي صيغة إعداد خاصّة به:
Claude Code: CLAUDE.md + settings.json
Cursor: .cursor/rules/*.mdc
GitHub Copilot: .github/copilot-instructions.md
Windsurf: .devin/rules/
Codex: AGENTS.mdمن دون Apothem، تصون N ملف إعداد منفصل تتباعد عن بعضها مع الوقت.
حلّ Apothem
One shared Apothem profile (YAML) + packaged cohorts
identity.name
preferences.style
rules[]
|
v
Adapter layer (HarnessAdapter protocol — src/apothem/harnesses/<harness>/)
|
+---> Claude Code adapter -> ~/.claude/
+---> Cursor adapter -> .cursor/rules/*.mdc
+---> Copilot adapter -> .github/copilot-instructions.md
+---> Windsurf adapter -> .devin/rules/
+---> ...تُحرِّر الملف التعريفي المشترك مرّةً واحدة، ثم تشغّل apothem update --harness <name> أو
apothem update --harness all --project <path> لنشر التغيير.
ويطبع apothem harnesses list المجموعة المُسجَّلة.
لماذا "apothem"
يُرمِّز الاسم المعمارية. في الهندسة، apothem (محور الضلع) هو العمود من مركز المضلّع المنتظم إلى منتصف أحد أضلاعه — المسافة الوحيدة من النواة إلى كل حافة، المتطابقة في كل اتّجاه. وذلك هو التصميم: ملف تعريفي مشترك واحد في المركز، وسبعة عشر إطار عمل متساوية البُعد على المحيط، وكل تجسيد يبعد المسافة نفسها عن مصدر الحقيقة. لا تتغيّر النواة عند تغيُّر حافة؛ وتتشارك الحواف علاقة واحدة مع النواة. الانحراف مستحيل بنيويًا.
ضمانات قابلية النقل
القواعد المُعلَّمة بـ portability: universal مضمونة الترجمة إلى كل
إطار عمل مدعوم. أمّا القواعد المُعلَّمة بـ portability: project-specific فقد تتطلّب
توثيق التجاوز (override) الخاصّ بكل إطار عمل في متن القاعدة.
المفاهيم
مفاهيم Apothem — الأفكار وراء الأداة: الموقف غير المعتمِد على المضيف، والهوية الإدراكية، ومراجعة التدقيق، ومستويات الجدّية.
التخطيط القابل للاستئناف
كيف يُخرِج Apothem حالة العمل إلى مجموعة .apothem/plans/ محلية للمشروع (مع .plans/ بديلًا متوافقًا مع الإصدارات السابقة) كي يصمد العمل الطويل الأمد عبر حدود الجلسة والحساب والجهاز.