أقسام قاعدة المعرفة ▾

التنقل

▸ ابدأ من هنا حسب الدور

الفئات

أدوات 52
قاموس المصطلحات 12

الأدوات

omp (Oh My Pi) + JoinGonka Gateway: وكيل بأدوار النماذج

omp (Oh My Pi) — هو وكيل برمجي طرفي (terminal coding-agent)، نسخة معدلة من Pi البسيط، تمت إضافة كل ما كان ينقصه للعمل على نطاق واسع: خوادم لغوية (LSP) عند كل حفظ للملف، إدارة مصحح أخطاء حقيقي، وكلاء فرعيون في نسخ عمل معزولة، وخلايا Python و JavaScript دائمة. النواة مكتوبة بلغة Rust، ويعمل نفس الملف الثنائي على macOS و Linux و Windows.

يتم وصف الموفرين في omp بشكل تقريري: أي نقطة نهاية تتحدث لغة OpenAI Chat Completions يتم إضافتها ببضعة أسطر في ~/.omp/agent/models.yml. JoinGonka Gateway هو بالضبط كذلك، لذا فإن التوصيل يقتصر على أمر تثبيت واحد أو ملفي YAML قصيرين. بعد ذلك، يعمل الوكيل على نماذج شبكة Gonka اللامركزية — DeepSeek V4 Flash و GLM-5.3 Flash و MiniMax M2.7 — بسعر موحد: $0.0069 لكل مليون رمز إدخال (token).

الفرق الرئيسي بين omp والأصل هو أدوار النماذج: يمكن إسناد الحركات العادية، والتحليل العميق، ووضع التخطيط، والأشياء الصغيرة في الخلفية لنماذج مختلفة وتأمينها بسلسلة من الاحتياطيات. أدناه — المسار السريع، الإعداد اليدوي، جدول "أي نموذج لأي دور" وتحليل الأخطاء. تم التحقق من الأوامر والرسائل من خلال تشغيل حي لـ omp 18.2.8 عبر البوابة في 21 سبتمبر 2026. بعد تأكيد العنوان، سيصل إلى الحساب 3M رمز مجاني — وهي كافية لتكرار كل هذا بنفسك.

البدء السريع: التثبيت وأمر واحد

الخطوة 1: تثبيت omp. الطرق الرسمية من README المشروع:

# macOS and Linux
curl -fsSL https://omp.sh/install | sh

# Homebrew
brew install can1357/tap/omp

# via Bun (requires Bun 1.3.14 or newer)
bun install -g @oh-my-pi/pi-coding-agent

# Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex

الخطوة 2: الحصول على مفتاح. سجّل في gate.joingonka.ai/register، أكّد عنوانك، وأنشئ مفتاحاً بالبادئة jg- في قسم «مفاتيح API». مفتاح واحد ورصيد واحد يعملان مع جميع نماذج الشبكة.

الخطوة 3: تشغيل المثبّت.

npx @joingonka/setup --tool omp

سيسألك المثبّت عن المفتاح — لا يُمرَّر المفتاح عبر وسائط سطر الأوامر حتى لا يبقى في سجل الصدفة — وسيقوم بأربعة أمور:

  • سيكتب المزوّد joingonka في ~/.omp/agent/models.yml: عنوان البوابة، البروتوكول openai-completions، المفتاح كنص صريح، وثلاثة نماذج للشبكة بنوافذ سياق حقيقية وحدود استجابة فعلية؛ وسيحصل الملف على صلاحيات 600؛
  • سيضبط النموذج الافتراضي — modelRoles.default في ~/.omp/agent/config.yml — على DeepSeek V4 Flash، لكن فقط إذا كان الدور فارغاً أو يشير إلى نموذج غادر الشبكة: فهو لا يتجاوز اختيارك، بل يرشدك إلى كيفية التبديل؛
  • سيأخذ نسخة احتياطية من الملف السابق قبل الكتابة، ويترك بقية المزوّدين والأدوار والتعليقات كما هي؛
  • في النهاية سيرسل طلباً حياً إلى البوابة وسيخبرك مباشرةً ما إذا قُبل المفتاح والعنوان والنموذج.

