هل ترغب في استخدام مساعد البرمجة المفتوح المصدر OpenCode، ولكنك تعاني من ارتفاع أسعار واجهة البرمجة (API) الرسمية أو عدم استقرار الشبكة؟ تعد المحطات الوسيطة لـ API (API Relay) هي الحل الأمثل لك. سيعلمك هذا المقال من خلال دليل عملي كيفية إتمام ربط OpenCode بخدمات الوساطة مثل APIYI وOpenRouter في 3 خطوات فقط، مما يتيح لك الوصول إلى أكثر من 75 نموذج لغة كبير رائد مثل Claude وGPT-4 وGemini بتكلفة أقل.
القيمة الجوهرية: بعد قراءة هذا المقال، ستتعلم كيفية تهيئة OpenCode لاستخدام أي API متوافق مع OpenAI، مما يحقق لك حرية التبديل بين النماذج وتحسين التكلفة.

ما هو OpenCode؟ ولماذا نحتاج للربط بمحطة API وسيطة؟
OpenCode هو مساعد برمجة مفتوح المصدر يعمل عبر الطرفية (Terminal)، ويُعرف بأنه البديل المفتوح لـ Claude Code. تم تطويره بلغة Go، ويتميز بواجهة مستخدم نصية (TUI) جذابة، وإدارة جلسات متعددة، وتكامل مع بروتوكول خادم اللغة (LSP)، وغيرها من الميزات الاحترافية.
نظرة سريعة على مميزات OpenCode الأساسية
| الخاصية | الوصف | الفائدة |
|---|---|---|
| دعم أكثر من 75 نموذجاً | يدعم OpenAI، Claude، Gemini، Bedrock وغيرها | عدم الارتباط بمورد واحد |
| أصلي في الطرفية | واجهة TUI مبنية باستخدام مكتبة Bubble Tea | تجربة استخدام صديقة للمطورين |
| مفتوح المصدر ومجاني | الكود متاح بالكامل للجميع، بدون رسوم اشتراك | الدفع حسب استخدام الـ API فقط، مع تحكم كامل في التكلفة |
| تكامل LSP | الكشف التلقائي عن خوادم اللغة | إكمال ذكي للكود وتشخيص الأخطاء |
| إدارة جلسات متعددة | تشغيل عدة وكلاء (Agents) بالتوازي | تفكيك المهام المعقدة والتعاون في حلها |
| وضع Vim | محرر مدمج بأسلوب Vim | انتقال سلس لمستخدمي الطرفية |
لماذا نستخدم محطة API وسيطة؟
قد تواجه بعض التحديات عند استخدام الـ API الرسمي مباشرة:
| المشكلة | حل محطة API الوسيطة |
|---|---|
| الأسعار المرتفعة | توفر المحطة الوسيطة أسعاراً تنافسية تناسب المطورين الأفراد |
| عدم استقرار الشبكة | تحسين مسارات الوصول لضمان سرعة واستقرار الاتصال |
| تعقيد الفوترة | واجهة فوترة موحدة لإدارة نماذج متعددة من مكان واحد |
| قيود الحصص (Quotas) | توفير حصص استخدام أكثر مرونة |
| عوائق التسجيل | لا حاجة لبطاقات ائتمان دولية أو أرقام هواتف أجنبية |
🚀 البداية السريعة: نوصي باستخدام APIYI (apiyi.com) كمحطة وسيطة، حيث يوفر واجهة متوافقة مع OpenAI وجاهزة للاستخدام فوراً. عند التسجيل ستحصل على رصيد تجريبي مجاني، ويمكنك إتمام إعداد OpenCode في غضون 5 دقائق.
النقاط الأساسية لربط OpenCode بمحطة API الوسيطة
قبل البدء بالإعداد، دعنا نفهم مبدأ ربط OpenCode بواجهة البرمجة (API):

