الانتقال إلى المحتوى الرئيسي
OpenCode (GitHub) هو وكيل برمجة طرفي مفتوح المصدر بالذكاء الاصطناعي يعمل مع العديد من المزوّدين.
البروتوكول: متوافق مع OpenAI
  • عنوان URL الأساسي: https://api.orcarouter.ai/v1 (يتضمن /v1)
ترفض نماذج الاستدلال من Claude عبر بروتوكول OpenAI القيمة temperature != 1 (400 temperature may only be set to 1 when thinking is enabled). استخدم نموذجًا غير استدلالي، أو فعّل reasoningEffort — راجع تفعيل التفكير.

التثبيت

npm install -g opencode-ai

الإعداد

ملف الإعداد: ~/.config/opencode/opencode.json.
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "orcarouter": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "OrcaRouter",
      "options": { "baseURL": "https://api.orcarouter.ai/v1", "apiKey": "sk-orca-..." },
      "models": { "orcarouter/auto": { "name": "OrcaRouter Auto" } }
    }
  },
  "model": "orcarouter/orcarouter/auto"
}
استبدله بنموذج محدّد إن فضّلت ذلك، مثل google/gemini-2.5-flash أو anthropic/claude-opus-4.8. تستخدم معرّفات النماذج دائمًا صيغة vendor/model.

التشغيل

opencode run "Reply with exactly: OK"
الناتج المتوقع: OK.

ملاحظات

  • يجب أن يتضمن عنوان URL الأساسي المسار /v1.
  • تستخدم إشارات النماذج صيغة provider/model. ولأن المزوّد مُسمّى orcarouter ويحمل معرّف النموذج أيضًا بادئة vendor، تتكوّن الإشارة من ثلاثة مقاطع: orcarouter/orcarouter/auto (أو orcarouter/anthropic/claude-opus-4.8 لنموذج محدّد).
امتداد VS Code: يشغّل امتداد VS Code الرسمي من OpenCode (sst-dev.opencode) واجهة الأوامر داخل المحرّر ويشارك نفس ملف opencode.json — فلا يوجد إعداد منفصل لنقطة الوصول داخل المحرّر. اضبطه مرة واحدة كما هو موضّح أعلاه ليلتقطه الامتداد.

تفعيل التفكير / الاستدلال

اضبط reasoningEffort في خيارات options الخاصة بالنموذج:
"models": {
  "anthropic/claude-sonnet-4.6": {
    "name": "Sonnet 4.6",
    "options": { "reasoningEffort": "high" }
  }
}
تفعيل reasoningEffort يتجاوز أيضًا تحذير temperature المذكور أعلاه — فمع تفعيل التفكير تصبح temperature = 1 مسموحة، وبالتالي يختفي خطأ 400. وللتحكم الأصلي بأسلوب Anthropic، يقبل مزوّد @ai-sdk/anthropic القيمة thinking: { type: "enabled", budgetTokens: N }.