تشغيل OpenCode على SovereignEG
الهدف: تشغيل OpenCode، وهو مساعد برمجة مفتوح المصدر يعمل من الطرفية (Terminal)، باستخدام نماذج SovereignEG.
الوقت: 10 دقائق.
English: OpenCode
يتصل OpenCode بـ SovereignEG عن طريق المزوّد @ai-sdk/openai-compatible، لأن SovereignEG يعمل بصيغة OpenAI (/v1/chat/completions).
تنبيه: Claude Code لا يتصل مباشرة. SovereignEG يدعم صيغة OpenAI فقط، وليس صيغة Anthropic (/v1/messages)، لذلك يحصل Claude Code ومكتبات Anthropic على الخطأ 404 route_not_found. استخدم OpenCode كما في هذا الدليل، أو أي أداة متوافقة مع OpenAI.
الخطوة 1: التثبيت
# Linux / macOS / WSL
curl -fsSL https://opencode.ai/install | bash
# or with npm (all platforms)
npm install -g opencode-ai
# Windows
scoop install opencode # or: choco install opencodeللتأكد من التثبيت: opencode --version
الخطوة 2: ضع المفتاح في متغير بيئة
أنشئ مفتاح API من لوحة التحكم، ثم ضعه في متغير بيئة في نفس الطرفية التي ستشغّل منها OpenCode:
export SOVEREIGNEG_API_KEY="sk-..." # Linux / macOS$env:SOVEREIGNEG_API_KEY = "sk-..." # Windows PowerShellلا تكتب المفتاح داخل ملفات المشروع.
الخطوة 3: ملف الإعداد
أنشئ الملف opencode.json داخل مجلد مشروعك، وضع فيه:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"sovereigneg": {
"npm": "@ai-sdk/openai-compatible",
"name": "SovereignEG",
"options": {
"baseURL": "https://backend.sovereigneg.com/v1",
"apiKey": "{env:SOVEREIGNEG_API_KEY}"
},
"models": {
"SovereignEG/Qwen3.8-27B-FP8": {
"name": "SovereignEG/Qwen3.8-27B-FP8 (SovereignEG)",
"limit": { "context": 30000, "output": 8192 }
}
}
}
},
"model": "sovereigneg/SovereignEG/Qwen3.8-27B-FP8"
}أهم نقطتين في الملف:
- العنوان
baseURLيجب أن يكون بالضبطhttps://backend.sovereigneg.com/v1، أي أنه ينتهي بـ/v1. لا تكتب/v1/v1، ولا تكتب/v1/chat/completions، لأن OpenCode يضيف باقي المسار بنفسه. - حد السياق
limit.context: القيمة30000مناسبة لخطة الطلاب و Developer Pack (انظر «حدود الخطط التي فيها رصيد يومي مجاني» بالأسفل). إذا لم تكن على إحداهما، يمكنك رفعها حتى131072.
الخطوة 4: التشغيل
cd your-project
opencodeداخل OpenCode:
/models: تأكد أن SovereignEG ظاهر في القائمة، ثم اختر الموديل./init: ينشئ ملفAGENTS.mdيصف مشروعك.- اكتب المهمة التي تريدها، مثلًا: «أضف تحققًا من المدخلات في نموذج التسجيل، واكتب له اختبارًا.»
/undoو/redo: للتراجع عن تعديلات الملفات أو إعادتها.
حدود الخطط التي فيها رصيد يومي مجاني
في خطة الطلاب و Developer Pack رصيد يومي مجاني يعمل على خوادمنا (GPU) في مصر، لذلك لهما حدود خاصة على موديلات الخطة. هذه حدود الخطة، وليست حدود الموديل، وكل رسالة رفض تقول ذلك:
- حجم الطلب: الرصيد المجاني له حد أقصى لحجم الطلب على
SovereignEG/Qwen3.8-27B-FP8: 32,768 توكن (token) في خطة الطلاب حاليًا، ورسالة الرفض تذكر الحد الحالي لخطتك دائمًا. يرسل OpenCode المحادثة كلها مع كل خطوة، فالجلسة الطويلة تتخطى الحد ويظهر الخطأ400 prompt_too_long_for_plan. عندما يكونlimit.contextأقل من الحد قليلًا (مثل30000)، يلخّص OpenCode المحادثة بنفسه قبل أن يصل إليه. - عدد الطلبات في الدقيقة وفي الوقت نفسه: يرسل المساعد البرمجي طلبًا جديدًا بعد كل أداة يستخدمها، فالجلسة المزدحمة قد تصل إلى حد الطلبات في الدقيقة (وهو مشترك بين كل مفاتيحك) أو حد الطلبات في الوقت نفسه، فيظهر
429 rate_limit_exceededأو429 concurrency_limit_exceeded. انتظر المدة المكتوبة فيRetry-Afterثم تابع.
للجلسات الطويلة أو المزدحمة، اختر موديلًا بالدفع حسب الاستخدام: يُخصم من رصيدك، ولا تنطبق عليه حدود الخطة. صفحتا Rate Limits و Student plan تشرحان كيف تعمل هذه الحدود.
عندما ينتهي الرصيد
عندما يصل رصيدك إلى الصفر تتوقف الطلبات على الموديلات المدفوعة. السحب على المكشوف الصغير الظاهر في لوحة التحكم متاح فقط للحسابات التي شحنت رصيدًا مدفوعًا مرة واحدة على الأقل؛ أما الرصيد المجاني وحده (هدية الترحيب أو الكوبون) فيتوقف عند الصفر. يمكنك الشحن من لوحة التحكم في أي وقت.
حل المشكلات الشائعة
| المشكلة | الحل |
|---|---|
SovereignEG لا يظهر في /models | ملف JSON فيه خطأ، أو الملف في مجلد آخر. شغّل opencode من المجلد الذي فيه opencode.json |
401 | المتغير SOVEREIGNEG_API_KEY غير موجود في الطرفية التي شغّلت منها opencode |
400 model_not_found | اسم الموديل داخل models يجب أن يطابق الاسم في /v1/models بالضبط |
404 route_not_found | العنوان baseURL خطأ: يجب أن يكون بالضبط https://backend.sovereigneg.com/v1. وفي الأخطاء الشائعة (تكرار /v1، أو نسيانها، أو عنوان ينتهي بـ /chat/completions) تذكر رسالة الخطأ الحل |
404 يذكر Anthropic Messages API | الأداة تستخدم صيغة Anthropic (مثل Claude Code). استخدم المزوّد @ai-sdk/openai-compatible كما في الخطوة 3 |
400 prompt_too_long_for_plan | حد حجم الطلب في خطتك (خطة الطلاب أو Developer Pack): اجعل limit.context أقل منه قليلًا، مثل 30000 |
429 rate_limit_exceeded أو concurrency_limit_exceeded | حدود الطلبات في خطة الطلاب أو Developer Pack: انتظر Retry-After، أو استخدم موديلًا بالدفع حسب الاستخدام |
| الموديل يرد بالكلام ولا يستخدم الأدوات | اختر موديلًا يدعم الأدوات (supports_tools: true في /v1/models) |
| الرد ينقطع قبل أن يكتمل | ارفع قيمة limit.output |