شرح هيكلية الإعدادات
يعتمد OpenCode نظام إدارة إعدادات موحداً يدعم مستويات متعددة من التجاوز (Override):
| مستوى الإعدادات | موقع الملف | الأولوية | حالات الاستخدام |
|---|---|---|---|
| إعدادات عن بُعد | .well-known/opencode |
الأقل | الإعدادات الموحدة للفريق |
| إعدادات عامة | ~/.config/opencode/opencode.json |
متوسطة | الإعدادات الشخصية الافتراضية |
| متغيرات البيئة | الملف الذي يشير إليه OPENCODE_CONFIG |
متوسطة-عالية | التجاوز المؤقت |
| إعدادات المشروع | opencode.json في جذر المشروع |
عالية | إعدادات مخصصة لمشروع معين |
| إعدادات مضمنة | OPENCODE_CONFIG_CONTENT |
الأعلى | سيناريوهات CI/CD |
مبدأ الاتصال بمحطة API الوسيطة
يدعم OpenCode أي واجهة برمجة متوافقة مع OpenAI من خلال محول @ai-sdk/openai-compatible. بنود الإعداد الأساسية هي:
- baseURL: عنوان واجهة المحطة الوسيطة.
- apiKey: مفتاح الـ API المقدم من المحطة الوسيطة.
- models: قائمة النماذج المتاحة.
هذا يعني أنه طالما توفر المحطة الوسيطة واجهة قياسية لمسار /v1/chat/completions ، فيمكن ربطها مباشرة بـ OpenCode.
الإعداد السريع لـ OpenCode
الخطوة الأولى: تثبيت OpenCode
يوفر OpenCode عدة طرق للتثبيت، اختر ما يناسبك أكثر:
نص برمجي للتثبيت بنقرة واحدة (موصى به):
curl -fsSL https://opencode.ai/install | bash
التثبيت عبر Homebrew (macOS/Linux):
brew install opencode-ai/tap/opencode
التثبيت عبر npm:
npm i -g opencode-ai@latest
التثبيت عبر Go:
go install github.com/opencode-ai/opencode@latest
التحقق من نجاح التثبيت:
opencode --version
الخطوة الثانية: تكوين مفتاح وسيط الـ API
يدعم OpenCode طريقتين للمصادقة:
الطريقة الأولى: استخدام أمر /connect (موصى بها)
بعد تشغيل OpenCode، أدخل أمر /connect:
opencode
# في واجهة TUI أدخل
/connect
اختر Other لإضافة مزود مخصص (Provider)، ثم أدخل مفتاح الـ API الخاص بك. سيتم تخزين المفتاح بشكل آمن في ~/.local/share/opencode/auth.json.
الطريقة الثانية: تكوين متغيرات البيئة
أضف الأسطر التالية في ملف ~/.zshrc أو ~/.bashrc:
# تكوين وسيط APIYI
export OPENAI_API_KEY="sk-your-apiyi-key"
export OPENAI_BASE_URL="https://api.apiyi.com/v1"
تفعيل التكوين:
source ~/.zshrc
الخطوة الثالثة: إنشاء ملف التكوين opencode.json
هذه هي الخطوة الأكثر أهمية، حيث يتم إنشاء ملف تكوين لتحديد وسيط الـ API:
التكوين العام (ينطبق على جميع المشاريع):
mkdir -p ~/.config/opencode
touch ~/.config/opencode/opencode.json
تكوين المشروع (يسري على المشروع الحالي فقط):
touch opencode.json # في المجلد الرئيسي للمشروع
مثال لتكوين مبسط
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apiyi": {
"npm": "@ai-sdk/openai-compatible",
"name": "APIYI",
"options": {
"baseURL": "https://api.apiyi.com/v1",
"apiKey": "{env:OPENAI_API_KEY}"
},
"models": {
"claude-sonnet-4-20250514": {
"name": "Claude Sonnet 4"
},
"gpt-4o": {
"name": "GPT-4o"
}
}
}
},
"model": "apiyi/claude-sonnet-4-20250514"
}
توضيح التكوين: تقوم صيغة
{env:OPENAI_API_KEY}بقراءة متغير البيئة تلقائياً، مما يتجنب كتابة المفتاح يدوياً في ملف التكوين. مفاتيح API التي يتم الحصول عليها عبر APIYI (apiyi.com) متوافقة مع تنسيق OpenAI ويمكن استخدامها مباشرة.
عرض مثال التكوين الكامل (يحتوي على مزودين متعددين)
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apiyi": {
"npm": "@ai-sdk/openai-compatible",
"name": "APIYI (موصى به)",
"options": {
"baseURL": "https://api.apiyi.com/v1",
"apiKey": "{env:APIYI_API_KEY}"
},
"models": {
"claude-sonnet-4-20250514": {
"name": "Claude Sonnet 4",
"limit": {
"context": 200000,
"output": 65536
}
},
"claude-opus-4-20250514": {
"name": "Claude Opus 4",
"limit": {
"context": 200000,
"output": 32000
}
},
"gpt-4o": {
"name": "GPT-4o",
"limit": {
"context": 128000,
"output": 16384
}
},
"gpt-4o-mini": {
"name": "GPT-4o Mini",
"limit": {
"context": 128000,
"output": 16384
}
},
"gemini-2.5-pro": {
"name": "Gemini 2.5 Pro",
"limit": {
"context": 1000000,
"output": 65536
}
},
"deepseek-chat": {
"name": "DeepSeek V3",
"limit": {
"context": 64000,
"output": 8192
}
}
}
},
"openrouter": {
"npm": "@ai-sdk/openai-compatible",
"name": "OpenRouter",
"options": {
"baseURL": "https://openrouter.ai/api/v1",
"apiKey": "{env:OPENROUTER_API_KEY}",
"headers": {
"HTTP-Referer": "https://your-site.com",
"X-Title": "OpenCode Client"
}
},
"models": {
"anthropic/claude-sonnet-4": {
"name": "Claude Sonnet 4 (OpenRouter)"
},
"openai/gpt-4o": {
"name": "GPT-4o (OpenRouter)"
}
}
}
},
"model": "apiyi/claude-sonnet-4-20250514",
"small_model": "apiyi/gpt-4o-mini",
"agent": {
"coder": {
"model": "apiyi/claude-sonnet-4-20250514",
"maxTokens": 8000
},
"planner": {
"model": "apiyi/gpt-4o",
"maxTokens": 4000
}
},
"tools": {
"write": true,
"bash": true,
"glob": true,
"grep": true
}
}
مقارنة وسطاء الـ API المدعومين في OpenCode

