ACP: المعيار المفتوح لربط المحررات بوكلاء الذكاء الاصطناعي
ال Agent Client Protocol (ACP) — بروتوكول موحّد للتواصل بين المحررات (IDE/Text Editors) وعملاء/وكلاء الذكاء الاصطناعي (AI Coding Agents).
ليه ACP؟
المشكلة الحالية ان كل محرّر محتاج يعمل تكامل مخصص مع كل وكيل AI، وكل وكيل لازم يكتب APIs خاصة بكل محرّر. ده بيولّد:
تكلفة تكامل عالية: كل كومبو محرّر/وكيل محتاج شغل مخصص.
توافقية محدودة: الوكلاء بيشتغلوا مع شريحة صغيرة من المحررات.
Lock-in للمطور: اختيارك للوكيل بيحبسك في الواجهات اللي بيدعمها.
الحل:
ACP بيقدّم بروتوكول قياسي للتواصل بين الوكلاء والمحرّرات، مشابه لفكرة LSP في توحيد التعامل مع Language Servers.
أي وكيل ينفّذ ACP يشتغل تلقائيًا مع أي محرّر متوافق، وأي محرّر يدعم ACP يفتح على نفسه منظومة كاملة من الوكلاء المتوافقين.
النتيجة: فصل الاعتمادية (decoupling) وبالتالي كل طرف يقدر يبتكر بحرية، والمطور يختار أفضل أدوات لبيئة شغله بدون قيود.
نظرة عامة تقنية:
سياق الاستخدام: المستخدم شغله الأساسي جوه المحرّر، وبيستدعي الوكلاء عشان ينفّذوا مهام معينة (refactor، تعديل ملفات، اقتراحات… إلخ).
التشغيل: الوكلاء بيشتغلوا كـ subprocesses من داخل المحرّر.
بروتوكول النقل: JSON-RPC عبر stdio.
التمثيل البياني: إعادة استخدام JSON types من MCP قدر الإمكان، مع Types مخصصة لعناصر UX مفيدة للوكلاء البرمجيين (زي عرض Diffs).
تنسيق النص القابل للقراءة: Markdown كافتراضي—غني بصريًا بدون الحاجة لقدرات HTML في المحرّر.
فوائد عملية:
سرعة ومرونة في إضافة/تبديل الوكلاء بدون شغل تكامل مكرر.
تجربة مستخدم موحّدة وغنية (مثلاً diff views) عبر محررات مختلفة.
قابلية توسّع للنظام البيئي لوكلاء الذكاء الاصطناعي داخل أدوات التطوير.
المحررات المدعومة حاليًا:
Zed (دعم للوكلاء الخارجيين عبر ACP).
Neovim عبر إضافة CodeCompanion.
الوكلاء المدعومين حاليًا:
Gemini (gemini-cli) — ووكلاء تانيين قريب.
ملاحظات تنفيذية سريعة:
لو هتكتب وكيل: نفّذ JSON-RPC على stdio، التزم بـ JSON types المشتركة (MCP) واستخدم الـ custom types الخاصة بـ ACP لواجهات زي الـ diffs.
لو هتدعم ACP في محرّرك/إضافتك: وفّر تشغيل subprocess للوكلاء، channel JSON-RPC ثابت، وrender لـ Markdown وdiff elements.
الخلاصة:
الACP بيعمل طبقة توافق قياسية بين المحرّرات ووكلاء AI، على غرار LSP للّغات. ده بيقلّل تكاليف الدمج، يوسّع التوافق، ويمنع الـ lock-in، مع تجربة غنية قائمة على JSON-RPC/stdio وMarkdown، ودعم أولي لـ Zed وNeovim ووكيل Gemini. البروتوكول لسه قيد التطوير لكنه ناضج كفاية لعمل تجارب حقيقية مفيدة.ما يزال قيد التطوير، لكنه ناضج بما يكفي لبناء تجارب مستخدم مفيدة.
الاتصال يتم عبر JSON-RPC فوق stdio، والنصوص القابلة للقراءة افتراضيًا بتنسيق Markdown. يعيد استخدام تمثيلات JSON من MCP حيث أمكن، مع أنواع مخصصة لعناصر UX خاصة بالبرمجة بالع代理 (مثل عرض الفروق Diffs).
المصادر: