إصداركود / SDK · جاهز للعملHabr AI→ المصدر

OpenCode: كيف تبني فريقًا من وكلاء الذكاء الاصطناعي عبر أي بوابة متوافقة مع OpenAI

OpenCode إطار مفتوح المصدر لتشغيل الوكلاء، مرخّص بموجب MIT وغير مرتبط بمزوّد واحد: يمكن توصيل النماذج عبر أي بوابة متوافقة مع OpenAI. أنشأ كاتب المقال فريقًا يضم منسّقًا ومهندسًا معماريًا ومبرمجًا ومراجعًا ووكلاء فرعيين آخرين، وخصّص لكل منهم نموذجًا وصلاحيات مستقلة. الفكرة الأساسية: المبرمج وحده يستطيع تعديل الملفات، وتُضبط القيود، مثل حظر git push، في الإعدادات نفسها بدلًا من الاكتفاء بذكرها في الموجّه.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
OpenCode: كيف تبني فريقًا من وكلاء الذكاء الاصطناعي عبر أي بوابة متوافقة مع OpenAI
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
التثبيتnpm i -g @opencode/cli، وإدخال المفتاح عبر opencode auth login
تعامل Bun مع البروكسي ضعيفsocks5 لا يعمل، ويلزم ضبط NO_PROXY
صلاحيات bash دقيقةيُسمح بـ git diff ويُحظر git push

سرعان ما تصل المحادثة مع النموذج إلى حدودها: فهو لا يرى مشروعك، ولا يشغّل الاختبارات، ولا يتذكّر السياق. لهذا يتحدث الجميع عن الوكلاء. والوكيل في جوهره نموذج مضاف إليه إطار تشغيل، أو harness، يزوّده بالمهارات والسياق والتكاملات ومنطق العمل متعدد الوكلاء. وضع Claude Code وCodex معيارًا مرتفعًا، لكن الأول مرتبط بنماذج Anthropic، والثاني يظل منتجًا من OpenAI. ويطرح OpenCode مسارًا ثالثًا: ترخيص MIT، ودعم 75+ مزوّدًا، ونماذج محلية عبر Ollama أو vLLM، وحرية اختيار النموذج لكل دور.

نُشر المقال على Habr AI وكتبه موظف في خدمة Bothub، لذا فإن البوابة ورابط الإحالة الواردين فيه لهما غرض إعلاني. لكن الإعدادات نفسها عامة وتناسب أي نقطة نهاية متوافقة مع OpenAI.

توصيل المزوّد ومشكلات البروكسي

يُثبَّت الفرع الحالي v2 بالأمر npm i -g @opencode/cli. أما الحزمة القديمة opencode-ai فتنتمي إلى سلسلة 1.x، ومن السهل الخلط بينهما. وتوجد بدائل للتثبيت أيضًا: brew أو bun أو سكربت التثبيت الرسمي.

يُعرَّف المزوّد في opencode.json باستخدام الحزمة @ai-sdk/openai-compatible: تحدّد baseURL للبوابة وتسرد معرّفات النماذج. ومن الأفضل إدخال المفتاح عبر opencode auth login بدلًا من وضعه في ملف الإعدادات أو متغيرات البيئة. بذلك لن ينتهي به المطاف داخل ملفات المشروع.

أبرز مشكلة عملية تتعلق بالبروكسي. يعمل OpenCode على Bun، وتتعامل دالة fetch الأصلية فيه مع HTTP_PROXY وHTTPS_PROXY بصورة غير مستقرة. أثناء تثبيت الإضافات، قد يظهر الخطأ fetch() proxy.url must be a non-empty string: إذ يعيد الوكيل كائن URL، بينما تتوقع fetch سلسلة نصية. ولا يقبل Bun الصيغة socks5://، بل يتطلب http://. وحتى مع الإعداد الصحيح، يجب أن يتضمن NO_PROXY كلًا من localhost و127.0.0.1، وإلا فقد تدخل الواجهة في حلقة متكررة بسبب طلباتها الذاتية. أبسط حل هو إلغاء جميع متغيرات البروكسي ثم إعادة تشغيل الخدمة. وبعد ذلك فقط يصبح من المنطقي البدء بتجميع الوكلاء.

فريق الوكلاء وتوزيع الصلاحيات

يوجد في OpenCode نوعان من الوكلاء. Primary هو الوكيل الذي تتحدث معه مباشرة. أما Subagent فيعمل في جلسة فرعية بسياقه الخاص، ولا يعيد إلى المحادثة الرئيسية سوى النتيجة. الوكيلان المدمجان build وplan من نوع primary، بينما general وexplore وكيلان فرعيان. ويمكن تركهما كما هما وإضافة وكلائك الخاصين ببساطة.

حدّد الكاتب سبعة أدوار:

  • orchestrator ‏(GPT-6.1 Sol) يقسّم المهمة ويفوّض العمل، ولا يكتب الكود بنفسه؛
  • architect ‏(Gemini 4 Argon) يصمّم الوحدات وتدفّقات البيانات؛
  • coder ‏(Claude Sonnet 5.5) ينفّذ العمل ويُبقي فروق التغييرات في أضيق نطاق؛
  • reviewer ‏(Claude Opus 5.5) يراجع الكود فقط، من دون إعداد تصحيحات؛
  • security ‏(GLM-5.3) يبحث عن الثغرات؛
  • docs ‏(GPT-6 Luna) يكتب التوثيق؛
  • tests ‏(GLM-5.3 Flash) يكتب الاختبارات.

