تخطَّ إلى المحتوى

مزود الذكاء الاصطناعي للالتقاط التلقائي

يشغّل الالتقاط التلقائي طلب ذكاء اصطناعي في الخلفية لتلخيص العمل التقني وحفظه كذاكرة. يحتاج أحد إعدادات المزود أدناه.

موصى به: استخدم مزودًا مصادقًا بالفعل في opencode ويدعم المخرجات المنظمة:

"opencodeProvider": "anthropic",
"opencodeModel": "claude-haiku-4-5-20251001",

يصدر المكون الإضافي طلبات مخرجات منظمة إلى API جلسة opencode بدل استدعاء نقاط نهاية المزود مباشرة، لذا يملك opencode المصادقة وتحديث الرموز وتوجيه المزود. يجب أن يطابق اسم المزود إدخالًا من opencode providers list، ويجب أن يدعم النموذج المحدد مخرجات JSON منظمة عبر opencode.

اختياريًا ثبّت متغير استدلال للنموذج بـ "opencodeVariant": "xhigh" (مثلًا لـ grok-4.7). يُطبَّق على استدعاءات LLM الداخلية للمكون الإضافي (ملخصات الالتقاط التلقائي، تعلّم الملف، تنظيف الملف)، بما في ذلك عندما يكون opencodeModel هو "inherit"، حتى يمكن للعمل الخلفي استخدام مستوى استدلال مختلف عن الجلسة التفاعلية.

نماذج الاستدلال البطيئة (أو مطالبات الملف الكبيرة جدًا) يمكن أن تتجاوز ميزانية المخرجات المنظمة الافتراضية البالغة 90 ثانية. عيّن "opencodeTimeoutMs" (بالمللي ثانية) لتمديدها لاستدعاءات المخرجات المنظمة الداخلية (ملخصات الالتقاط التلقائي، تعلّم الملف) — مثلًا "opencodeTimeoutMs": 180000 لمدة 3 دقائق. تُقيَّد القيم إلى 10000..600000؛ يبقى الافتراضي 90000. تُحوَّل السلاسل الرقمية. يستخدم تنظيف الملف مهلة منفصلة أطول.

المزودون المدعومون: أي مزود يدرجه opencode providers list (مثل anthropic، openai، github-copilot، …).

إذا عُيِّن opencodeProvider وopencodeModel، يتقدمان على إعدادات memoryProvider اليدوية أدناه.

اتبع نموذج الجلسة: عيّن "opencodeModel": "inherit" لاستخدام نموذج OpenCode ملموس وقت الاستدعاء بدل معرّف مثبت. لـ الالتقاط التلقائي، تُسجَّل كل مطالبة عبر خطاف chat.params ويعيد طلب الالتقاط استخدام مزود/نموذج تلك المطالبة. لـ تعلّم الملف ومسارات المخرجات المنظمة الأخرى (غير المرتبطة برسالة مستخدم واحدة)، يعيد inherit أولاً استخدام آخر نموذج أبلغ به المضيف عبر chat.params / خطاف سياق V2، ثم يرجع إلى قائمة model.json الحديثة في OpenCode إن وُجدت (مفضّلًا opencodeProvider المُعَد). OpenCode v2 لم يعد يكتب model.json، لذا نموذج الجلسة داخل العملية هو الاحتياطي الأساسي هناك. إرسال معرّف النموذج الحرفي inherit غير صالح أبدًا وتسبب سابقًا في ProviderModelNotFoundError: Model not found: <provider>/inherit على تلك المسارات. ما زال opencodeProvider مطلوبًا كبوابة الإعداد العادية.

الرجوع: إعداد API يدوي (إن لم تستخدم opencodeProvider):

"memoryProvider": "openai-chat",
"memoryModel": "gpt-4o-mini",
"memoryApiUrl": "https://api.openai.com/v1",
"memoryApiKey": "sk-...",

صيغ مفتاح API:

"memoryApiKey": "sk-..."
"memoryApiKey": "file://~/.config/opencode/api-key.txt"
"memoryApiKey": "env://OPENAI_API_KEY"

