chore: generate
This commit is contained in:
@@ -14,6 +14,7 @@ ACP بروتوكول مفتوح يوحّد آلية التواصل بين محر
|
||||
---
|
||||
|
||||
## الإعداد
|
||||
|
||||
لاستخدام OpenCode عبر ACP، اضبط محررك ليشغّل الأمر `opencode acp`.
|
||||
|
||||
يشغّل هذا الأمر OpenCode كعملية فرعية متوافقة مع ACP تتواصل مع محررك عبر JSON-RPC باستخدام stdio.
|
||||
@@ -140,6 +141,7 @@ require("codecompanion").setup({
|
||||
إذا احتجت إلى تمرير متغيرات البيئة (مثل `OPENCODE_API_KEY`)، فارجع إلى [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) ضمن توثيق CodeCompanion.nvim للاطلاع على التفاصيل كاملة.
|
||||
|
||||
## الدعم
|
||||
|
||||
يعمل OpenCode عبر ACP بالطريقة نفسها التي يعمل بها في الطرفية. جميع الميزات مدعومة:
|
||||
|
||||
:::note
|
||||
|
||||
@@ -8,11 +8,13 @@ description: أنشئ أدوات يمكن لـ LLM استدعاؤها في openc
|
||||
---
|
||||
|
||||
## إنشاء أداة
|
||||
|
||||
تُعرّف الأدوات كملفات **TypeScript** أو **JavaScript**. لكن تعريف الأداة يمكنه استدعاء سكربتات مكتوبة **بأي لغة** — إذ تُستخدم TypeScript أو JavaScript فقط لتعريف الأداة نفسه.
|
||||
|
||||
---
|
||||
|
||||
### الموقع
|
||||
|
||||
يمكن تعريفها:
|
||||
|
||||
- محليا بوضعها في مجلد `.opencode/tools/` داخل مشروعك.
|
||||
@@ -21,6 +23,7 @@ description: أنشئ أدوات يمكن لـ LLM استدعاؤها في openc
|
||||
---
|
||||
|
||||
### البنية
|
||||
|
||||
أسهل طريقة لإنشاء أدوات هي استخدام المساعد `tool()` الذي يوفر أمان الأنواع والتحقق.
|
||||
|
||||
```ts title=".opencode/tools/database.ts" {1}
|
||||
@@ -43,6 +46,7 @@ export default tool({
|
||||
---
|
||||
|
||||
#### عدة أدوات في ملف واحد
|
||||
|
||||
يمكنك أيضا تصدير عدة أدوات من ملف واحد. يصبح كل تصدير **أداة مستقلة** باسم **`<filename>_<exportname>`**:
|
||||
|
||||
```ts title=".opencode/tools/math.ts"
|
||||
@@ -76,6 +80,7 @@ export const multiply = tool({
|
||||
---
|
||||
|
||||
### الوسائط
|
||||
|
||||
يمكنك استخدام `tool.schema`، وهو في الأساس [Zod](https://zod.dev)، لتعريف أنواع الوسائط.
|
||||
|
||||
```ts "tool.schema"
|
||||
@@ -104,6 +109,7 @@ export default {
|
||||
---
|
||||
|
||||
### السياق
|
||||
|
||||
تستقبل الأدوات سياقا حول الجلسة الحالية:
|
||||
|
||||
```ts title=".opencode/tools/project.ts" {8}
|
||||
@@ -126,7 +132,9 @@ export default tool({
|
||||
---
|
||||
|
||||
## أمثلة
|
||||
|
||||
### كتابة أداة بلغة Python
|
||||
|
||||
يمكنك كتابة أدواتك بأي لغة تريدها. إليك مثالا يجمع رقمين باستخدام Python.
|
||||
|
||||
أولا، أنشئ الأداة كسكربت Python:
|
||||
|
||||
@@ -14,6 +14,7 @@ description: مشاريع وتكاملات مبنية باستخدام OpenCode.
|
||||
---
|
||||
|
||||
## الإضافات
|
||||
|
||||
| الاسم | الوصف |
|
||||
| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | تشغيل جلسات OpenCode تلقائيا داخل بيئات Daytona معزولة مع مزامنة git ومعاينات حية |
|
||||
@@ -50,6 +51,7 @@ description: مشاريع وتكاملات مبنية باستخدام OpenCode.
|
||||
---
|
||||
|
||||
## المشاريع
|
||||
|
||||
| الاسم | الوصف |
|
||||
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
|
||||
| [kimaki](https://github.com/remorses/kimaki) | بوت Discord للتحكم بجلسات OpenCode، مبني على SDK |
|
||||
@@ -67,6 +69,7 @@ description: مشاريع وتكاملات مبنية باستخدام OpenCode.
|
||||
---
|
||||
|
||||
## الوكلاء
|
||||
|
||||
| الاسم | الوصف |
|
||||
| ----------------------------------------------------------------- | --------------------------------------------- |
|
||||
| [Agentic](https://github.com/Cluster444/agentic) | وكلاء وأوامر ذكاء اصطناعي معيارية لتطوير منظم |
|
||||
|
||||
@@ -11,32 +11,32 @@ description: يستخدم OpenCode مُنسِّقات خاصة بكل لغة.
|
||||
|
||||
يأتي OpenCode مع عدة مُنسِّقات مُضمَّنة للغات وأطر العمل الشائعة. فيما يلي قائمة بالمُنسِّقات وامتدادات الملفات المدعومة والأوامر أو خيارات الإعداد التي تحتاجها.
|
||||
|
||||
| المُنسِّق | الامتدادات | المتطلبات |
|
||||
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| gofmt | .go | يتوفر أمر `gofmt` |
|
||||
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | يتوفر أمر `mix` |
|
||||
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml، و[غير ذلك](https://prettier.io/docs/en/index.html) | وجود اعتماد `prettier` في `package.json` |
|
||||
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml، و[غير ذلك](https://biomejs.dev/) | ملف إعداد `biome.json(c)` |
|
||||
| zig | .zig, .zon | يتوفر أمر `zig` |
|
||||
| clang-format | .c, .cpp, .h, .hpp, .ino، و[غير ذلك](https://clang.llvm.org/docs/ClangFormat.html) | ملف إعداد `.clang-format` |
|
||||
| ktlint | .kt, .kts | يتوفر أمر `ktlint` |
|
||||
| ruff | .py, .pyi | يتوفر أمر `ruff` مع إعداد |
|
||||
| rustfmt | .rs | يتوفر أمر `rustfmt` |
|
||||
| cargofmt | .rs | يتوفر أمر `cargo fmt` |
|
||||
| uv | .py, .pyi | يتوفر أمر `uv` |
|
||||
| rubocop | .rb, .rake, .gemspec, .ru | يتوفر أمر `rubocop` |
|
||||
| standardrb | .rb, .rake, .gemspec, .ru | يتوفر أمر `standardrb` |
|
||||
| htmlbeautifier | .erb, .html.erb | يتوفر أمر `htmlbeautifier` |
|
||||
| air | .R | يتوفر أمر `air` |
|
||||
| dart | .dart | يتوفر أمر `dart` |
|
||||
| ocamlformat | .ml, .mli | يتوفر أمر `ocamlformat` وملف إعداد `.ocamlformat` |
|
||||
| terraform | .tf, .tfvars | يتوفر أمر `terraform` |
|
||||
| gleam | .gleam | يتوفر أمر `gleam` |
|
||||
| nixfmt | .nix | يتوفر أمر `nixfmt` |
|
||||
| shfmt | .sh, .bash | يتوفر أمر `shfmt` |
|
||||
| pint | .php | وجود اعتماد `laravel/pint` في `composer.json` |
|
||||
| المُنسِّق | الامتدادات | المتطلبات |
|
||||
| -------------------- | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
||||
| gofmt | .go | يتوفر أمر `gofmt` |
|
||||
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | يتوفر أمر `mix` |
|
||||
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml، و[غير ذلك](https://prettier.io/docs/en/index.html) | وجود اعتماد `prettier` في `package.json` |
|
||||
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml، و[غير ذلك](https://biomejs.dev/) | ملف إعداد `biome.json(c)` |
|
||||
| zig | .zig, .zon | يتوفر أمر `zig` |
|
||||
| clang-format | .c, .cpp, .h, .hpp, .ino، و[غير ذلك](https://clang.llvm.org/docs/ClangFormat.html) | ملف إعداد `.clang-format` |
|
||||
| ktlint | .kt, .kts | يتوفر أمر `ktlint` |
|
||||
| ruff | .py, .pyi | يتوفر أمر `ruff` مع إعداد |
|
||||
| rustfmt | .rs | يتوفر أمر `rustfmt` |
|
||||
| cargofmt | .rs | يتوفر أمر `cargo fmt` |
|
||||
| uv | .py, .pyi | يتوفر أمر `uv` |
|
||||
| rubocop | .rb, .rake, .gemspec, .ru | يتوفر أمر `rubocop` |
|
||||
| standardrb | .rb, .rake, .gemspec, .ru | يتوفر أمر `standardrb` |
|
||||
| htmlbeautifier | .erb, .html.erb | يتوفر أمر `htmlbeautifier` |
|
||||
| air | .R | يتوفر أمر `air` |
|
||||
| dart | .dart | يتوفر أمر `dart` |
|
||||
| ocamlformat | .ml, .mli | يتوفر أمر `ocamlformat` وملف إعداد `.ocamlformat` |
|
||||
| terraform | .tf, .tfvars | يتوفر أمر `terraform` |
|
||||
| gleam | .gleam | يتوفر أمر `gleam` |
|
||||
| nixfmt | .nix | يتوفر أمر `nixfmt` |
|
||||
| shfmt | .sh, .bash | يتوفر أمر `shfmt` |
|
||||
| pint | .php | وجود اعتماد `laravel/pint` في `composer.json` |
|
||||
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | وجود اعتماد `oxfmt` في `package.json` و[علم متغير بيئة تجريبي](/docs/cli/#experimental) |
|
||||
| ormolu | .hs | يتوفر أمر `ormolu` |
|
||||
| ormolu | .hs | يتوفر أمر `ormolu` |
|
||||
|
||||
لذا إذا كان مشروعك يتضمن `prettier` ضمن `package.json`، فسيستخدمه OpenCode تلقائيا.
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ description: أضف أدوات MCP محلية وبعيدة.
|
||||
---
|
||||
|
||||
#### تنبيهات
|
||||
|
||||
عند استخدام خادم MCP فإنه يضيف إلى السياق. وقد يتراكم ذلك بسرعة إذا كان لديك الكثير من الأدوات. لذلك نوصي بالتحلّي بالحذر عند اختيار خوادم MCP التي تستخدمها.
|
||||
|
||||
:::tip
|
||||
@@ -21,6 +22,7 @@ description: أضف أدوات MCP محلية وبعيدة.
|
||||
---
|
||||
|
||||
## التمكين
|
||||
|
||||
يمكنك تعريف خوادم MCP في [إعدادات OpenCode](https://opencode.ai/docs/config/) ضمن `mcp`. أضف كل خادم MCP باسم فريد. ويمكنك الإشارة إلى ذلك الخادم بالاسم عند توجيه الطلب إلى الـ LLM.
|
||||
|
||||
```jsonc title="opencode.jsonc" {6}
|
||||
@@ -43,6 +45,7 @@ description: أضف أدوات MCP محلية وبعيدة.
|
||||
---
|
||||
|
||||
### تجاوز القيم الافتراضية البعيدة
|
||||
|
||||
يمكن للمنظمات توفير خوادم MCP الافتراضية عبر نقطة النهاية `.well-known/opencode` الخاصة بها. قد تكون هذه الخوادم معطّلة افتراضيا، مما يتيح للمستخدمين تفعيل ما يحتاجونه فقط.
|
||||
|
||||
لتفعيل خادم معيّن من الإعدادات البعيدة الخاصة بمؤسستك، أضفه إلى إعداداتك المحلية مع `enabled: true`:
|
||||
@@ -65,6 +68,7 @@ description: أضف أدوات MCP محلية وبعيدة.
|
||||
---
|
||||
|
||||
## محلي
|
||||
|
||||
أضف خوادم MCP المحلية عبر ضبط `type` على `"local"` ضمن كائن `mcp`.
|
||||
|
||||
```jsonc title="opencode.jsonc" {15}
|
||||
@@ -109,6 +113,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
#### الخيارات
|
||||
|
||||
فيما يلي جميع الخيارات المتاحة لتهيئة خادم MCP محلي.
|
||||
|
||||
| الخيار | النوع | مطلوب | الوصف |
|
||||
@@ -122,6 +127,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
## بعيد
|
||||
|
||||
أضف خوادم MCP البعيدة عبر ضبط `type` على `"remote"`.
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -145,6 +151,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
#### الخيارات
|
||||
|
||||
| الخيار | النوع | مطلوب | الوصف |
|
||||
| --------- | ------- | ----- | -------------------------------------------------------------------------------- |
|
||||
| `type` | String | Y | نوع اتصال خادم MCP، ويجب أن يكون `"remote"`. |
|
||||
@@ -157,6 +164,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
## OAuth
|
||||
|
||||
يتولى OpenCode تلقائيا معالجة مصادقة OAuth لخوادم MCP البعيدة. عندما يتطلب خادم ما المصادقة، سيقوم OpenCode بما يلي:
|
||||
|
||||
1. اكتشاف استجابة 401 وبدء تدفق OAuth
|
||||
@@ -166,6 +174,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
### تلقائي
|
||||
|
||||
بالنسبة لمعظم خوادم MCP التي تدعم OAuth، لا تحتاج إلى إعدادات خاصة. ما عليك سوى تهيئة الخادم البعيد:
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -185,6 +194,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
### مُسجَّل مسبقا
|
||||
|
||||
إذا كانت لديك بيانات اعتماد العميل من موفّر خادم MCP، يمكنك تهيئتها:
|
||||
|
||||
```json title="opencode.json" {7-11}
|
||||
@@ -207,6 +217,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
---
|
||||
|
||||
### المصادقة
|
||||
|
||||
يمكنك تشغيل المصادقة يدويا أو إدارة بيانات الاعتماد.
|
||||
|
||||
صادِق مع خادم MCP معيّن:
|
||||
@@ -232,6 +243,7 @@ opencode mcp logout my-oauth-server
|
||||
---
|
||||
|
||||
#### تعطيل OAuth
|
||||
|
||||
إذا أردت تعطيل OAuth التلقائي لخادم ما (على سبيل المثال، للخوادم التي تستخدم مفاتيح API بدلا من ذلك)، فاضبط `oauth` على `false`:
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
@@ -253,6 +265,7 @@ opencode mcp logout my-oauth-server
|
||||
---
|
||||
|
||||
#### خيارات OAuth
|
||||
|
||||
| الخيار | النوع | الوصف |
|
||||
| -------------- | --------------- | ------------------------------------------------------------------------ |
|
||||
| `oauth` | Object \| false | كائن إعدادات OAuth، أو `false` لتعطيل الاكتشاف التلقائي لـ OAuth. |
|
||||
@@ -261,6 +274,7 @@ opencode mcp logout my-oauth-server
|
||||
| `scope` | String | نطاقات OAuth المطلوبة أثناء التفويض. |
|
||||
|
||||
#### تصحيح الأخطاء
|
||||
|
||||
إذا فشل خادم MCP بعيد في المصادقة، يمكنك تشخيص المشكلة باستخدام:
|
||||
|
||||
```bash
|
||||
@@ -276,11 +290,13 @@ opencode mcp debug my-oauth-server
|
||||
---
|
||||
|
||||
## الإدارة
|
||||
|
||||
تتوفر خوادم MCP لديك كأدوات داخل OpenCode إلى جانب الأدوات المضمنة. لذا يمكنك إدارتها عبر إعدادات OpenCode مثل أي أداة أخرى.
|
||||
|
||||
---
|
||||
|
||||
### عام
|
||||
|
||||
هذا يعني أنه يمكنك تفعيلها أو تعطيلها على مستوى عام.
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
@@ -328,6 +344,7 @@ opencode mcp debug my-oauth-server
|
||||
---
|
||||
|
||||
### لكل وكيل
|
||||
|
||||
إذا كان لديك عدد كبير من خوادم MCP فقد ترغب في تفعيلها لكل وكيل على حدة وتعطيلها على المستوى العام. للقيام بذلك:
|
||||
|
||||
1. عطّلها كأداة على المستوى العام.
|
||||
@@ -359,6 +376,7 @@ opencode mcp debug my-oauth-server
|
||||
---
|
||||
|
||||
#### أنماط Glob
|
||||
|
||||
يستخدم نمط glob أنماطا بسيطة من مطابقة glob:
|
||||
|
||||
- `*` يطابق صفرا أو أكثر من أي محرف (على سبيل المثال، `"my-mcp*"` يطابق `my-mcp_search` و`my-mcp_list` وغيرها.)
|
||||
@@ -377,6 +395,7 @@ opencode mcp debug my-oauth-server
|
||||
---
|
||||
|
||||
## أمثلة
|
||||
|
||||
فيما يلي أمثلة لبعض خوادم MCP الشائعة. يمكنك إرسال PR إذا أردت توثيق خوادم أخرى.
|
||||
|
||||
---
|
||||
|
||||
@@ -10,6 +10,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## الإجراءات
|
||||
|
||||
يؤول كل حكم أذونات إلى إحدى القيم التالية:
|
||||
|
||||
- `"allow"` — تشغيل دون موافقة
|
||||
@@ -19,6 +20,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## الإعداد
|
||||
|
||||
يمكنك تعيين الأذونات بشكل عام (باستخدام `*`) ثم تجاوزها لأدوات محددة.
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -44,6 +46,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## قواعد دقيقة (صيغة الكائن)
|
||||
|
||||
في معظم الأذونات، يمكنك استخدام كائن لتطبيق إجراءات مختلفة بناءً على مُدخلات الأداة.
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -68,6 +71,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
تُقيَّم القواعد عبر مطابقة الأنماط، مع كون **آخر قاعدة مطابقة هي التي تُطبَّق**. من الشائع وضع قاعدة الشمول `"*"` أولًا ثم القواعد الأكثر تحديدًا بعدها.
|
||||
|
||||
### أحرف البدل
|
||||
|
||||
تستخدم أنماط الأذونات مطابقة بسيطة لأحرف البدل:
|
||||
|
||||
- `*` يطابق صفرًا أو أكثر من أي حرف
|
||||
@@ -75,6 +79,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
- جميع الأحرف الأخرى تُطابق حرفيًا
|
||||
|
||||
### توسيع مجلد المنزل
|
||||
|
||||
يمكنك استخدام `~` أو `$HOME` في بداية النمط للإشارة إلى مجلد المنزل. هذا مفيد خصوصًا لقواعد [`external_directory`](#external-directories).
|
||||
|
||||
- `~/projects/*` -> `/Users/username/projects/*`
|
||||
@@ -82,6 +87,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
- `~` -> `/Users/username`
|
||||
|
||||
### الأدلة الخارجية
|
||||
|
||||
استخدم `external_directory` للسماح باستدعاءات الأدوات التي تلمس مسارات خارج دليل العمل الذي بدأ منه OpenCode. ينطبق ذلك على أي أداة تأخذ مسارًا كمدخل (مثل `read` و`edit` و`list` و`glob` و`grep` والعديد من أوامر `bash`).
|
||||
|
||||
توسيع المنزل (مثل `~/...`) يؤثر فقط على طريقة كتابة النمط. لا يجعل ذلك المسار الخارجي جزءًا من مساحة العمل الحالية، لذا يجب السماح بالمسارات خارج دليل العمل عبر `external_directory` أيضًا.
|
||||
@@ -120,6 +126,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## الأذونات المتاحة
|
||||
|
||||
تُعرَّف أذونات OpenCode بأسماء الأدوات، بالإضافة إلى بعض حواجز الأمان:
|
||||
|
||||
- `read` — قراءة ملف (يطابق مسار الملف)
|
||||
@@ -140,6 +147,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## القيم الافتراضية
|
||||
|
||||
إذا لم تحدد شيئًا، يبدأ OpenCode بقيم افتراضية متساهلة:
|
||||
|
||||
- معظم الأذونات افتراضيًا تكون `"allow"`.
|
||||
@@ -162,6 +170,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## ماذا تفعل `"ask"`
|
||||
|
||||
عندما يطلب OpenCode الموافقة، تعرض الواجهة ثلاث نتائج ممكنة:
|
||||
|
||||
- `once` — الموافقة على هذا الطلب فقط
|
||||
@@ -173,6 +182,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
|
||||
---
|
||||
|
||||
## الوكلاء
|
||||
|
||||
يمكنك تجاوز الأذونات لكل وكيل. تُدمَج أذونات الوكلاء مع الإعداد العام، وتكون قواعد الوكيل هي ذات الأولوية. [تعرّف أكثر](/docs/agents#permissions) على أذونات الوكلاء.
|
||||
|
||||
:::note
|
||||
|
||||
@@ -16,17 +16,20 @@ export const console = config.console
|
||||
---
|
||||
|
||||
### بيانات الاعتماد
|
||||
|
||||
عند إضافة مفاتيح API الخاصة بمزوّد عبر الأمر `/connect`، يتم تخزينها
|
||||
في `~/.local/share/opencode/auth.json`.
|
||||
|
||||
---
|
||||
|
||||
### الإعدادات
|
||||
|
||||
يمكنك تخصيص المزوّدات عبر قسم `provider` في ملف إعدادات OpenCode.
|
||||
|
||||
---
|
||||
|
||||
#### عنوان URL الأساسي
|
||||
|
||||
يمكنك تخصيص عنوان URL الأساسي لأي مزوّد عبر خيار `baseURL`. يفيد ذلك عند استخدام خدمات وسيطة (proxy) أو نقاط نهاية مخصّصة.
|
||||
|
||||
```json title="opencode.json" {6}
|
||||
@@ -81,6 +84,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
---
|
||||
|
||||
## الدليل
|
||||
|
||||
لنلقِ نظرة على بعض المزوّدات بالتفصيل. إذا رغبت في إضافة مزوّد إلى القائمة،
|
||||
فلا تتردد في فتح PR.
|
||||
|
||||
@@ -131,6 +135,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
2. **اضبط المصادقة** باستخدام إحدى الطرق التالية:
|
||||
|
||||
#### متغيرات البيئة (بدء سريع)
|
||||
|
||||
عيّن أحد متغيرات البيئة التالية أثناء تشغيل opencode:
|
||||
|
||||
```bash
|
||||
@@ -152,6 +157,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
```
|
||||
|
||||
#### ملف الإعدادات (موصى به)
|
||||
|
||||
للإعداد الخاص بالمشروع أو الإعداد الدائم، استخدم `opencode.json`:
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -178,6 +184,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
:::
|
||||
|
||||
#### متقدم: نقاط نهاية VPC
|
||||
|
||||
إذا كنت تستخدم نقاط نهاية VPC لـ Bedrock:
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -199,12 +206,13 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
خيار `endpoint` هو اسم بديل لخيار `baseURL` العام باستخدام مصطلحات AWS. إذا تم تحديد كل من `endpoint` و`baseURL`، فستكون الأولوية لـ `endpoint`.
|
||||
:::
|
||||
|
||||
#### طرق المصادقة - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: أنشئ مستخدم IAM وأنشئ مفاتيح وصول من AWS Console
|
||||
#### طرق المصادقة - **`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)، بيانات تعريف المثيل
|
||||
@@ -273,6 +281,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
:::
|
||||
|
||||
##### استخدام مفاتيح API
|
||||
|
||||
يمكنك أيضا اختيار **Create an API Key** إذا لم يكن لديك اشتراك Pro/Max. سيفتح ذلك المتصفح أيضا ويطلب منك تسجيل الدخول إلى Anthropic ويعطيك رمزا يمكنك لصقه في الطرفية.
|
||||
|
||||
أو إذا كان لديك مفتاح API بالفعل، يمكنك اختيار **Manually enter API Key** ولصقه في الطرفية.
|
||||
@@ -645,9 +654,10 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
```
|
||||
|
||||
#### استخدام OAuth (موصى به)
|
||||
|
||||
اختر **OAuth** وسيفتح المتصفح لإتمام التفويض.
|
||||
|
||||
#### استخدام Personal Access Token 1. اذهب إلى [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens)
|
||||
#### استخدام 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-`)
|
||||
@@ -670,6 +680,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
:::
|
||||
|
||||
##### GitLab مستضاف ذاتيا
|
||||
|
||||
:::note[ملاحظة امتثال]
|
||||
يستخدم OpenCode نموذجا صغيرا لبعض مهام الذكاء الاصطناعي مثل إنشاء عنوان الجلسة.
|
||||
تم ضبطه لاستخدام gpt-5-nano افتراضيا، مستضافا عبر Zen. لحصر OpenCode
|
||||
@@ -717,6 +728,7 @@ export GITLAB_TOKEN=glpat-...
|
||||
:::
|
||||
|
||||
##### OAuth للمثيلات المستضافة ذاتيا
|
||||
|
||||
لكي يعمل Oauth مع مثيلك المستضاف ذاتيا، تحتاج إلى إنشاء
|
||||
تطبيق جديد (Settings → Applications) مع
|
||||
callback URL `http://127.0.0.1:8080/callback` ونطاقات الصلاحيات التالية:
|
||||
@@ -734,6 +746,7 @@ export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
|
||||
مزيد من التوثيق على صفحة [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth).
|
||||
|
||||
##### التهيئة
|
||||
|
||||
خصّص عبر `opencode.json`:
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -754,6 +767,7 @@ export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
|
||||
```
|
||||
|
||||
##### أدوات GitLab API (اختياري، لكن موصى به بشدة)
|
||||
|
||||
للوصول إلى أدوات GitLab (merge requests وissues وpipelines وCI/CD وغيرها):
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -933,6 +947,7 @@ export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
|
||||
لمزيد من المزوّدات والميزات المتقدمة مثل التخزين المؤقت (caching) وتحديد المعدّل (rate limiting)، راجع [توثيق Helicone](https://docs.helicone.ai).
|
||||
|
||||
#### إعدادات اختيارية
|
||||
|
||||
إذا رأيت ميزة أو نموذجا في Helicone لم يتم ضبطه تلقائيا عبر opencode، فيمكنك دائما ضبطه بنفسك.
|
||||
|
||||
هذه هي [Helicone's Model Directory](https://helicone.ai/models)، وستحتاجها للحصول على IDs الخاصة بالنماذج التي تريد إضافتها.
|
||||
@@ -962,6 +977,7 @@ export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
|
||||
```
|
||||
|
||||
#### ترويسات مخصّصة
|
||||
|
||||
تدعم Helicone ترويسات مخصّصة لميزات مثل التخزين المؤقت وتتبع المستخدم وإدارة الجلسات. أضفها إلى إعداد المزوّد عبر `options.headers`:
|
||||
|
||||
```jsonc title="~/.config/opencode/opencode.jsonc"
|
||||
@@ -984,6 +1000,7 @@ export GITLAB_OAUTH_CLIENT_ID=your_application_id_here
|
||||
```
|
||||
|
||||
##### تتبع الجلسات
|
||||
|
||||
تتيح ميزة [Sessions](https://docs.helicone.ai/features/sessions) في Helicone تجميع طلبات LLM المرتبطة معا. استخدم ملحق [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) لتسجيل كل محادثة OpenCode تلقائيا كجلسة في Helicone.
|
||||
|
||||
```bash
|
||||
@@ -1001,6 +1018,7 @@ npm install -g opencode-helicone-session
|
||||
يقوم الملحق بحقن ترويسات `Helicone-Session-Id` و`Helicone-Session-Name` ضمن طلباتك. في صفحة Sessions داخل Helicone، سترى كل محادثة OpenCode مدرجة كجلسة مستقلة.
|
||||
|
||||
##### ترويسات Helicone الشائعة
|
||||
|
||||
| Header | الوصف |
|
||||
| -------------------------- | -------------------------------------------------------- |
|
||||
| `Helicone-Cache-Enabled` | تفعيل التخزين المؤقت للاستجابات (`true`/`false`) |
|
||||
@@ -1305,6 +1323,7 @@ npm install -g opencode-helicone-session
|
||||
```
|
||||
|
||||
##### استخدام مفاتيح API
|
||||
|
||||
إذا كان لديك مفتاح API بالفعل، يمكنك اختيار **Manually enter API Key** ولصقه في الطرفية.
|
||||
|
||||
---
|
||||
@@ -1722,6 +1741,7 @@ OpenCode Zen هي قائمة من النماذج التي تم اختبارها
|
||||
---
|
||||
|
||||
## موفّر مخصّص
|
||||
|
||||
لإضافة أي مزوّد **OpenAI-compatible** غير موجود ضمن الأمر `/connect`:
|
||||
|
||||
:::tip
|
||||
@@ -1808,6 +1828,7 @@ OpenCode Zen هي قائمة من النماذج التي تم اختبارها
|
||||
---
|
||||
|
||||
##### مثال
|
||||
|
||||
إليك مثالا يضبط خيارات `apiKey` و`headers` وخيارات `limit` الخاصة بالنموذج.
|
||||
|
||||
```json title="opencode.json" {9,11,17-20}
|
||||
@@ -1850,6 +1871,7 @@ OpenCode Zen هي قائمة من النماذج التي تم اختبارها
|
||||
---
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
إذا كنت تواجه مشكلة في تهيئة مزوّد، فتحقق مما يلي:
|
||||
|
||||
1. **تحقق من إعداد auth**: شغّل `opencode auth list` لمعرفة ما إذا كانت بيانات الاعتماد
|
||||
|
||||
@@ -284,6 +284,7 @@ How is auth handled in @packages/functions/src/api/index.ts?
|
||||
---
|
||||
|
||||
## إعداد المحرر
|
||||
|
||||
يستخدم الأمران `/editor` و`/export` المحرر المحدد في متغير البيئة `EDITOR`.
|
||||
|
||||
<Tabs>
|
||||
|
||||
Reference in New Issue
Block a user