وُزّعت النماذج وفق مبدأ «النموذج المكلف حيث نحتاج إلى قدرات استدلال قوية، والأرخص حيث يفي بالغرض». ويؤكد الكاتب أن الاختيار ذاتي جزئيًا: فقد استرشد بالأخبار وأراد تجربة نماذج مختلفة، من بينها نماذج مفتوحة.

القاعدة الأساسية في هذا الترتيب: coder وحده يملك edit: allow. فإذا عدّل الجميع الملفات، تضخّم diff وأصبح من الصعب معرفة من غيّر ماذا. ومع ذلك، احتفظ المراجع وsecurity بصلاحية bash: allow، لأنهما يحتاجان إلى تشغيل أدوات فحص الكود، والاطلاع على git diff، والتحقق من الاختبارات.

قيود على مستوى إطار التشغيل بدلًا من الموجّه

قد يتجاهل النموذج عبارة «لا تنفّذ git push» في الموجّه، خصوصًا إذا كانت المهمة ملتبسة. أما الحظر المحدّد في permission فلا يمكن تجاوزه. وتُضبط القواعد بدقة: تطلب bash التأكيد افتراضيًا، ويُسمح بالأمرين git status وgit diff، بينما يُحظر git commit وgit push. ويمكن أيضًا نقل تعريفات الوكلاء من JSON إلى ملفات Markdown في المسار .opencode/agents/<name>.md: يصبح اسم الملف اسم الوكيل، وتضم ترويسة frontmatter الإعدادات، بينما يشكّل متن الملف موجّه النظام. وهذا مفيد عندما تكون الموجّهات طويلة وتحتاج إلى تتبّع إصداراتها.

كيف تستفيد من ذلك

إذا كنت تستخدم Claude Code أو Codex بالفعل، فإن OpenCode يستحق التجربة، ولو لمقارنة النماذج على مهامك الخاصة خلال يوم واحد. خذ هذا المبدأ معك: وكيل واحد يملك صلاحية الكتابة، والبقية تقدّم المشورة وتتحقق من العمل، فيما تُفرض القيود الحساسة عبر permissions. ومن الأفضل اختبار مجموعة النماذج المقترحة على كودك، لأن اختيارات الكاتب تستند إلى الانطباعات أكثر من استنادها إلى الاختبارات المعيارية. لا يغني المقال عن التوثيق، لكنه يوفّر عليك بضع ساعات من التعامل مع المشكلات الشائعة.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول توصيل المزوّد ومشكلات البروكسي؟

يُثبَّت الفرع الحالي v2 بالأمر npm i -g @opencode/cli. أما الحزمة القديمة opencode-ai فتنتمي إلى سلسلة 1.x، ومن السهل الخلط بينهما. وتوجد بدائل للتثبيت أيضًا: brew أو bun أو سكربت التثبيت الرسمي. يُعرَّف المزوّد في opencode.json باستخدام الحزمة @ai-sdk/openai-compatible: تحدّد baseURL للبوابة وتسرد معرّفات النماذج. ومن الأفضل إدخال المفتاح عبر opencode auth login بدلًا من وضعه في ملف الإعدادات أو متغيرات البيئة. بذلك لن ينتهي به المطاف داخل ملفات المشروع. أبرز مشكلة عملية تتعلق بالبروكسي.

ما أبرز التفاصيل حول فريق الوكلاء وتوزيع الصلاحيات؟

يوجد في OpenCode نوعان من الوكلاء. Primary هو الوكيل الذي تتحدث معه مباشرة. أما Subagent فيعمل في جلسة فرعية بسياقه الخاص، ولا يعيد إلى المحادثة الرئيسية سوى النتيجة. الوكيلان المدمجان build وplan من نوع primary، بينما general وexplore وكيلان فرعيان. ويمكن تركهما كما هما وإضافة وكلائك الخاصين ببساطة.

ما أبرز التفاصيل حول قيود على مستوى إطار التشغيل بدلًا من الموجّه؟

قد يتجاهل النموذج عبارة «لا تنفّذ git push» في الموجّه، خصوصًا إذا كانت المهمة ملتبسة. أما الحظر المحدّد في permission فلا يمكن تجاوزه. وتُضبط القواعد بدقة: تطلب bash التأكيد افتراضيًا، ويُسمح بالأمرين git status وgit diff، بينما يُحظر git commit وgit push. ويمكن أيضًا نقل تعريفات الوكلاء من JSON إلى ملفات Markdown في المسار .opencode/agents/<name>.md: يصبح اسم الملف اسم الوكيل، وتضم ترويسة frontmatter الإعدادات، بينما يشكّل متن الملف موجّه النظام. وهذا مفيد عندما تكون الموجّهات طويلة وتحتاج إلى تتبّع إصداراتها.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…