---
title: المزوّدون
description: استخدام أي موفّر LLM في OpenCode.
---

import config from "../../../../config.mjs"
export const console = config.console

يستخدم OpenCode ‏[AI SDK](https://ai-sdk.dev/) و[Models.dev](https://models.dev) لدعم **أكثر من 75 موفّر LLM**، كما يدعم تشغيل النماذج المحلية.

لإضافة مزوّد تحتاج إلى:

1. أضف مفاتيح API الخاصة بالمزوّد باستخدام الأمر `/connect`.
2. اضبط المزوّد في ملف إعدادات OpenCode.

---

### بيانات الاعتماد

عند إضافة مفاتيح API الخاصة بمزوّد عبر الأمر `/connect`، يتم تخزينها
في `~/.local/share/opencode/auth.json`.

---

### الإعدادات

يمكنك تخصيص المزوّدات عبر قسم `provider` في ملف إعدادات OpenCode.

---

#### عنوان URL الأساسي

يمكنك تخصيص عنوان URL الأساسي لأي مزوّد عبر خيار `baseURL`. يفيد ذلك عند استخدام خدمات وسيطة (proxy) أو نقاط نهاية مخصّصة.

```json title="opencode.json" {6}
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "anthropic": {
      "options": {
        "baseURL": "https://api.anthropic.com/v1"
      }
    }
  }
}
```

---

## OpenCode Zen

OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد تم
اختبارها والتحقق من أنها تعمل بشكل جيد مع OpenCode. [اعرف المزيد](/docs/zen).

:::tip
إذا كنت جديدا، فننصح بالبدء مع OpenCode Zen.
:::

1. شغّل الأمر `/connect` في TUI، واختر opencode، ثم انتقل إلى [opencode.ai/auth](https://opencode.ai/auth).

   ```txt
   /connect
   ```

2. سجّل الدخول، وأضف تفاصيل الفوترة، ثم انسخ مفتاح API الخاص بك.

3. الصق مفتاح API.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل `/models` في TUI لعرض قائمة النماذج التي نوصي بها.

   ```txt
   /models
   ```

يعمل مثل أي مزوّد آخر في OpenCode واستخدامه اختياري بالكامل.

---

## OpenCode Go

OpenCode Go هي خطة اشتراك منخفضة التكلفة توفّر وصولا موثوقا إلى نماذج البرمجة المفتوحة الشهيرة المقدّمة من فريق OpenCode، والتي تم اختبارها والتحقق من أنها تعمل بشكل جيد مع OpenCode.

1. شغّل الأمر `/connect` في TUI، واختر `OpenCode Go`، ثم انتقل إلى [opencode.ai/auth](https://opencode.ai/zen).

   ```txt
   /connect
   ```

2. سجّل الدخول، وأضف تفاصيل الفوترة، ثم انسخ مفتاح API الخاص بك.

3. الصق مفتاح API.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل `/models` في TUI لعرض قائمة النماذج التي نوصي بها.

   ```txt
   /models
   ```

يعمل مثل أي مزوّد آخر في OpenCode واستخدامه اختياري بالكامل.

---

## الدليل

لنلقِ نظرة على بعض المزوّدات بالتفصيل. إذا رغبت في إضافة مزوّد إلى القائمة،
فلا تتردد في فتح PR.

:::note
لم تجد المزوّد الذي تبحث عنه؟ أرسل PR.
:::

---

### 302.AI

1. توجّه إلى [302.AI console](https://302.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **302.AI**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ 302.AI.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

---

### Amazon Bedrock

لاستخدام Amazon Bedrock مع OpenCode:

1. توجّه إلى **Model catalog** في Amazon Bedrock console واطلب
   الوصول إلى النماذج التي تريدها.

   :::tip
   يجب أن يكون لديك وصول إلى النموذج الذي تريده في Amazon Bedrock.
   :::

2. **اضبط المصادقة** باستخدام إحدى الطرق التالية:

   #### متغيرات البيئة (بدء سريع)

   عيّن أحد متغيرات البيئة التالية أثناء تشغيل opencode:

   ```bash
   # الخيار 1: استخدام مفاتيح وصول AWS
   AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode

   # الخيار 2: استخدام ملف تعريف AWS مسمّى
   AWS_PROFILE=my-profile opencode

   # الخيار 3: استخدام رمز Bedrock المميز (bearer token)
   AWS_BEARER_TOKEN_BEDROCK=XXX opencode
   ```

   أو أضفها إلى bash profile:

   ```bash title="~/.bash_profile"
   export AWS_PROFILE=my-dev-profile
   export AWS_REGION=us-east-1
   ```

   #### ملف الإعدادات (موصى به)

   للإعداد الخاص بالمشروع أو الإعداد الدائم، استخدم `opencode.json`:

   ```json title="opencode.json"
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "amazon-bedrock": {
         "options": {
           "region": "us-east-1",
           "profile": "my-aws-profile"
         }
       }
     }
   }
   ```

   **الخيارات المتاحة:**
   - `region` - منطقة AWS (مثل `us-east-1`، `eu-west-1`)
   - `profile` - ملف تعريف AWS المسمّى من `~/.aws/credentials`
   - `endpoint` - عنوان URL لنقطة نهاية مخصّصة لنقاط نهاية VPC (اسم بديل لخيار `baseURL` العام)

   :::tip
   خيارات ملف الإعدادات لها أولوية على متغيرات البيئة.
   :::

   #### متقدم: نقاط نهاية VPC

   إذا كنت تستخدم نقاط نهاية VPC لـ Bedrock:

   ```json title="opencode.json"
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "amazon-bedrock": {
         "options": {
           "region": "us-east-1",
           "profile": "production",
           "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
         }
       }
     }
   }
   ```

   :::note
   خيار `endpoint` هو اسم بديل لخيار `baseURL` العام باستخدام مصطلحات AWS. إذا تم تحديد كل من `endpoint` و`baseURL`، فستكون الأولوية لـ `endpoint`.
   :::

   #### طرق المصادقة - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: أنشئ مستخدم IAM وأنشئ مفاتيح وصول من AWS Console
   - **`AWS_PROFILE`**: استخدم ملفات تعريف مسمّاة من `~/.aws/credentials`. اضبط أولا عبر `aws configure --profile my-profile` أو `aws sso login`
   - **`AWS_BEARER_TOKEN_BEDROCK`**: أنشئ مفاتيح API طويلة الأجل من Amazon Bedrock console
   - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**: لـ EKS IRSA (IAM Roles for Service Accounts) أو بيئات Kubernetes أخرى مع اتحاد OIDC. يتم حقن متغيرات البيئة هذه تلقائيا بواسطة Kubernetes عند استخدام تعليقات حساب الخدمة.

   #### أولوية المصادقة

   يستخدم Amazon Bedrock أولوية المصادقة التالية:
   1. **Bearer Token** - متغير البيئة `AWS_BEARER_TOKEN_BEDROCK` أو الرمز من الأمر `/connect`
   2. **AWS Credential Chain** - الملف الشخصي، مفاتيح الوصول، بيانات الاعتماد المشتركة، أدوار IAM، رموز Web Identity (EKS IRSA)، بيانات تعريف المثيل

   :::note
   عند تعيين bearer token (عبر `/connect` أو `AWS_BEARER_TOKEN_BEDROCK`)، ستكون له أولوية على جميع طرق بيانات اعتماد AWS بما في ذلك ملفات التعريف المضبوطة.
   :::

3. شغّل الأمر `/models` لاختيار النموذج الذي تريده.

   ```txt
   /models
   ```

:::note
بالنسبة إلى ملفات تعريف الاستدلال المخصّصة، استخدم اسم النموذج واسم المزوّد في المفتاح وعيّن الخاصية `id` إلى arn. يضمن ذلك التخزين المؤقت الصحيح:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "amazon-bedrock": {
      // ...
      "models": {
        "anthropic-claude-sonnet-4.5": {
          "id": "arn:aws:bedrock:us-east-1:xxx:application-inference-profile/yyy"
        }
      }
    }
  }
}
```

:::

---

### Anthropic

1. بعد إنشاء حسابك، شغّل الأمر `/connect` واختر Anthropic.

   ```txt
   /connect
   ```

2. هنا يمكنك اختيار خيار **Claude Pro/Max** وسيتم فتح المتصفح
   وسيطلب منك المصادقة.

   ```txt
   ┌ Select auth method
   │
   │ Claude Pro/Max
   │ Create an API Key
   │ Manually enter API Key
   └
   ```

3. الآن يجب أن تكون جميع نماذج Anthropic متاحة عند استخدام الأمر `/models`.

   ```txt
   /models
   ```

:::info
استخدام اشتراك Claude Pro/Max داخل OpenCode غير مدعوم رسميا من [Anthropic](https://anthropic.com).
:::

##### استخدام مفاتيح API

يمكنك أيضا اختيار **Create an API Key** إذا لم يكن لديك اشتراك Pro/Max. سيفتح ذلك المتصفح أيضا ويطلب منك تسجيل الدخول إلى Anthropic ويعطيك رمزا يمكنك لصقه في terminal.

أو إذا كان لديك مفتاح API بالفعل، يمكنك اختيار **Manually enter API Key** ولصقه في terminal.

---

### Atomic Chat

يمكنك تكوين opencode لاستخدام النماذج المحلية عبر [Atomic Chat](https://atomic.chat)، وهو تطبيق سطح مكتب يقوم بتشغيل LLMs المحلية خلف خادم API متوافق مع OpenAI (نقطة النهاية الافتراضية `http://127.0.0.1:1337/v1`).

```json title="opencode.json" "atomic-chat" {5, 6, 8, 10-14}
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "atomic-chat": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Atomic Chat (local)",
      "options": {
        "baseURL": "http://127.0.0.1:1337/v1"
      },
      "models": {
        "<your-model-id>": {
          "name": "<your-model-name>"
        }
      }
    }
  }
}
```

في هذا المثال:

- `atomic-chat` هو معرف الموفر المخصص. يمكن أن يكون أي سلسلة نصية.
- `npm` يحدد الحزمة المستخدمة لهذا الموفر. هنا يُستخدم `@ai-sdk/openai-compatible` لأي واجهة برمجة تطبيقات متوافقة مع OpenAI.
- `name` هو الاسم المعروض للموفر في الواجهة.
- `options.baseURL` هو نقطة نهاية الخادم المحلي. غيّر المضيف والمنفذ لتتطابق مع إعدادات Atomic Chat الخاصة بك.
- `models` هو خريطة لمعرفات النماذج إلى أسمائها المعروضة. يجب أن يتطابق كل معرف مع `id` الذي يرجعه `GET /v1/models` — قم بتشغيل `curl http://127.0.0.1:1337/v1/models` لإدراج المعرفات المحملة حاليًا في Atomic Chat.

:::tip
إذا لم تعمل استدعاءات الأدوات بشكل جيد، فاختر نموذجًا محملًا بدعم قوي لاستدعاء الأدوات (على سبيل المثال، متغير Qwen-Coder أو DeepSeek-Coder).
:::

---

### Azure OpenAI

:::note
إذا واجهت أخطاء "I'm sorry, but I cannot assist with that request"، فجرّب تغيير مرشح المحتوى من **DefaultV2** إلى **Default** في مورد Azure الخاص بك.
:::

1. توجّه إلى [Azure portal](https://portal.azure.com/) وأنشئ موردا من نوع **Azure OpenAI**. ستحتاج إلى:
   - **Resource name**: يصبح جزءا من نقطة نهاية API لديك (`https://RESOURCE_NAME.openai.azure.com/`)
   - **API key**: إما `KEY 1` أو `KEY 2` من موردك

2. اذهب إلى [Azure AI Foundry](https://ai.azure.com/) وانشر نموذجا.

   :::note
   يجب أن يطابق اسم النشر اسم النموذج كي يعمل opencode بشكل صحيح.
   :::

3. شغّل الأمر `/connect` وابحث عن **Azure**.

   ```txt
   /connect
   ```

4. أدخل مفتاح API.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

5. عيّن اسم المورد كمتغير بيئة:

   ```bash
   AZURE_RESOURCE_NAME=XXX opencode
   ```

   أو أضفه إلى bash profile:

   ```bash title="~/.bash_profile"
   export AZURE_RESOURCE_NAME=XXX
   ```

6. شغّل الأمر `/models` لاختيار النموذج الذي قمت بنشره.

   ```txt
   /models
   ```

---

### Azure Cognitive Services

1. توجّه إلى [Azure portal](https://portal.azure.com/) وأنشئ موردا من نوع **Azure OpenAI**. ستحتاج إلى:
   - **Resource name**: يصبح جزءا من نقطة نهاية API لديك (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`)
   - **API key**: إما `KEY 1` أو `KEY 2` من موردك

2. اذهب إلى [Azure AI Foundry](https://ai.azure.com/) وانشر نموذجا.

   :::note
   يجب أن يطابق اسم النشر اسم النموذج كي يعمل opencode بشكل صحيح.
   :::

3. شغّل الأمر `/connect` وابحث عن **Azure Cognitive Services**.

   ```txt
   /connect
   ```

4. أدخل مفتاح API.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

5. عيّن اسم المورد كمتغير بيئة:

   ```bash
   AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode
   ```

   أو أضفه إلى bash profile:

   ```bash title="~/.bash_profile"
   export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX
   ```

6. شغّل الأمر `/models` لاختيار النموذج الذي قمت بنشره.

   ```txt
   /models
   ```

---

### Baseten

1. توجّه إلى [Baseten](https://app.baseten.co/)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **Baseten**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Baseten.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

---

### Cerebras

1. توجّه إلى [Cerebras console](https://inference.cerebras.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **Cerebras**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Cerebras.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Qwen 3 Coder 480B_.

   ```txt
   /models
   ```

---

### Cloudflare AI Gateway

تتيح Cloudflare AI Gateway الوصول إلى نماذج من OpenAI وAnthropic وWorkers AI وغيرها عبر نقطة نهاية موحّدة. مع [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/) لن تحتاج إلى مفاتيح API منفصلة لكل مزوّد.

1. توجّه إلى [Cloudflare dashboard](https://dash.cloudflare.com/)، وانتقل إلى **AI** > **AI Gateway**، وأنشئ بوابة جديدة.

2. عيّن Account ID وGateway ID كمتغيرات بيئة.

   ```bash title="~/.bash_profile"
   export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id
   export CLOUDFLARE_GATEWAY_ID=your-gateway-id
   ```

3. شغّل الأمر `/connect` وابحث عن **Cloudflare AI Gateway**.

   ```txt
   /connect
   ```

4. أدخل Cloudflare API token.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

   أو عيّنه كمتغير بيئة.

   ```bash title="~/.bash_profile"
   export CLOUDFLARE_API_TOKEN=your-api-token
   ```

5. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

   يمكنك أيضا إضافة نماذج عبر إعدادات opencode.

   ```json title="opencode.json"
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "cloudflare-ai-gateway": {
         "models": {
           "openai/gpt-4o": {},
           "anthropic/claude-sonnet-4": {}
         }
       }
     }
   }
   ```

---

### Cortecs

1. توجّه إلى [Cortecs console](https://cortecs.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **Cortecs**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Cortecs.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.

   ```txt
   /models
   ```

---

### DeepSeek

1. توجّه إلى [DeepSeek console](https://platform.deepseek.com/)، وأنشئ حسابا، ثم انقر **Create new API key**.

2. شغّل الأمر `/connect` وابحث عن **DeepSeek**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ DeepSeek.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج من DeepSeek مثل _DeepSeek V4 Pro_.

   ```txt
   /models
   ```

---

### Deep Infra

1. توجّه إلى [Deep Infra dashboard](https://deepinfra.com/dash)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **Deep Infra**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Deep Infra.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

---

### FrogBot

1. توجّه إلى [FrogBot dashboard](https://app.frogbot.ai/signup)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **FrogBot**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ FrogBot.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

---

### Fireworks AI

1. توجّه إلى [Fireworks AI console](https://app.fireworks.ai/)، وأنشئ حسابا، ثم انقر **Create API Key**.

2. شغّل الأمر `/connect` وابحث عن **Fireworks AI**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Fireworks AI.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.

   ```txt
   /models
   ```

---

### GitLab Duo

يوفّر GitLab Duo دردشة وكيلة (agentic) مدعومة بالذكاء الاصطناعي مع قدرات استدعاء أدوات بشكل مدمج عبر Anthropic proxy الخاصة بـ GitLab.

1. شغّل الأمر `/connect` واختر GitLab.

   ```txt
   /connect
   ```

2. اختر طريقة المصادقة:

   ```txt
   ┌ Select auth method
   │
   │ OAuth (Recommended)
   │ Personal Access Token
   └
   ```

   #### استخدام OAuth (موصى به)

   اختر **OAuth** وسيفتح المتصفح لإتمام التفويض.

   #### استخدام Personal Access Token 1. اذهب إلى [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens)
   2. انقر **Add new token**
   3. Name: `OpenCode`، Scopes: `api`
   4. انسخ الرمز (يبدأ بـ `glpat-`)
   5. أدخله في terminal

3. شغّل الأمر `/models` لعرض النماذج المتاحة.

   ```txt
   /models
   ```

   تتوفر ثلاثة نماذج مبنية على Claude:
   - **duo-chat-haiku-4-5** (Default) - استجابات سريعة للمهام السريعة
   - **duo-chat-sonnet-4-5** - أداء متوازن لمعظم سير العمل
   - **duo-chat-opus-4-5** - الأكثر قدرة للتحليل المعقّد

:::note
يمكنك أيضا تعيين متغير البيئة 'GITLAB_TOKEN' إذا لم تكن تريد
تخزين الرمز في مساحة تخزين مصادقة opencode.
:::

##### GitLab مستضاف ذاتيا

:::note[ملاحظة امتثال]
يستخدم OpenCode نموذجا صغيرا لبعض مهام الذكاء الاصطناعي مثل إنشاء عنوان الجلسة.
تم ضبطه لاستخدام gpt-5-nano افتراضيا، مستضافا عبر Zen. لحصر OpenCode
على استخدام مثيل GitLab المستضاف لديك فقط، أضف ما يلي إلى ملف
`opencode.json` لديك. يوصى أيضا بتعطيل مشاركة الجلسات.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "small_model": "gitlab/duo-chat-haiku-4-5",
  "share": "disabled"
}
```

:::

لمثيلات GitLab المستضافة ذاتيا:

```bash
export GITLAB_INSTANCE_URL=https://gitlab.company.com
export GITLAB_TOKEN=glpat-...
```

إذا كان مثيلك يشغّل AI Gateway مخصّصة:

```bash
GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
```

أو أضفها إلى bash profile:

```bash title="~/.bash_profile"
export GITLAB_INSTANCE_URL=https://gitlab.company.com
export GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com
export GITLAB_TOKEN=glpat-...
```

:::note
يجب على مدير GitLab لديك تفعيل ما يلي:

1. [Duo Agent Platform](https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/) للمستخدم أو المجموعة أو المثيل
2. Feature flags (عبر Rails console):
   - `agent_platform_claude_code`
   - `third_party_agents_enabled`
     :::

##### OAuth للمثيلات المستضافة ذاتيا

لكي يعمل Oauth مع مثيلك المستضاف ذاتيا، تحتاج إلى إنشاء
تطبيق جديد (Settings → Applications) مع
callback URL ‏`http://127.0.0.1:8080/callback` ونطاقات الصلاحيات التالية:

- api (Access the API on your behalf)
- read_user (Read your personal information)
- read_repository (Allows read-only access to the repository)

ثم عرّض application ID كمتغير بيئة:

```bash
export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
```

مزيد من التوثيق على صفحة [opencode-gitlab-auth](https://www.npmjs.com/package/opencode-gitlab-auth).

##### التهيئة

خصّص عبر `opencode.json`:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "gitlab": {
      "options": {
        "instanceUrl": "https://gitlab.com"
      }
    }
  }
}
```

##### أدوات GitLab API (اختياري، لكن موصى به بشدة)

للوصول إلى أدوات GitLab (merge requests وissues وpipelines وCI/CD وغيرها):

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-gitlab-plugin"]
}
```

يوفّر هذا الملحق قدرات شاملة لإدارة مستودعات GitLab بما في ذلك مراجعات MR وتتبع issues ومراقبة pipelines وغير ذلك.

---

### GitHub Copilot

لاستخدام اشتراك GitHub Copilot مع opencode:

:::note
قد تتطلب بعض النماذج اشتراك [Pro+](https://github.com/features/copilot/plans) للاستخدام.

تحتاج بعض النماذج إلى تفعيل يدوي من [إعدادات GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-ai-models/configure-access-to-ai-models#setup-for-individual-use).
:::

1. شغّل الأمر `/connect` وابحث عن GitHub Copilot.

   ```txt
   /connect
   ```

2. انتقل إلى [github.com/login/device](https://github.com/login/device) وأدخل الرمز.

   ```txt
   ┌ Login with GitHub Copilot
   │
   │ https://github.com/login/device
   │
   │ Enter code: 8F43-6FCF
   │
   └ Waiting for authorization...
   ```

3. الآن شغّل الأمر `/models` لاختيار النموذج الذي تريده.

   ```txt
   /models
   ```

---

### Google Vertex AI

لاستخدام Google Vertex AI مع OpenCode:

1. توجّه إلى **Model Garden** في Google Cloud Console وتحقق من
   النماذج المتاحة في منطقتك.

   :::note
   تحتاج إلى مشروع Google Cloud مع تفعيل Vertex AI API.
   :::

2. عيّن متغيرات البيئة المطلوبة:
   - `GOOGLE_CLOUD_PROJECT`: معرّف مشروع Google Cloud لديك
   - `VERTEX_LOCATION` (اختياري): منطقة Vertex AI (الافتراضي `global`)
   - المصادقة (اختر واحدا):
     - `GOOGLE_APPLICATION_CREDENTIALS`: مسار ملف مفتاح حساب الخدمة بصيغة JSON
     - المصادقة عبر gcloud CLI: ‏`gcloud auth application-default login`

   عيّنها أثناء تشغيل opencode.

   ```bash
   GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode
   ```

   أو أضفها إلى bash profile.

   ```bash title="~/.bash_profile"
   export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
   export GOOGLE_CLOUD_PROJECT=your-project-id
   export VERTEX_LOCATION=global
   ```

:::tip
تساعد منطقة `global` على تحسين التوفر وتقليل الأخطاء دون تكلفة إضافية. استخدم نقاط نهاية إقليمية (مثل `us-central1`) لمتطلبات موضع البيانات. [اعرف المزيد](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints)
:::

3. شغّل الأمر `/models` لاختيار النموذج الذي تريده.

   ```txt
   /models
   ```

---

### Groq

1. توجّه إلى [Groq console](https://console.groq.com/)، وانقر **Create API Key**، ثم انسخ المفتاح.

2. شغّل الأمر `/connect` وابحث عن Groq.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بالمزوّد.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار ما تريده.

   ```txt
   /models
   ```

---

### Hugging Face

توفّر [Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) وصولا إلى نماذج مفتوحة مدعومة من أكثر من 17 مزوّدا.

1. توجّه إلى [Hugging Face settings](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained) لإنشاء رمز (token) بصلاحية إجراء طلبات إلى Inference Providers.

2. شغّل الأمر `/connect` وابحث عن **Hugging Face**.

   ```txt
   /connect
   ```

3. أدخل token الخاص بـ Hugging Face.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi-K2-Instruct_ أو _GLM-4.6_.

   ```txt
   /models
   ```

---

### Helicone

[Helicone](https://helicone.ai) منصة لملاحظة LLM (observability) توفّر التسجيل والمراقبة والتحليلات لتطبيقات الذكاء الاصطناعي لديك. تقوم Helicone AI Gateway بتوجيه طلباتك تلقائيا إلى المزوّد المناسب بناء على النموذج.

1. توجّه إلى [Helicone](https://helicone.ai)، وأنشئ حسابا، ثم أنشئ مفتاح API من لوحة التحكم.

2. شغّل الأمر `/connect` وابحث عن **Helicone**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Helicone.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

لمزيد من المزوّدات والميزات المتقدمة مثل التخزين المؤقت (caching) وتحديد المعدّل (rate limiting)، راجع [توثيق Helicone](https://docs.helicone.ai).

#### إعدادات اختيارية

إذا رأيت ميزة أو نموذجا في Helicone لم يتم ضبطه تلقائيا عبر opencode، فيمكنك دائما ضبطه بنفسك.

هذه هي [Helicone's Model Directory](https://helicone.ai/models)، وستحتاجها للحصول على IDs الخاصة بالنماذج التي تريد إضافتها.

```jsonc title="~/.config/opencode/opencode.jsonc"
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "helicone": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Helicone",
      "options": {
        "baseURL": "https://ai-gateway.helicone.ai",
      },
      "models": {
        "gpt-4o": {
          // Model ID (from Helicone's model directory page)
          "name": "GPT-4o", // Your own custom name for the model
        },
        "claude-sonnet-4-20250514": {
          "name": "Claude Sonnet 4",
        },
      },
    },
  },
}
```

#### ترويسات مخصّصة

تدعم Helicone ترويسات مخصّصة لميزات مثل التخزين المؤقت وتتبع المستخدم وإدارة الجلسات. أضفها إلى إعداد المزوّد عبر `options.headers`:

```jsonc title="~/.config/opencode/opencode.jsonc"
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "helicone": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Helicone",
      "options": {
        "baseURL": "https://ai-gateway.helicone.ai",
        "headers": {
          "Helicone-Cache-Enabled": "true",
          "Helicone-User-Id": "opencode",
        },
      },
    },
  },
}
```

##### تتبع الجلسات

تتيح ميزة [Sessions](https://docs.helicone.ai/features/sessions) في Helicone تجميع طلبات LLM المرتبطة معا. استخدم ملحق [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) لتسجيل كل محادثة OpenCode تلقائيا كجلسة في Helicone.

```bash
npm install -g opencode-helicone-session
```

أضفه إلى إعداداتك.

```json title="opencode.json"
{
  "plugin": ["opencode-helicone-session"]
}
```

يقوم الملحق بحقن ترويسات `Helicone-Session-Id` و`Helicone-Session-Name` ضمن طلباتك. في صفحة Sessions داخل Helicone، سترى كل محادثة OpenCode مدرجة كجلسة مستقلة.

##### ترويسات Helicone الشائعة

| Header                     | الوصف                                                    |
| -------------------------- | -------------------------------------------------------- |
| `Helicone-Cache-Enabled`   | تفعيل التخزين المؤقت للاستجابات (`true`/`false`)         |
| `Helicone-User-Id`         | تتبع المقاييس حسب المستخدم                               |
| `Helicone-Property-[Name]` | إضافة خصائص مخصّصة (مثل `Helicone-Property-Environment`) |
| `Helicone-Prompt-Id`       | ربط الطلبات بإصدارات prompt                              |

راجع [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory) لعرض جميع الترويسات المتاحة.

---

### llama.cpp

يمكنك ضبط opencode لاستخدام نماذج محلية عبر أداة llama-server ضمن [llama.cpp](https://github.com/ggml-org/llama.cpp)

```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15}
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "llama.cpp": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "llama-server (local)",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1"
      },
      "models": {
        "qwen3-coder:a3b": {
          "name": "Qwen3-Coder: a3b-30b (local)",
          "limit": {
            "context": 128000,
            "output": 65536
          }
        }
      }
    }
  }
}
```

في هذا المثال:

- `llama.cpp` هو ID مزوّد مخصّص. يمكن أن يكون أي سلسلة نصية تريدها.
- `npm` يحدد الحزمة المستخدمة لهذا المزوّد. هنا يتم استخدام `@ai-sdk/openai-compatible` لأي API متوافق مع OpenAI.
- `name` هو اسم العرض للمزوّد في واجهة المستخدم.
- `options.baseURL` هو نقطة نهاية الخادم المحلي.
- `models` هو خريطة من IDs النماذج إلى إعداداتها. سيتم عرض اسم النموذج ضمن قائمة اختيار النماذج.

---

### IO.NET

تقدّم IO.NET ‏17 نموذجا محسّنا لاستخدامات متعددة:

1. توجّه إلى [IO.NET console](https://ai.io.net/)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **IO.NET**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ IO.NET.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

---

### LM Studio

يمكنك ضبط opencode لاستخدام نماذج محلية عبر LM Studio.

```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14}
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "lmstudio": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "LM Studio (local)",
      "options": {
        "baseURL": "http://127.0.0.1:1234/v1"
      },
      "models": {
        "google/gemma-3n-e4b": {
          "name": "Gemma 3n-e4b (local)"
        }
      }
    }
  }
}
```

في هذا المثال:

- `lmstudio` هو ID مزوّد مخصّص. يمكن أن يكون أي سلسلة نصية تريدها.
- `npm` يحدد الحزمة المستخدمة لهذا المزوّد. هنا يتم استخدام `@ai-sdk/openai-compatible` لأي API متوافق مع OpenAI.
- `name` هو اسم العرض للمزوّد في واجهة المستخدم.
- `options.baseURL` هو نقطة نهاية الخادم المحلي.
- `models` هو خريطة من IDs النماذج إلى إعداداتها. سيتم عرض اسم النموذج ضمن قائمة اختيار النماذج.

---

### Moonshot AI

لاستخدام Kimi K2 من Moonshot AI:

1. توجّه إلى [Moonshot AI console](https://platform.moonshot.ai/console)، وأنشئ حسابا، ثم انقر **Create API key**.

2. شغّل الأمر `/connect` وابحث عن **Moonshot AI**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Moonshot.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار _Kimi K2_.

   ```txt
   /models
   ```

---

### MiniMax

1. توجّه إلى [MiniMax API Console](https://platform.minimax.io/login)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **MiniMax**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ MiniMax.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _M2.1_.

   ```txt
   /models
   ```

---

### Nebius Token Factory

1. توجّه إلى [Nebius Token Factory console](https://tokenfactory.nebius.com/)، وأنشئ حسابا، ثم انقر **Add Key**.

2. شغّل الأمر `/connect` وابحث عن **Nebius Token Factory**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Nebius Token Factory.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.

   ```txt
   /models
   ```

---

### Ollama

يمكنك ضبط opencode لاستخدام نماذج محلية عبر Ollama.

:::tip
يمكن لـ Ollama ضبط نفسه تلقائيا للعمل مع OpenCode. راجع [توثيق تكامل Ollama](https://docs.ollama.com/integrations/opencode) للتفاصيل.
:::

```json title="opencode.json" "ollama" {5, 6, 8, 10-14}
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      },
      "models": {
        "llama2": {
          "name": "Llama 2"
        }
      }
    }
  }
}
```

في هذا المثال:

- `ollama` هو ID مزوّد مخصّص. يمكن أن يكون أي سلسلة نصية تريدها.
- `npm` يحدد الحزمة المستخدمة لهذا المزوّد. هنا يتم استخدام `@ai-sdk/openai-compatible` لأي API متوافق مع OpenAI.
- `name` هو اسم العرض للمزوّد في واجهة المستخدم.
- `options.baseURL` هو نقطة نهاية الخادم المحلي.
- `models` هو خريطة من IDs النماذج إلى إعداداتها. سيتم عرض اسم النموذج ضمن قائمة اختيار النماذج.

:::tip
إذا لم تكن tool calls تعمل، جرّب زيادة `num_ctx` في Ollama. ابدأ بنحو 16k - 32k.
:::

---

### Ollama Cloud

لاستخدام Ollama Cloud مع OpenCode:

1. توجّه إلى [https://ollama.com/](https://ollama.com/) وسجّل الدخول أو أنشئ حسابا.

2. انتقل إلى **Settings** > **Keys** وانقر **Add API Key** لإنشاء مفتاح API جديد.

3. انسخ مفتاح API لاستخدامه في OpenCode.

4. شغّل الأمر `/connect` وابحث عن **Ollama Cloud**.

   ```txt
   /connect
   ```

5. أدخل مفتاح API الخاص بـ Ollama Cloud.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

6. **مهم**: قبل استخدام نماذج السحابة في OpenCode، يجب سحب معلومات النموذج محليا:

   ```bash
   ollama pull gpt-oss:20b-cloud
   ```

7. شغّل الأمر `/models` لاختيار نموذج Ollama Cloud.

   ```txt
   /models
   ```

---

### OpenAI

نوصي بالاشتراك في [ChatGPT Plus أو Pro](https://chatgpt.com/pricing).

1. بعد الاشتراك، شغّل الأمر `/connect` واختر OpenAI.

   ```txt
   /connect
   ```

2. هنا يمكنك اختيار خيار **ChatGPT Plus/Pro** وسيتم فتح المتصفح
   وسيطلب منك المصادقة.

   ```txt
   ┌ Select auth method
   │
   │ ChatGPT Plus/Pro
   │ Manually enter API Key
   └
   ```

3. الآن يجب أن تكون جميع نماذج OpenAI متاحة عند استخدام الأمر `/models`.

   ```txt
   /models
   ```

##### استخدام مفاتيح API

إذا كان لديك مفتاح API بالفعل، يمكنك اختيار **Manually enter API Key** ولصقه في terminal.

---

### OpenCode Zen

OpenCode Zen هي قائمة من النماذج التي تم اختبارها والتحقق منها مقدّمة من فريق OpenCode. [اعرف المزيد](/docs/zen).

1. سجّل الدخول إلى **<a href={console}>OpenCode Zen</a>** وانقر **Create API Key**.

2. شغّل الأمر `/connect` وابحث عن **OpenCode Zen**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ OpenCode.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Qwen 3 Coder 480B_.

   ```txt
   /models
   ```

---

### OpenRouter

1. توجّه إلى [OpenRouter dashboard](https://openrouter.ai/settings/keys)، وانقر **Create API Key**، ثم انسخ المفتاح.

2. شغّل الأمر `/connect` وابحث عن OpenRouter.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بالمزوّد.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. يتم تحميل العديد من نماذج OpenRouter مسبقا بشكل افتراضي؛ شغّل الأمر `/models` لاختيار ما تريده.

   ```txt
   /models
   ```

   يمكنك أيضا إضافة نماذج إضافية عبر إعدادات opencode.

   ```json title="opencode.json" {6}
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "openrouter": {
         "models": {
           "somecoolnewmodel": {}
         }
       }
     }
   }
   ```

5. يمكنك أيضا تخصيصها عبر إعدادات opencode. إليك مثالا على تحديد مزوّد

   ```json title="opencode.json"
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "openrouter": {
         "models": {
           "moonshotai/kimi-k2": {
             "options": {
               "provider": {
                 "order": ["baseten"],
                 "allow_fallbacks": false
               }
             }
           }
         }
       }
     }
   }
   ```

---

### SAP AI Core

يوفّر SAP AI Core وصولا إلى أكثر من 40 نموذجا من OpenAI وAnthropic وGoogle وAmazon وMeta وMistral وAI21 عبر منصة موحّدة.

1. اذهب إلى [SAP BTP Cockpit](https://account.hana.ondemand.com/)، وانتقل إلى مثيل خدمة SAP AI Core لديك، ثم أنشئ service key.

   :::tip
   service key هو كائن JSON يحتوي على `clientid` و`clientsecret` و`url` و`serviceurls.AI_API_URL`. يمكنك العثور على مثيل AI Core ضمن **Services** > **Instances and Subscriptions** في BTP Cockpit.
   :::

2. شغّل الأمر `/connect` وابحث عن **SAP AI Core**.

   ```txt
   /connect
   ```

3. أدخل JSON الخاص بـ service key.

   ```txt
   ┌ Service key
   │
   │
   └ enter
   ```

   أو عيّن متغير البيئة `AICORE_SERVICE_KEY`:

   ```bash
   AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode
   ```

   أو أضفه إلى bash profile:

   ```bash title="~/.bash_profile"
   export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
   ```

4. اختياريا، عيّن deployment ID وresource group:

   ```bash
   AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode
   ```

   :::note
   هذه الإعدادات اختيارية ويجب ضبطها وفقا لإعداد SAP AI Core لديك.
   :::

5. شغّل الأمر `/models` للاختيار من بين أكثر من 40 نموذجا متاحا.

   ```txt
   /models
   ```

---

### STACKIT

توفّر خدمة STACKIT AI Model Serving بيئة استضافة سيادية مُدارة بالكامل لنماذج الذكاء الاصطناعي، مع التركيز على نماذج LLM مثل Llama وMistral وQwen، مع أقصى درجات سيادة البيانات على بنية تحتية أوروبية.

1. توجّه إلى [STACKIT Portal](https://portal.stackit.cloud)، وانتقل إلى **AI Model Serving**، وأنشئ رمز مصادقة (auth token) لمشروعك.

   :::tip
   تحتاج إلى حساب عميل STACKIT وحساب مستخدم ومشروع قبل إنشاء رموز المصادقة.
   :::

2. شغّل الأمر `/connect` وابحث عن **STACKIT**.

   ```txt
   /connect
   ```

3. أدخل رمز مصادقة STACKIT AI Model Serving.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` للاختيار من النماذج المتاحة مثل _Qwen3-VL 235B_ أو _Llama 3.3 70B_.

   ```txt
   /models
   ```

---

### OVHcloud AI Endpoints

1. توجّه إلى [OVHcloud panel](https://ovh.com/manager). انتقل إلى قسم `Public Cloud`، ثم `AI & Machine Learning` > `AI Endpoints`، وفي تبويب `API Keys` انقر **Create a new API key**.

2. شغّل الأمر `/connect` وابحث عن **OVHcloud AI Endpoints**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ OVHcloud AI Endpoints.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _gpt-oss-120b_.

   ```txt
   /models
   ```

---

### Scaleway

لاستخدام [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/) مع Opencode:

1. توجّه إلى [Scaleway Console IAM settings](https://console.scaleway.com/iam/api-keys) لإنشاء مفتاح API جديد.

2. شغّل الأمر `/connect` وابحث عن **Scaleway**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Scaleway.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _devstral-2-123b-instruct-2512_ أو _gpt-oss-120b_.

   ```txt
   /models
   ```

---

### Together AI

1. توجّه إلى [Together AI console](https://api.together.ai)، وأنشئ حسابا، ثم انقر **Add Key**.

2. شغّل الأمر `/connect` وابحث عن **Together AI**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Together AI.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Kimi K2 Instruct_.

   ```txt
   /models
   ```

---

### Venice AI

1. توجّه إلى [Venice AI console](https://venice.ai)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **Venice AI**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Venice AI.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Llama 3.3 70B_.

   ```txt
   /models
   ```

---

### Vercel AI Gateway

تتيح Vercel AI Gateway الوصول إلى نماذج من OpenAI وAnthropic وGoogle وxAI وغيرها عبر نقطة نهاية موحّدة. تُقدّم النماذج بسعر القائمة دون أي زيادة.

1. توجّه إلى [Vercel dashboard](https://vercel.com/)، وانتقل إلى تبويب **AI Gateway**، ثم انقر **API keys** لإنشاء مفتاح API جديد.

2. شغّل الأمر `/connect` وابحث عن **Vercel AI Gateway**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ Vercel AI Gateway.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج.

   ```txt
   /models
   ```

يمكنك أيضا تخصيص النماذج عبر إعدادات opencode. إليك مثالا على تحديد ترتيب توجيه المزوّدات.

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "vercel": {
      "models": {
        "anthropic/claude-sonnet-4": {
          "options": {
            "order": ["anthropic", "vertex"]
          }
        }
      }
    }
  }
}
```

بعض خيارات التوجيه المفيدة:

| Option              | الوصف                                           |
| ------------------- | ----------------------------------------------- |
| `order`             | تسلسل المزوّدات التي سيتم تجربتها               |
| `only`              | تقييد الاستخدام على مزوّدات محددة               |
| `zeroDataRetention` | استخدام مزوّدات بسياسات احتفاظ بيانات صفرية فقط |

---

### xAI

1. توجّه إلى [xAI console](https://console.x.ai/)، وأنشئ حسابا، ثم أنشئ مفتاح API.

2. شغّل الأمر `/connect` وابحث عن **xAI**.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بـ xAI.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _Grok Beta_.

   ```txt
   /models
   ```

---

### Z.AI

1. توجّه إلى [Z.AI API console](https://z.ai/manage-apikey/apikey-list)، وأنشئ حسابا، ثم انقر **Create a new API key**.

2. شغّل الأمر `/connect` وابحث عن **Z.AI**.

   ```txt
   /connect
   ```

   إذا كنت مشتركا في **GLM Coding Plan**، فاختر **Z.AI Coding Plan**.

3. أدخل مفتاح API الخاص بـ Z.AI.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. شغّل الأمر `/models` لاختيار نموذج مثل _GLM-4.7_.

   ```txt
   /models
   ```

---

### ZenMux

1. توجّه إلى [ZenMux dashboard](https://zenmux.ai/settings/keys)، وانقر **Create API Key**، ثم انسخ المفتاح.

2. شغّل الأمر `/connect` وابحث عن ZenMux.

   ```txt
   /connect
   ```

3. أدخل مفتاح API الخاص بالمزوّد.

   ```txt
   ┌ API key
   │
   │
   └ enter
   ```

4. يتم تحميل العديد من نماذج ZenMux مسبقا بشكل افتراضي؛ شغّل الأمر `/models` لاختيار ما تريده.

   ```txt
   /models
   ```

   يمكنك أيضا إضافة نماذج إضافية عبر إعدادات opencode.

   ```json title="opencode.json" {6}
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "zenmux": {
         "models": {
           "somecoolnewmodel": {}
         }
       }
     }
   }
   ```

---

## موفّر مخصّص

لإضافة أي مزوّد **OpenAI-compatible** غير موجود ضمن الأمر `/connect`:

:::tip
يمكنك استخدام أي مزوّد OpenAI-compatible مع opencode. معظم مزوّدي الذكاء الاصطناعي الحديثة يقدّمون APIs متوافقة مع OpenAI.
:::

1. شغّل الأمر `/connect` ومرّر للأسفل حتى **Other**.

   ```bash
   $ /connect

   ┌  Add credential
   │
   ◆  Select provider
   │  ...
   │  ● Other
   └
   ```

2. أدخل ID فريدا للمزوّد.

   ```bash
   $ /connect

   ┌  Add credential
   │
   ◇  Enter provider id
   │  myprovider
   └
   ```

   :::note
   اختر ID سهل التذكر؛ ستستخدمه في ملف الإعدادات.
   :::

3. أدخل مفتاح API الخاص بالمزوّد.

   ```bash
   $ /connect

   ┌  Add credential
   │
   ▲  This only stores a credential for myprovider - you will need to configure it in opencode.json, check the docs for examples.
   │
   ◇  Enter your API key
   │  sk-...
   └
   ```

4. أنشئ أو حدّث ملف `opencode.json` في دليل مشروعك:

   ```json title="opencode.json" ""myprovider"" {5-15}
   {
     "$schema": "https://opencode.ai/config.json",
     "provider": {
       "myprovider": {
         "npm": "@ai-sdk/openai-compatible",
         "name": "My AI ProviderDisplay Name",
         "options": {
           "baseURL": "https://api.myprovider.com/v1"
         },
         "models": {
           "my-model-name": {
             "name": "My Model Display Name"
           }
         }
       }
     }
   }
   ```

   خيارات التهيئة هي:
   - **npm**: حزمة AI SDK المستخدمة؛ استخدم `@ai-sdk/openai-compatible` للمزوّدات OpenAI-compatible
   - **name**: اسم العرض في واجهة المستخدم.
   - **models**: النماذج المتاحة.
   - **options.baseURL**: عنوان URL لنقطة نهاية API.
   - **options.apiKey**: تعيين مفتاح API اختياريا إذا لم تكن تستخدم auth.
   - **options.headers**: تعيين ترويسات مخصّصة اختياريا.

   مزيد من التفاصيل حول الخيارات المتقدمة في المثال التالي.

5. شغّل الأمر `/models` وستظهر المزوّدات والنماذج المخصّصة في قائمة الاختيار.

---

##### مثال

إليك مثالا يضبط خيارات `apiKey` و`headers` وخيارات `limit` الخاصة بالنموذج.

```json title="opencode.json" {9,11,17-20}
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "myprovider": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "My AI ProviderDisplay Name",
      "options": {
        "baseURL": "https://api.myprovider.com/v1",
        "apiKey": "{env:ANTHROPIC_API_KEY}",
        "headers": {
          "Authorization": "Bearer custom-token"
        }
      },
      "models": {
        "my-model-name": {
          "name": "My Model Display Name",
          "limit": {
            "context": 200000,
            "output": 65536
          }
        }
      }
    }
  }
}
```

تفاصيل التهيئة:

- **apiKey**: يتم تعيينه عبر صيغة متغيرات `env`، [اعرف المزيد](/docs/config#env-vars).
- **headers**: ترويسات مخصّصة تُرسل مع كل طلب.
- **limit.context**: الحد الأقصى لرموز الإدخال التي يقبلها النموذج.
- **limit.output**: الحد الأقصى للرموز التي يمكن للنموذج توليدها.

تسمح حقول `limit` لـ OpenCode بفهم مقدار السياق المتبقي لديك. تسحب المزوّدات القياسية هذه القيم تلقائيا من models.dev.

---

## استكشاف الأخطاء وإصلاحها

إذا كنت تواجه مشكلة في تهيئة مزوّد، فتحقق مما يلي:

1. **تحقق من إعداد auth**: شغّل `opencode auth list` لمعرفة ما إذا كانت بيانات الاعتماد
   الخاصة بالمزوّد قد أضيفت إلى إعداداتك.

   لا ينطبق هذا على مزوّدات مثل Amazon Bedrock التي تعتمد على متغيرات البيئة لـ auth.

2. للمزوّدات المخصّصة، راجع إعدادات opencode وتأكد من:
   - أن provider ID المستخدم في الأمر `/connect` يطابق الـ ID في إعدادات opencode.
   - استخدام حزمة npm الصحيحة للمزوّد. على سبيل المثال استخدم `@ai-sdk/cerebras` لـ Cerebras. ولكل المزوّدات الأخرى المتوافقة مع OpenAI استخدم `@ai-sdk/openai-compatible`.
   - استخدام نقطة نهاية API الصحيحة في الحقل `options.baseURL`.
