مترجَم عن الأصل الصيني. وعند الاختلاف بينهما، يُعتد بالأصل.
Confer — خارطة طريق النسخة الأولى وما بقي من عمل
مقسَّمة إلى محطات؛ وكل محطة نسخة قابلة للتسليم والعرض.
v0.1 — Core proof of concept (4-6 أسابيع)
الهدف: أن تعمل على جهاز واحد سلسلةُ «المستخدم ← وكيله ← وكيل الطرف الآخر» من طرفها إلى طرفها.
النطاق (الواجب)
- الخادوم: gateway وagent runtime وconversation وidentity (أربع خدمات، في عملية واحدة أو منفصلة، لا فرق)
- مخطّط PostgreSQL (انظر 04-data-model.md)، مُدارًا بأداة ترحيل
- تسجيل المستخدمين ودخولهم (كلمة المرور تكفي؛ لا OAuth ولا passkey)
- توليد مستند DID:web ونشره (
/.well-known/did.json) - توليد مستند AgentFacts ونشره
- بروتوكول A2A واردًا وصادرًا (التحقّق من توقيع HTTP؛ لم يُنفَّذ capability token بعد، انظر قائمة المهام أدناه)
- agent runtime: حلقة استدعاء النموذج (مزوّدان فقط في البداية: Claude وDeepSeek)
- محرّك سياسات بسيط: أقران في قائمة بيضاء، وإما السماح بكل شيء أو المنع من كل شيء
- العميل: تطبيق Tauri واحد، ولأنظمة سطح المكتب الثلاثة أولًا (Linux وmacOS وWindows؛ والهاتف لاحقًا)
- أن يقدر العميل على: الدخول، وإضافة جهات اتصال (بالـDID)، والمحادثة الثنائية، ورؤية الاستشهادات
- دفع الرسائل آنيًا عبر WebSocket (نسخة واحدة تكفي؛ من دون توزيع NATS)
- إخراج النموذج تدفّقًا عبر SSE
- بيئة تطوير محلية بأمر واحد عبر Docker Compose
Out of scope:
- المحادثات الجماعية، والتوزيع على عدة أجهزة، والهاتف، والواجهة متعدّدة اللغات، وشبكة توصيل المحتوى، وOAuth الخارجي، والسياسات المعقّدة
- إضافة Claude Code ليست ضمن هذه الدفعة بعد
Acceptance:
يشغّل مطوّران عند كل منهما نسخةً محلية من Confer، فيضيف كلٌّ الآخر، ويتحادثان، ويريان الاستشهادات.
v0.2 — النسخة الأولى من إضافة Claude Code (3-4 أسابيع)
الهدف: أن تُمكن استشارة وكيل قرين من داخل Claude Code، وأن يترسّب الجواب في المشروع.
Scope:
- إنجاز خادوم MCP — والموجود فعلياً خمس عشرة أداة (
ask_agentوlist_agentsوread_project_memoryوwrite_project_memoryوrequest_code_reviewوغيرها)؛ أمّاask_peerوlist_peersاللذان كانا مكتوبين في هذا السطر فلم يكونا قطّ اسمين حقيقيين لأداتين - ربط حساب Confer بنسخة Claude Code على نمط OAuth
- تحليل ملف الإعدادات
.claude/confer.toml - قراءة دليل
.claude/peers/{slug}/والكتابة فيه (facts.md وdecisions.md وconversations/ وmeta.json) - استخراج الوقائع تلقائيًا: بعد ask_peer تُستخرج من الجواب وقائع مبنيّة وتُكتب في facts.md
- أداة سطر الأوامر
confer(add peer وlist peers وask وsync) - وكيل قرين للعرض التوضيحي (mock-vendor.confer.dev) يجرّب عليه المطوّرون
Acceptance:
ينصّب أحدهم claude mcp add confer، ويضبطه، فيستطيع من داخل Claude Code أن يسأل mock vendor؛ فيأتي الجواب باستشهاداته، ويُكتب في .claude/peers/mock-vendor/facts.md، ويُودَع في git، ثم يُحمَّل من تلقاء نفسه في الجلسة التالية.
v0.3 — المحادثات الجماعية ونسخة المؤسسة (4-5 أسابيع)
الهدف: دعم المحادثات الجماعية (بشر ووكلاء معًا)، والقدرة على نشر «نسخة مؤسسة» على جهاز واحد.
Scope:
- نموذج بيانات المحادثة الجماعية وواجهتها
- إدارة أعضاء المجموعة (إضافة البشر والوكلاء وإخراجهم)
- أن يجيب عدة وكلاء مذكورين في آن واحد (عرض مطوي، مع آلية «الاعتماد»)
- نسخة المؤسسة: نطاق خاص ودخول SSO (يكفي OIDC)
- اكتشاف جهات الاتصال بالنطاق (يكتب المرء acme.com فتظهر وكلاء ذلك النطاق العلنيون)
- التوزيع على عدة أجهزة (البوّابة اليوم نسخة واحدة: جدول اتصالات WS وقيم nonce لمنع إعادة إرسال A2A وعدّادات تحديد المعدّل كلّها
Mapداخل العملية. وقد حُذفت في 2026-08-07 إعدادات Redis/NATS التي لم يُتّصل بها قطّ؛ فعند استئناف هذا العمل تُنقل هذه الثلاثة أولاً، وفي مقدّمتها nonce) - الهاتف (iOS وAndroid)
Acceptance:
فريق من خمسة أشخاص ووكيلان يديرون نقاش مشروع في مجموعة واحدة، والتجربة سلسة. وتستطيع شركة أن تبني نسخة Confer خاصة بها، وتُظهر وكلاء علنيين للخارج، فتجدهم النسخ الأخرى.
v0.4 — تعدّد اللغات والجواب في غياب صاحبه (3 أسابيع)
الهدف: أن ينفع المنتج في السياقات الدولية وفي التواصل شبه اللامتزامن.
Scope:
- تعريب الواجهة (بدءًا بالصينية والإنجليزية، مع ترك مكان لليابانية والألمانية والفرنسية)
- محادثة بين الوكلاء عبر اللغات (تتمّ الترجمة داخل الوكيل المقصود، ويبقى الأصل في الاستشهاد)
- إضافة الحقل
primary_languageإلى AgentFacts - الجواب في غياب صاحبه: واجهة ضبط standing policy + صندوق الانتظار + إشعارات الدفع
- إضافة أداة pre-flight design review إلى خادوم MCP
- إضافة أداة post-flight code review إلى خادوم MCP
Acceptance:
يسأل مطوّر صيني بالصينية وكيلَ مورّد ألماني (وثائقه بالألمانية)، فيتلقّى جوابًا بالصينية مع استشهاد بالأصل الألماني. وبعد ضبط standing policy، يعالج الوكيل في غياب صاحبه ما يوافق القاعدة من الطلبات معالجةً صحيحة، ويعلّق ما التبس.
v1.0 — جاهزية الإنتاج (4-6 أسابيع)
الهدف: أن يصلح للاستعمال في بيئة الإنتاج، مع دعم تجاري.
Scope:
- رصد كامل (تتبّع OTel، ومقاييس Prometheus، وسجلّات Loki)
- النسخ الاحتياطي والاستعادة (نسخة PG فيزيائية + تزايدية إلى S3)
- تدقيق أمني (للعمليات الحسّاسة سجلّ تدقيق)
- تفصيل تحديد المعدّل (الأبعاد الأربعة كلها)
- لوحة استهلاك النماذج (استهلاك الرموز شهريًا حسب النموذج، مع إظهار أدوار الردّ على جهات الاتصال على حدة؛ بلا مبالغ مالية لأن الأسعار لا تُحفظ محليًا)
- تجربة كاملة لـBYO LLM key (تخزين مشفَّر، وتدوير، وحصّة)
- موقع للتوثيق (دليل الاستعمال، ودليل الاستضافة الذاتية، ومرجع الواجهة)
- إطلاق نسخة Confer Cloud العلنية (
cloud.confer.ai)
Acceptance:
مئة مستخدم مسجَّل على الأقل، وعشرة وكلاء أقران منشورين باستقلال، ونسخة تعمل باستقرار أكثر من ثلاثين يومًا.
v1.5+ — النموّ والمنظومة (مستمر)
Scope:
- دليل وكلاء علني (بالوصل إلى NANDA Index)
- مخطّط الثقة ونظام السمعة
- نسخة للأفراد (واجهة أخفّ)
- مكافحة الرسائل المزعجة استنادًا إلى السمعة
- Webhooks (تكامل أنظمة الطرف الثالث)
- عدة وكلاء للمستخدم الواحد (للشخص عدة وكلاء متخصّصين)
- امتداد متصفّح (استدعاء الوكيل من صفحة الويب)
حجم المهامّ (لأجل Claude Code)
تُقسَّم كل محطة إلى 50–200 مهمّة صغيرة. وكل مهمّة:
- لها مدخلات ومخرجات واضحة
- لها معايير قبول قابلة للاختبار
- لا تتجاوز يوم عمل لمطوّر واحد
ومن أمثلة مهامّ النسخة v0.1:
هيكل الخادوم
- إنشاء المستودع الموحّد (workspaces في pnpm أو في Bun)
packages/shared: تعريفات الأنواع المشتركة (بـzod أو valibot)packages/gateway: هيكل تطبيق Bun + Honopackages/agent-runtime: هيكل آلة حالات الوكيل— أُدمجت في البوابة (packages/conversation: خدمة تخزين الرسائل ودفعهاws/handler.tsوroutes/conversations.ts)؛ ولم يكن للحزمة المستقلّة مستهلك واحد، فحُذفت في 2026-08-07packages/identity: DID وAgentFacts والتحقّق من A2A- أداة ترحيل PostgreSQL (drizzle-kit أو prisma)
- إنشاء ملفات الترحيل لكل الجداول
طبقة قاعدة البيانات
- عمليات User (التسجيل والدخول والاطلاع على البيانات الشخصية)
- عمليات Agent (إنشاء وكيل المرء وتعديل إعداداته)
- عمليات PeerAgent (إضافة جهات الاتصال والاطلاع عليها وحذفها)
- عمليات Conversation وإدارة Participant
- عمليات Message والتصفّح
- الكتابة في جدول Permission والاستعلام منه
الهوية والبروتوكول
- توليد مستند DID (زوج مفاتيح ed25519 لكل مستخدم)
/.well-known/did.jsonendpoint- توليد AgentFacts ومساره
- موقِّع تواقيع HTTP (للصادر)
- مدقِّق تواقيع HTTP (للوارد)
- إصدار capability token والتحقّق منه
- جالب مستندات DID + ذاكرة تخزين
تجريد النموذج
- واجهة مزوّد النموذج (chat وstream وtools)
- إنجاز مزوّد Claude
- إنجاز مزوّد DeepSeek
- تخزين مفاتيح الواجهة مشفَّرةً (Vault / env)
- تطبيق إعداد النموذج الخاص بكل وكيل
Agent runtime
- آلة حالات الوكيل: حلقة load ← process ← save
- حلقة استدعاء النموذج مع tool calling
- محرّك سياسات بسيط (قائمة بيضاء + allow/deny)
- استدعاء A2A صادر (الوكيل يراسل غيره)
- معالجة A2A واردة (وصلت رسالة من وكيل غيرك)
البوابة والواجهة
- وسيط إصدار JWT والتحقّق منه
- كل مسارات
/api/v1/auth/* - كل مسارات
/api/v1/conversations/* - معالج WebSocket (الاشتراك وإرسال الرسائل)
- معالج SSE (إخراج النموذج تدفّقًا)
- مسارات A2A الواردة + وسيط التحقّق من التوقيع
- وسيط تحديد المعدّل (النسخة البسيطة أولًا: نافذة ثابتة)
العميل
- تهيئة مشروع Tauri 2.0
- صفحتا الدخول والتسجيل
- الواجهة الرئيسة: قائمة جهات الاتصال يمينًا والمحادثة يسارًا
- نافذة إضافة جهة اتصال (بالـDID أو بالنطاق)
- قائمة رسائل المحادثة (عرض تدفّقي)
- عرض كبسولات الاستشهاد
- عرض بطاقة طلب الإذن
- إدارة اتصال WebSocket
- ذاكرة SQLite محلية لآخر مئة رسالة
محتوى العرض التوضيحي
- نشر وكيل mock-vendor (للعرض)
- دليل X100 التجريبي (بضع صفحات PDF بوصفها بيانات RAG)
- فيديو أو مستند للعرض: المسار كاملًا من إضافة جهة الاتصال إلى الحصول على الجواب
المخاطر والقرارات المبكّرة اللازمة
| الخطر | التخفيف |
|---|---|
| ما زال SDK الخاص بـMCP يتطوّر، وقد تنكسر واجهته | التزام النسخة المستقرّة، ومتابعة changelog، وبناء طبقة تكيّف |
| بروتوكول A2A (من Google) ومعيار NANDA ما زالا يتطوّران أيضًا | البدء بأصغر مجموعة جزئية، مع ترك مكان لطبقة تكيّف البروتوكول |
| Tauri 2.0 على iOS وAndroid حديث نسبيًا، وقد تعترضك عقبات | في طور النسخة الأولى: أنظمة سطح المكتب الثلاثة فقط، والهاتف في v0.3 |
| خروج كلفة النماذج عن السيطرة | حصّة افتراضية + BYO key صريح + لوحة استهلاك مبكرة |
| حزم تطوير مزوّدي النماذج الصينيين (DeepSeek/Qwen) غير مستقرّة | اتّخاذ الواجهة المتوافقة مع OpenAI (وكلّهم يدعمونها) نقطةَ دخول موحّدة |
إرشادات التنفيذ لأجل Claude Code
- الاختبارات الوحدوية قبل التكامل: يجب أن تجتاز كل خدمة اختباراتها وحدها، من غير أن تتوقّف على إقلاع غيرها
- ترحيل قاعدة البيانات يمرّ بأداة الترحيل، لا بـSQL مكتوب باليد
- تُشارَك الأنواع عبر حزمة
@confer/shared، ينتفع بها الطرفان - كل طلب دمج يحمل تعديل توثيقه (إن مسّ البروتوكول أو الواجهة)
- يُفضَّل في تنفيذ بروتوكول A2A مكتبةٌ جاهزة (كحزمة npm المسمّاة
http-message-signatures) على إعادة اختراع العجلة - ويُفضَّل لـDID:web استعمال
did-resolverوdid-jwt، وهي من أدوات W3C - ويُفضَّل لخادوم MCP استعمال SDK الرسمي (
@modelcontextprotocol/sdk) - اكتب عنوان الإيداع جملةً تقول ما يفعله التغيير، لا بادئةً اصطلاحية. وانتبه:
.github/scripts/gen-release-notes.shلا يعرف إلا البادئات من نوعfeat:وfix:، فملاحظات الإصدار تُكتب باليد — ولن يولّدها من عناوين نثرية