لتحديد نموذج افتراضي آخر، استخدم العلم --model مع الاختصار deepseek أو glm أو minimax — النموذج المحدَّد صراحةً يُكتب دائماً. لملفات الإعدادات والخوادم هناك وضع بلا أسئلة، يُؤخذ فيه المفتاح من متغير بيئة:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool omp --model glm --non-interactive

يتعامل المثبّت تلقائياً مع المواقع غير القياسية للإعدادات: ملف تعريف مسمّى (OMP_PROFILE) ودليل وكيل منقول (PI_CODING_AGENT_DIR). ينقل models.json القديم إلى models.yml تماماً كما يفعل omp نفسه — فلن تضيع المزوّدات السابقة. وإذا وُجد بجانبه settings.json قديم بدون config.yml، فلن ينشئ المثبّت config.yml حتى لا يتخطى omp نقل إعداداته الخاص: سيطلب منك تشغيل omp مرة واحدة وإعادة الأمر.

الإعداد اليدوي: ملفا YAML

كل ما يفعله المُثبِّت يمكن كتابته يدويًا. هناك ملفان فقط، ولكل منهما مهمته: models.yml يصف المزوّدين والنماذج، وconfig.yml يحتفظ بالإعدادات — بما في ذلك أي نموذج يشغل أي دور.

# ~/.omp/agent/models.yml
providers:
  joingonka:
    baseUrl: https://gate.joingonka.ai/v1
    api: openai-completions
    apiKey: jg-your-key
    models:
      - id: deepseek-ai/DeepSeek-V4-Flash-0731
        name: DeepSeek V4 Flash (Gonka)
        input: [text]
        contextWindow: 380000
        maxTokens: 32768
        reasoning: true
      - id: zai-org/GLM-5.3-Flash
        name: GLM-5.3 Flash (Gonka)
        input: [text]
        contextWindow: 390000
        maxTokens: 8192
        reasoning: true
      - id: MiniMaxAI/MiniMax-M2.7
        name: MiniMax M2.7 (Gonka)
        input: [text]
        contextWindow: 200000
        maxTokens: 8192
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
الحقلالقيمةما المهم
baseUrlhttps://gate.joingonka.ai/v1يجب أن ينتهي بـ /v1: المسار /chat/completions يضيفه omp بنفسه
apiopenai-completionsنقل Chat Completions — عليه جُرِّبت هذه التعليمات بالكامل
apiKeyمفتاحك jg-…يبحث omp أولًا عن متغيّر بيئة بهذا الاسم، وإن لم يجده يأخذ السلسلة كمفتاح نفسه. القيمة التي تبدأ بـ ! هي أمر، ويصبح ناتجه هو المفتاح
contextWindow, maxTokensحسب قائمة النماذج أعلاهبدونهما سيضع omp القيمتين 128000 و16384 — وهما لا تطابقان نماذج الشبكة. واستنادًا إلى نافذة السياق يحسب الوكيل متى يحين وقت ضغط السجل
input[text]نماذج الشبكة تستقبل النص
reasoningtrueعلامة النموذج المُفكِّر: يضعها المُثبِّت على DeepSeek V4 Flash وGLM-5.3 Flash، أما مدخل MiniMax M2.7 فيستغني عنها

وضع المفتاح كنص صريح هو الخيار الأقل مشاكل: يُقلع omp من أي بيئة، ويكفي تقييد صلاحيات الملف بالأمر chmod 600 ~/.omp/agent/models.yml. وإن أردت إبقاء المفتاح خارج الملف، فاكتب في apiKey اسم المتغيّر، مثل JOINGONKA_API_KEY، ثم صدّره في الصدفة التي تشغّل منها omp: فهذا هو ترتيب حلّ المفتاح الموصوف في وثائق المشروع.