معلمات التكوين لوسطاء الـ API الرئيسيين
| الوسيط | baseURL | المميزات | السيناريو الموصى به |
|---|---|---|---|
| APIYI | https://api.apiyi.com/v1 |
دعم محلي ممتاز، أسعار مغرية، استجابة سريعة | الخيار الأول للمطورين المحليين |
| OpenRouter | https://openrouter.ai/api/v1 |
الأكثر شمولاً، أكثر من 400 نموذج | لمن يحتاج للتنقل المستمر بين النماذج |
| Together AI | https://api.together.xyz/v1 |
نماذج مفتوحة المصدر وفيرة | لمستخدمي Llama وMistral |
| Groq | https://api.groq.com/openai/v1 |
سرعة فائقة، رصيد مجاني | للسيناريوهات الحساسة للتأخير |
شرح مفصل لتكوين APIYI
APIYI هي منصة وسيطة لـ AI API محسنة خصيصاً للمطورين، توفر:
- واجهة موحدة متوافقة مع OpenAI
- دعم للنماذج الرئيسية مثل Claude وGPT وGemini وDeepSeek
- الدفع حسب الاستخدام، بدون رسوم شهرية
- رصيد تجريبي مجاني
- دعم فني محلي
{
"provider": {
"apiyi": {
"npm": "@ai-sdk/openai-compatible",
"name": "APIYI",
"options": {
"baseURL": "https://api.apiyi.com/v1"
},
"models": {
"claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
"claude-opus-4-20250514": { "name": "Claude Opus 4" },
"gpt-4o": { "name": "GPT-4o" },
"gpt-4o-mini": { "name": "GPT-4o Mini" },
"gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
"deepseek-chat": { "name": "DeepSeek V3" }
}
}
}
}
شرح مفصل لتكوين OpenRouter
يجمع OpenRouter أكثر من 400 نموذج ذكاء اصطناعي، وهو مناسب للسيناريوهات التي تتطلب تبديلاً متكرراً بين النماذج:
{
"provider": {
"openrouter": {
"npm": "@ai-sdk/openai-compatible",
"name": "OpenRouter",
"options": {
"baseURL": "https://openrouter.ai/api/v1",
"apiKey": "{env:OPENROUTER_API_KEY}",
"headers": {
"HTTP-Referer": "https://your-app.com",
"X-Title": "My OpenCode App"
}
},
"models": {
"anthropic/claude-sonnet-4": {
"name": "Claude Sonnet 4"
},
"google/gemini-2.5-pro": {
"name": "Gemini 2.5 Pro"
},
"meta-llama/llama-3.1-405b": {
"name": "Llama 3.1 405B"
}
}
}
}
}
💡 نصيحة للاختيار: إذا كنت تستخدم بشكل أساسي سلاسل نماذج Claude وGPT، نوصي بـ APIYI (apiyi.com) لأسعارها الأفضل وسرعة استجابتها. أما إذا كنت بحاجة لاستخدام نماذج مفتوحة المصدر أو نماذج نادرة، فإن OpenRouter يوفر تغطية أشمل.
تقنيات التكوين المتقدمة في OpenCode
استراتيجية تخصيص نماذج الوكيل (Agent)
يحتوي OpenCode على وكيلين مدمجين هما Coder و Planner، ويمكنك تخصيص نماذج مختلفة لكل منهما:
{
"agent": {
"coder": {
"model": "apiyi/claude-sonnet-4-20250514",
"maxTokens": 8000,
"description": "主要编码任务,使用强模型"
},
"planner": {
"model": "apiyi/gpt-4o-mini",
"maxTokens": 4000,
"description": "规划分析,使用轻量模型节省成本"
}
}
}
التبديل بين مزودي الخدمة المتعددين (Provider)
بعد تكوين عدة مزودين (Providers)، يمكنك استخدام الأمر /models داخل OpenCode للتبديل في أي وقت:
# 启动 OpenCode
opencode
# 在 TUI 中切换模型
/models
# 选择 apiyi/claude-sonnet-4-20250514 或其他模型
أفضل الممارسات لمتغيرات البيئة
نوصي بإدارة مفاتيح واجهة برمجة التطبيقات (API keys) في ملف .env:
# .env 文件
APIYI_API_KEY=sk-your-apiyi-key
OPENROUTER_API_KEY=sk-or-your-openrouter-key
ثم الإشارة إليها في ملف opencode.json:
{
"provider": {
"apiyi": {
"options": {
"apiKey": "{env:APIYI_API_KEY}"
}
}
}
}
تكوين حدود الرموز (Token)
حدد قيود السياق والمخرجات للنموذج لتجنب أخطاء تجاوز الحدود:
{
"models": {
"claude-sonnet-4-20250514": {
"name": "Claude Sonnet 4",
"limit": {
"context": 200000,
"output": 65536
}
}
}
}
استكشاف أخطاء OpenCode وإصلاحها
المشكلات التي قد تواجهها أثناء عملية التكوين وحلولها:
س1: تظهر رسالة الخطأ “Route /api/messages not found” بعد التكوين؟
يحدث هذا عادةً بسبب تكوين baseURL بشكل غير صحيح. تحقق من النقاط التالية:
- تأكد من أن baseURL ينتهي بـ
/v1وليس بـ/v1/chat/completions. - تأكد من أن محطة التوزيع (Relay) تدعم تنسيق واجهة OpenAI القياسي.
- تحقق من صلاحية مفتاح واجهة برمجة التطبيقات (API key).
التنسيق الصحيح:
"baseURL": "https://api.apiyi.com/v1"
التنسيق الخاطئ:
"baseURL": "https://api.apiyi.com/v1/chat/completions"
عنوان الواجهة الذي يتم الحصول عليه عبر APIYI (apiyi.com) تم التحقق منه ويمكن استخدامه مباشرة.
س2: تظهر رسالة “ProviderModelNotFoundError” ولم يتم العثور على النموذج؟
هذا لأن معرف النموذج (Model ID) المكون لا يتطابق مع ما هو محدد في المزود (Provider). الحل:
- تحقق من تنسيق حقل
model:provider-id/model-id. - تأكد من تعريف هذا النموذج داخل كائن
models.
مثال:
{
"provider": {
"apiyi": {
"models": {
"claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" }
}
}
},
"model": "apiyi/claude-sonnet-4-20250514"
}
س3: كيف يمكنني التحقق من نجاح التكوين؟
استخدم الأوامر التالية للتحقق:
# 查看已配置的认证信息
opencode auth list
# 查看可用模型
opencode
/models
# 测试简单对话
opencode -p "Hello, 请用中文回复"
إذا تلقيت استجابة عادية، فهذا يعني أن التكوين ناجح. يمكنك عبر منصة APIYI (apiyi.com) الاطلاع على سجلات استدعاء واجهة برمجة التطبيقات في لوحة التحكم لتسهيل عملية استكشاف الأخطاء.
س4: ما هو أفضل مكان لوضع ملف التكوين؟
اختر بناءً على سيناريو الاستخدام:
| السيناريو | الموقع الموصى به | ملاحظات |
|---|---|---|
| افتراضي عالمي للشخص | ~/.config/opencode/opencode.json |
مشترك بين جميع المشاريع |
| تكوين مشروع معين | دليل المشروع الرئيسي opencode.json |
يمكن رفعه إلى Git (بدون المفاتيح) |
| بيئة CI/CD | متغير البيئة OPENCODE_CONFIG_CONTENT |
حقن التكوين ديناميكيًا |
س5: كيف يمكنني التبديل بين محطات توزيع API المختلفة في OpenCode؟
بعد تكوين عدة مزودين (Providers)، استخدم الأمر /models للتبديل:
opencode
/models
# 选择不同 Provider 下的模型即可切换
يمكنك أيضًا تعيين نموذج افتراضي في التكوين:
{
"model": "apiyi/claude-sonnet-4-20250514"
}
مقارنة بين OpenCode وClaude Code: طرق الوصول إلى واجهة برمجة التطبيقات (API)
| بُعد المقارنة | OpenCode | Claude Code |
|---|---|---|
| دعم النماذج | أكثر من 75 نموذجاً، تكوين مرن | سلسلة Claude فقط |
| محطات API الوسيطة | يدعم أي واجهة متوافقة مع OpenAI | لا يدعم الواجهات المخصصة |
| السعر | برنامج مجاني + دفع حسب استخدام الـ API | اشتراك شهري بقيمة 17-100 دولار + API |
| طريقة التكوين | ملفات تكوين JSON + متغيرات البيئة | تكوين مدمج، غير قابل للتعديل |
| مستوى المصدر المفتوح | مفتوح المصدر بالكامل | مغلق المصدر |
| الأداء | يعتمد على النموذج المختار | تحسينات أصلية لـ Claude، بنسبة 80.9% في SWE-bench |
🎯 نصيحة تقنية: تكمن الميزة الكبرى لـ OpenCode في مرونة النماذج. بالتعاون مع محطة APIYI (apiyi.com) الوسيطة، يمكنك استخدام نفس التكوين للتبديل بين نماذج متعددة مثل Claude وGPT-4 وGemini وغيرها، للعثور على الحل الأمثل من حيث التكلفة والأداء.
المراجع
فيما يلي المراجع التي قد تحتاجها عند إعداد OpenCode:
| المرجع | الرابط | الوصف |
|---|---|---|
| وثائق OpenCode الرسمية | opencode.ai/docs |
مرجع التكوين الكامل |
| مستودع OpenCode على GitHub | github.com/opencode-ai/opencode |
الكود المصدري والمشكلات (Issues) |
| تكوين مزودي OpenCode | opencode.ai/docs/providers |
شرح مفصل للمزودين |
| وثائق OpenRouter | openrouter.ai/docs |
دليل الوصول إلى OpenRouter |
ملخص
من خلال طريقة التكوين المكونة من 3 خطوات في هذا المقال، أصبحت الآن تتقن:
- تثبيت OpenCode: استخدام نص برمجي بنقرة واحدة أو مدير حزم للتثبيت السريع.
- تكوين مفتاح API: إعداد المصادقة عبر الأمر
/connectأو من خلال متغيرات البيئة. - إنشاء ملف التكوين: كتابة ملف
opencode.jsonلتحديد خادم الوسيط والنماذج.
بصفته مساعد برمجة بالذكاء الاصطناعي مفتوح المصدر في واجهة الأوامر (Terminal)، يوفر OpenCode تجربة تضاهي Claude Code عند استخدامه مع وسيط API، مع الحفاظ على التحكم في التكاليف ومرونة النماذج.
نوصي بالحصول على مفتاح API بسرعة عبر APIYI apiyi.com والبدء في الاختبار. توفر المنصة رصيداً مجانياً، وتدعم النماذج الرائدة مثل Claude و GPT و Gemini، كما أن تنسيق الواجهة الموحد يجعل التكوين أكثر سهولة.
📝 المؤلف: فريق APIYI التقني | APIYI apiyi.com – لجعل استدعاء واجهات برمجة تطبيقات الذكاء الاصطناعي (AI API) أكثر سهولة.