أوضاع memoryProvider اليدوية:

  • openai-chat: API متوافق مع OpenAI Chat Completions مع استدعاء أدوات/دوال. يمكن أن يعمل مع وكلاء متوافقين مثل LiteLLM فقط عندما يحافظ النموذج العلوي والوكيل المحددان على استدعاءات الأدوات.
  • openai-responses: OpenAI Responses API مع مخرجات استدعاء دوال.
  • anthropic: Anthropic Messages API مع استخدام الأدوات.
  • minimax: نقطة نهاية MiniMax متوافقة مع Anthropic Messages. عيّن memoryApiUrl إلى النقطة العالمية (https://api.minimax.io) أو نقطة الصين (https://api.minimax.cn)؛ يُطبَّق مسار /anthropic/v1/messages وترويسة x-api-key تلقائيًا. استخدم MiniMax-M3.1-Flash (موصى به) أو MiniMax-M3، وكلاهما بسياق 1,000,000 رمز. Flash يفكر دائمًا؛ ويمكن اختياريًا تعيين memoryExtraParams إلى { "output_config": { "effort": "max" } } بالقيم low أو medium أو high أو xhigh أو max (الافتراضي). يرفض Flash تعطيل التفكير وeffort none، ولا يدعم service_tier. تفكير M3 معطّل افتراضيًا على هذه النقطة؛ فعّله بـ { "thinking": { "type": "adaptive" } }. تبقى معرّفات النماذج مُعدّة صراحةً؛ وتُمرَّر المعرّفات المخصصة أو القديمة دون تغيير. راجع مرجع توافق MiniMax.
  • orcarouter: بوابة نماذج متوافقة مع OpenAI بمعرّفات نماذج ذات مساحة أسماء. memoryApiUrl وmemoryModel اختياريان — الافتراضي https://api.orcarouter.ai/v1 وorcarouter/auto (اسم مستعار للتوجيه يختار نموذجًا قادرًا لكل طلب). إذا عيّنت memoryModel، استخدم معرّفًا ذا مساحة أسماء مثل openai/gpt-5.5 أو deepseek/deepseek-v4-flash؛ يرفض OrcaRouter أسماء النماذج العارية. مثال:
    "memoryProvider": "orcarouter",
    "memoryApiKey": "<OrcaRouter API key>",
    يشغّل OrcaRouter أيضًا أمانًا صفري الثقة على مستوى البوابة لوكلاء الذكاء الاصطناعي على نفس النقطة — فحص كل مطالبة/استجابة وحوكمة كل استدعاء أداة على أساس الرفض الافتراضي، دون تغييرات في شيفرة التطبيق.
  • atlas-cloud: إعداد مسبق لـ OpenAI-compatible Chat Completions لـ Atlas Cloud. memoryApiUrl وmemoryModel اختياريان — الافتراضي https://api.atlascloud.ai/v1 وdeepseek-ai/deepseek-v4-pro. إذا حُذف memoryApiKey، يُستخدم ATLASCLOUD_API_KEY من البيئة. مثال:
    "memoryProvider": "atlas-cloud",
    "memoryApiKey": "env://ATLASCLOUD_API_KEY",
    عند اختيار هذا المزود، تُرسل مطالبات الالتقاط التلقائي / الملف، واستجابات النموذج، وسياق المحادثة ذي الصلة إلى https://api.atlascloud.ai.
  • cheaper-inference: إعداد مسبق لـ OpenAI-compatible Chat Completions لـ Cheaper Inference. memoryApiUrl وmemoryModel اختياريان — الافتراضي https://api.cheaperinference.com/v1 وgpt-5.4-mini. إذا حُذف memoryApiKey، يُستخدم CHEAPER_INFERENCE_API_KEY من البيئة. مثال:
    "memoryProvider": "cheaper-inference",
    "memoryApiKey": "env://CHEAPER_INFERENCE_API_KEY",
    عند اختيار هذا المزود، تُرسل مطالبات الالتقاط التلقائي / الملف، واستجابات النموذج، وسياق المحادثة ذي الصلة إلى https://api.cheaperinference.com.
  • api-route: إعداد مسبق لـ OpenAI-compatible Chat Completions لـ API Route. memoryApiUrl وmemoryModel اختياريان — الافتراضي https://global.api-route.com/v1 وgpt-6.1-sol. إذا حُذف memoryApiKey، يُستخدم API_ROUTE_API_KEY من البيئة. مثال:
    "memoryProvider": "api-route",
    "memoryApiKey": "env://API_ROUTE_API_KEY",
    عند اختيار هذا المزود، تُرسل مطالبات الالتقاط التلقائي / الملف، واستجابات النموذج، وسياق المحادثة ذي الصلة إلى https://global.api-route.com.
  • runcrate: إعداد مسبق لـ OpenAI-compatible Chat Completions لـ Runcrate. memoryApiUrl وmemoryModel اختياريان — الافتراضي https://api.runcrate.ai/v1 وdeepseek-ai/DeepSeek-V4.1-Flash. إذا حُذف memoryApiKey، يُستخدم RUNCRATE_API_KEY من البيئة. مثال:
    "memoryProvider": "runcrate",
    "memoryApiKey": "env://RUNCRATE_API_KEY",
    عند اختيار هذا المزود، تُرسل مطالبات الالتقاط التلقائي / الملف، واستجابات النموذج، وسياق المحادثة ذي الصلة إلى https://api.runcrate.ai.
  • cloudgpu: إعداد مسبق لـ OpenAI-compatible Chat Completions لـ CloudGPU. memoryApiUrl وmemoryModel اختياريان — الافتراضي https://cloudgpu.app/v1 وdeepseek-v4.1-flash. إذا حُذف memoryApiKey، يُستخدم CLOUDGPU_API_KEY من البيئة (أنشئ مفتاحًا من https://cloudgpu.app/api/console؛ توثيق API: https://cloudgpu.app/api/docs). مثال:
    "memoryProvider": "cloudgpu",
    "memoryApiKey": "env://CLOUDGPU_API_KEY",
    عند اختيار هذا المزود، تُرسل مطالبات الالتقاط التلقائي / الملف، واستجابات النموذج، وسياق المحادثة ذي الصلة إلى https://cloudgpu.app.

استكشاف الأخطاء:

  • إخفاقات الالتقاط التلقائي لا تمنع استخدام أداة memory اليدوية.
  • إذا أبلغ الالتقاط التلقائي أن مزودًا غير متصل، أكّد اسم المزود بـ opencode providers list وأعد ذلك المزود في opencode أولًا.
  • إذا أعاد وكيل أو مزود مخصص نصًا عاديًا بدل مخرجات منظمة/أدوات، اختر نموذجًا/مزودًا آخر أو استخدم أحد أوضاع المزود اليدوية أعلاه.
  • للنماذج التي ترفض temperature، أضف "memoryTemperature": false عند استخدام إعداد API اليدوي.
  • للنماذج التي ترفض استدعاءات الأدوات المفروضة (tool_choice: "required"، مثل بعض أوضاع التفكير)، أضف "forceToolChoice": false عند استخدام openai-chat / orcarouter / atlas-cloud / cheaper-inference / api-route / runcrate / cloudgpu.
  • لـ opencodeProvider / opencodeModel (مثل DeepSeek V4 thinking)، ما زال OpenCode يرسل tool_choice مفروضًا للمخرجات المنظمة. يعطّل opencode-mem التفكير على الوكيل الداخلي opencode-mem-structured (ويعيده في chat.params بعد دمج المتغير) حتى يكتمل الالتقاط التلقائي وتعلّم الملف. وكيل الدردشة التفاعلي لديك دون تغيير. إذا فشل الالتقاط ما زال بخطأ تفكير/tool_choice، اختر نموذجًا غير تفكير لـ opencodeModel أو أعد رجوعًا يدويًا كاملًا (memoryModel + memoryApiUrl).
  • opencode-claude-auth / Claude Code: يستخدم الالتقاط التلقائي OpenCode مع مزودك anthropic المصادق. غالبًا ما يتكرر format: json_schema المفروض مع Claude-auth، لذا يستخدم opencode-mem مسار نص-JSON يحافظ على المصادقة لـ opencodeProvider: "anthropic" (بدون أدوات StructuredOutput مفروضة؛ تُحلَّل الرد بـ Zod). ما زال مراقب الخطوات يجهض الجلسات الداخلية الجامحة بعد خطوتين. إذا فشل الالتقاط ما زال، أعد رجوع Anthropic بمفتاح API يدوي كامل (memoryProvider: "anthropic" + memoryModel + memoryApiUrl + memoryApiKey) — لا يمكن إعادة استخدام Claude Pro/Max OAuth خارج OpenCode.
  • المنصات غير المدعومة: Intel Mac (darwin/x64) غير مدعوم — @tursodatabase/database وإصدارات onnxruntime-node الثابتة (المثبّت 1.31.1) لا توفّر ربطًا أصليًا لـ x64. استخدم Apple Silicon أو Linux أو Windows، أو نقطة نهاية تضمين بعيدة عبر embeddingApiUrl + embeddingApiKey. MLX غير مدعوم.