الحقل الاختياري cost (السعر لكل مليون رمز) لا يلزم إلا لتقدير تكلفة الجلسة في واجهة omp. يكتب فيه المُثبِّت السعر الحيّ للبوابة لحظة التثبيت؛ وفي الإعداد اليدوي يمكن حذف الحقل — فهذا التقدير لا علاقة له بفاتورتك، والاستهلاك الفعلي يظهر في لوحة الحساب.

يُكتب مُحدِّد النموذج على الصيغة provider/model-id. يُفصل اسم المزوّد عند أول شرطة مائلة، لذا تُكتب معرّفات الشبكة التي تحوي شرطة مائلة خاصة بها كما هي: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. وبدلًا من تعديل config.yml يمكن تعيين الدور من الواجهة — بالأمر /model داخل الجلسة أو عبر معالج omp setup.

أدوار النماذج: أي نموذج لأي مهمة

في omp، لا يتم اختيار نموذج واحد لكل شيء، بل يتم اختيار النماذج حسب الأدوار - وهذا هو الركيزة الأساسية للتكوين. الأدوار المضمنة للحوار هي: default، smol، slow، plan، commit، task، tiny، memory، advisor و vision. ليس من الضروري تعيين الكل: الأدوار غير المحددة مثل smol و slow تأخذ في البداية نموذج الدور default، وتعمل الوكلاء الفرعيون بدون دور task على نموذج الجلسة الحالية، وتتبع commit و tiny نموذج smol. تكوين من سطر واحد default يعمل بالكامل.

تقسيم الأدوار بين نماذج الشبكة لا يهدف إلى التوفير — فأسعار DeepSeek V4 Flash و GLM-5.3 Flash و MiniMax M2.7 متساوية — بل من أجل السلوك والسعة: النموذج الذي يتمتع بالقدرة على الاستنتاج يخطط بشكل أفضل، والنموذج ذو الإجابات الطويلة يكتب بشكل أفضل، ولا داعي لوضع المهام الخلفية البسيطة في نفس قائمة انتظار المهمة الرئيسية.

الدورما يتم تنفيذه عليهنموذج الشبكةالسبب
defaultتحركات الوكيل العادية: القراءة، التعديلات، الأوامرDeepSeek V4 Flashسياق 380K وحد أقصى للإجابة 32768 — احتياطي للجلسات الطويلة مع الأدوات؛ يقوم المثبت بتعيينه أيضاً
smol, task, commitالمهام الفرعية السريعة، الوكلاء الفرعيون، تحليل التغييرات للالتزاماتلا تعين — ستصل عبر الوراثة إلى DeepSeek V4 Flashكلها تستدعي أدوات، ولا يوفر النموذج "الرخيص" المنفصل شيئاً عند توحيد السعر
slowتحليل عميق: منطق معقد، البحث عن الأسبابGLM-5.3 Flashيستنتج قبل الإجابة؛ حد الإجابة 8192، وجزء منه يذهب للاستنتاج — للنصوص الطويلة عد إلى DeepSeek V4 Flash
planوضع التخطيطGLM-5.3 Flashالخطة — نص قصير، حيث يكون مسار التفكير أهم من الحجم
tinyعناوين الجلسات والتصنيف الخدمي — طلبات قصيرة بدون أدواتMiniMax M2.7النموذج يمتلك أكبر سعة في الشبكة، ولا تتنافس الخلفية على فتحات المهمة الرئيسية
advisorنموذج ثانٍ يقرأ كل حركة للنموذج الرئيسي ويدرج الملاحظاتGLM-5.3 Flash، حسب الرغبةمن المفيد أن يختلف المستشار عن المنفذ؛ يتم تفعيله بواسطة الأمر /advisor on
visionالمهام بالصورلا تعيننماذج الشبكة نصية: اترك هذا الدور للمزود الذي يمتلك نموذج vision
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
  slow: joingonka/zai-org/GLM-5.3-Flash
  plan: joingonka/zai-org/GLM-5.3-Flash
  tiny: joingonka/MiniMaxAI/MiniMax-M2.7

retry:
  fallbackChains:
    default:
      - joingonka/zai-org/GLM-5.3-Flash

كتلة retry.fallbackChains — هي تأمين لساعات الذروة: عندما يجيب النموذج الرئيسي باستمرار بـ 429، يقوم omp بنقل بقية الخطوة إلى العنصر التالي في السلسلة، وبعد وقفة قصيرة يعود إلى الرئيسي. يمكن أن يكون مفتاح السلسلة دوراً، أو نموذجاً محدداً، أو المزود بالكامل (joingonka/*).

لعملية تشغيل واحدة يتم إعادة تعريف الدور بواسطة العلم: omp --model slow يطلق الجلسة على نموذج الدور slow، بينما تقوم --smol و --slow و --plan باستبدال نموذج الدور نفسه. داخل الجلسة، يقوم Ctrl+P بتقليب نماذج الأدوار، ويفتح /model قائمة الاختيار؛ وفي تبويب Roles هناك يتم تعيين الأدوار وبدائلها.

يمكن إضافة مستوى التفكير إلى قيمة الدور — :low، :medium، :high. هذا هو بناء جملة omp، أما كيفية فهم النموذج لمستوى التفكير فيعتمد عليه هو نفسه: في GLM-5.3 Flash، على سبيل المثال، هذا مفتاح ثنائي — التفاصيل في مراجعة النموذج. وتفصيلة مفيدة أخرى: يمكن إعادة تعريف الأدوار لمستودع واحد بملف <repo>/.omp/config.yml مع نفس كتلة modelRoles. تبقى المزودات والمفاتيح في الدليل الرئيسي، لذا لن يصل المفتاح إلى المستودع.

التحقق: ما الذي يجب أن يحدث

أولاً، تأكد من أن omp يرى المزوّد:

omp models joingonka

تأتي الإجابة في جدول من ثلاثة صفوف يحوي نوافذ السياق وحدود الإخراج من models.yml، مقرّبة إلى الآلاف (الإخراج مختصر: لدى omp أعمدة إضافية هي thinking وimages):

joingonka (3)
model                                context  max-out
deepseek-ai/DeepSeek-V4-Flash-0731      380K      33K
MiniMaxAI/MiniMax-M2.7                  200K     8.2K
zai-org/GLM-5.3-Flash                   390K     8.2K

ثم نجري تشغيلاً واحداً بدون واجهة. ضع في مجلد فارغ ملفاً فيه خطأ واضح واطلب من الوكيل العثور عليه:

omp -p "Read calc.py and tell me in one sentence whether it has a bug."

على الوكيل أن يستدعي أداة القراءة بنفسه وأن يجيب في صلب الموضوع — مع تحديد التعبير الذي يقع فيه الخطأ. في تشغيلنا بتاريخ 21 سبتمبر 2026، مرّت هذه الحلقة — الطلب، استدعاء الأداة، النتيجة، الإجابة — بسلاسة مع DeepSeek V4 Flash وGLM-5.3 Flash؛ أما MiniMax M2.7 — فراجع الصف الأخير في الجدول أدناه.

الفحص الثالث — من جهة البوابة: في لوحة التحكم ضمن قسم «الاستخدام» سيظهر الطلب في تفصيل «حسب النماذج»، وفي كتلة «حسب المفاتيح» سيُحدَّث وقت آخر طلب. إذا كان المكان فارغاً، فإن omp يتصل بمزوّد آخر: تحقق من إعدادات الأدوار بالأمر omp config get modelRoles.

إذا حدث خطب ما، فعادةً ما يُقرأ التشخيص مباشرةً من الرسالة:

ما يظهرماذا يعنيما العمل
Bun runtime must be >= 1.3.14تم تثبيت omp عبر Bun، وBun نفسه قديمحدّث Bun (bun upgrade) أو ثبّت الملف التنفيذي الجاهز: curl -fsSL https://omp.sh/install | sh -s — --binary
401 Invalid API keyالبوابة لم تقبل المفتاحتحقق من apiKey: المفتاح كاملاً، دون مسافات أو علامات اقتباس خاطئة. إذا كان فيه اسم متغيّر — فيجب أن يكون مصدَّراً في الصدفة التي شُغّل منها omp
405 Not Allowed وصفحة HTML من nginxضاع اللاحقة في baseUrlيجب أن ينتهي العنوان بـ /v1
404 Invalid URL (POST /v1/v1/chat/completions)هناك ذيل زائد في baseUrlاترك فقط https://gate.joingonka.ai/v1 — والباقي يضيفه omp بنفسه
400 Model … not found. Available: …خطأ إملائي في id النموذجالبوابة تسرد المعرّفات المتاحة بنفسها؛ القائمة الكاملة على GET https://gate.joingonka.ai/v1/models
Warning: models.yml validation failed — custom providers disabled، ثم No models matching "joingonka"الملف لم يجتز التحقق: خطأ إملائي في اسم حقل إلزامي أو YAML معطوب. وomp مع ذلك يواصل العمل على النماذج المدمجةالسبب مذكور في السطر التالي للتحذير؛ صحّح الحقل وأعد omp models joingonka
429انتهى الحدّ الدقيقي للطلبات لدى المفتاح، أو نفدت سعة النموذج في ساعة الذروةomp يعيد الطلب تلقائياً بفاصل زمني متزايد. إذا طال الأمر — غيّر النموذج عبر /model أو اضبط retry.fallbackChains؛ وحالة الشبكة ظاهرة على صفحة الحالة
402نفدت الأموال من الرصيداشحن الحساب في قسم «الفوترة»؛ والمفتاح مع ذلك يعمل
انتهت الجولة دون ردّ مرئي (في وضع -p — سطر فارغ)لوحظ في 21 سبتمبر 2026 مع MiniMax M2.7 في الجولات التالية لاستدعاء الأداة: جاء الردّ داخل كتلة الاستدلال، وعرضه omp كتفكيرأسند الأدوار التي تستخدم الأدوات إلى DeepSeek V4 Flash أو GLM-5.3 Flash، واترك MiniMax M2.7 للمهام القصيرة التي لا تستخدم أدوات

كم تكلفة ذلك

تستهلك أداة الوكيل التوكنات بشكل مختلف عن الدردشة: مع كل عبارة تكتبها، يضيف omp برومبت النظام ووصف الأدوات، وعادة ما تستغرق المهمة عدة خطوات. في تجربتنا، حتى مع وجود أداة قراءة واحدة مفعلة، كان كل دور يستهلك حوالي 3.5 ألف توكن مدخل؛ ومع المجموعة الكاملة سيكون العدد أكبر. لذلك، السعر لكل توكن هو العامل الحاسم هنا.

من خلال JoinGonka Gateway، تبلغ تكلفة التوكنات $0.0069 للمليون عند الإدخال و $0.021 للمليون عند الإخراج — السعر متطابق لجميع نماذج الشبكة ويتم جلبه في هذه الصفحة من مصدر مباشر.

السيناريوالاستهلاكعبر Gateway
مهمة فردية: قراءة ملف، العثور على خطأمن 7K توكنأجزاء من السنت
يوم عمل نشط3-7M توكنسنتات قليلة
شهر تطوير نشط~150M توكنحوالي دولار

التقديرات في العمود الأيمن تعتمد على أسعار سبتمبر 2026. للمقارنة — كيف يمكنك الدفع مقابل النماذج في omp:

الطريقةنموذج الدفعما الذي يقيدها
الاشتراك في خطة الترميز (الدخول عبر /login)مبلغ ثابت شهرياًحصص التحديث ونافذة حدود الاستخدام من جهة المورد
مفتاح المورد مباشرةمقابل التوكنات حسب قائمة أسعار الموردتتضخم الفاتورة مع طول الجلسات؛ السعر يعتمد على النموذج المختار
JoinGonka Gatewayمقابل التوكنات، رصيد مسبق الدفعالاستهلاك مرئي في لوحة التحكم؛ لا توجد اشتراكات أو حصص شهرية

يعرض شريط حالة omp تقدير تكلفة الجلسة. يتم حسابه بناءً على حقل cost في models.yml: يقوم المثبت بإدخال سعر البوابة في وقت التثبيت، وبما أن سعر الدولار في الشبكة يتذبذب مع سعر صرف GNK، فإن التقدير هو مجرد إرشاد. الاستهلاك الدقيق والرصيد المتبقي — في لوحة التحكم، في قسمي "الاستخدام" و "الفواتير". لماذا تم اختيار DeepSeek V4 Flash كخيار افتراضي، موضح بالتفصيل في مراجعة النموذج.

ما يجب مراعاته عند العمل

وضع الموافقات. يعمل omp افتراضيًا في وضع yolo: يوافق بنفسه على القراءة والكتابة وتنفيذ الأوامر. هذا مريح في مشروعك الخاص، لكنه مع كود شخص آخر سبب لتشديد الوضع أو اللجوء إلى حاوية:

omp config set tools.approvalMode write

في وضع write لا يطلب الوكيل الإذن إلا لتنفيذ الأوامر، وفي always-ask يطلبه أيضًا للكتابة. ولتشغيل واحد يقوم بالمهمة نفسها الخيار --approval-mode. هذه خاصية في omp نفسه، ولا تعتمد على مزوّد النموذج.

Pi وomp قريبان لكن بإعدادات مختلفة. إعداد أداة لا ينتقل إلى الأخرى: فالمجلدات والصيغ وأسماء الحقول لكل منهما خاصة به.

Piomp
مجلد الإعدادات~/.pi/agent~/.omp/agent
المزوّدونmodels.jsonmodels.yml
النموذج الافتراضيsettings.json: defaultProvider وdefaultModelconfig.yml: modelRoles.default
اختيار النموذج حسب المهمة/model داخل الجلسةأدوار modelRoles وسلاسل retry.fallbackChains
الفحصpi --list-modelsomp models joingonka
المثبِّت--tool pi--tool omp

عدة بيئات. الملف الشخصي المسمّى (omp --profile work أو المتغير OMP_PROFILE) ينقل كل الإعدادات إلى ~/.omp/profiles/<name>/agent — مريح لفصل مفاتيح العمل والمفاتيح الشخصية. أما مجلد الوكيل الحالي فيطبعه omp config path.

إذا احتجت الوكيل داخل المحرر. يستطيع omp العمل داخل Zed عبر بروتوكول ACP — وهو الوكيل نفسه بالإعدادات نفسها، دون حاجة لإعادة كتابة المزوّد والأدوار.

يتصل omp بـ JoinGonka Gateway بأمر واحد — npx @joingonka/setup --tool omp — أو بملفين: المزود joingonka في ~/.omp/agent/models.yml (baseUrl مع /v1، api: openai-completions، مفتاح jg-…، ونماذج بـ contextWindow و maxTokens صادقة) و modelRoles.default في config.yml. بعد ذلك يعمل الرافعة الرئيسية لـ omp — الأدوار: DeepSeek V4 Flash للخطوات العادية، GLM-5.3 Flash للتحليل والتخطيط، MiniMax M2.7 للأمور الجانبية، وسلسلة fallbackChains لساعات الذروة. التحقق يكون عبر omp models joingonka وقسم "الاستخدام" في لوحة التحكم؛ السعر موحد لجميع نماذج الشبكة، لذا يتم اختيار الأدوار بناءً على السلوك وليس الميزانية.

تريد معرفة المزيد؟

استكشف الأقسام الأخرى أو ابدأ في كسب GNK الآن.

الحصول على مفتاح وتوكنات مجانية →