Files
OmniRoute/docs/i18n/fa/docs/frameworks/OPENCODE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

14 KiB
Raw Blame History

OpenCode Integration (فارسی)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


وضعیت: عموماً در دسترس. مخاطب: اپراتورهایی که OpenCode را به یک استقرار OmniRoute متصل میکنند. منبع اصلی (طرحوارهٔ پیکربندی): src/shared/services/opencodeConfig.ts منبع اصلی (بستهٔ npm): @omniroute/opencode-provider/ (فضای کاری قابل انتشار)

OpenCode یک کلاینت هوش مصنوعی عاملمحور برای CLI/دسکتاپ است. این کلاینت کاتالوگ ارائهدهندگان خود را از ~/.config/opencode/opencode.json (یا opencode.jsonc) میخواند و از طرحوارهٔ موجود در https://opencode.ai/config.json پیروی میکند. OmniRoute خود را بهعنوان یکی از این ارائهدهندگان به OpenCode معرفی میکند — هر درخواست از سطح استاندارد سازگار با OpenAI در مسیر /v1 متعلق به OmniRoute عبور میکند؛ بنابراین OpenCode بهطور خودکار از مسیریابی Auto-Combo، مدارشکنها، سیاستهای کلید، مشاهدهپذیری و موارد دیگر بهرهمند میشود.

دو مسیر ادغام پشتیبانیشده وجود دارد. یکی را انتخاب کنید — هر دو پیکربندی یکسانی تولید میکنند.


مسیر ۱ — مولد CLI (بدون نصب npm)

برای کاربران نهایی توصیه میشود. همراه OmniRoute ارائه میشود. فایل opencode.json را در محل خود مینویسد.

# پس از نصب OmniRoute (npm i -g @omniroute/cli یا کلون محلی)
omniroute config opencode \
  --base-url http://localhost:20128 \
  --api-key "$OMNIROUTE_API_KEY"

در پشت صحنه، CLI تابع mergeOpenCodeConfigText() (src/shared/services/opencodeConfig.ts:104) را فراخوانی میکند؛ بنابراین سایر ارائهدهندگان و توضیحات موجود در یک فایل opencode.json حفظ میشوند. ورودی OmniRoute بهصورت اتمی اضافه یا جایگزین میشود.

فایل حاصل (کاتالوگ مدل پیشفرض):

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "omniroute": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "OmniRoute",
      "options": {
        "baseURL": "http://localhost:20128/v1",
        "apiKey": "<کلید-شما>",
      },
      "models": {
        "claude-opus-4-5-thinking": { "name": "claude-opus-4-5-thinking" },
        "claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" },
        "gemini-3.1-pro-high": { "name": "gemini-3.1-pro-high" },
        "gemini-3-flash": { "name": "gemini-3-flash" },
      },
    },
  },
}

مسیر ۲ — بستهٔ npm با نام @omniroute/opencode-provider

زمانی توصیه میشود که پیکربندی را با Node/TS اسکریپتنویسی میکنید (پایپلاینهای CI، مخازن یکپارچه، جریانهای نصبکنندهٔ سفارشی).

npm install --save-dev @omniroute/opencode-provider
import { writeFileSync } from "node:fs";
import { buildOmniRouteOpenCodeConfig } from "@omniroute/opencode-provider";

const config = buildOmniRouteOpenCodeConfig({
  baseURL: "http://localhost:20128",
  apiKey: process.env.OMNIROUTE_API_KEY ?? "sk_omniroute",
  // اختیاری: بازنویسی کاتالوگ مدل ارائهشده به OpenCode
  models: ["auto", "claude-opus-4-7", "gpt-5.5"],
  modelLabels: { auto: "Auto-Combo" },
});

writeFileSync("opencode.json", JSON.stringify(config, null, 2));

برای ادغام غیرمخرب با یک فایل موجود، mergeOpenCodeConfigText() را از opencodeConfig.ts بازسازی کنید یا مولد CLI را فراخوانی کنید.

برای API کامل، README بسته را ببینید.


محیط اجرا واقعاً چه کاری انجام میدهد

هر دو مسیر مقدار یکسان provider.omniroute.npm: "@ai-sdk/openai-compatible" را تولید میکنند. در زمان اجرا، OpenCode بستهٔ @ai-sdk/openai-compatible (که از قبل یکی از وابستگیهای انتقالی OpenCode است) را بارگذاری و آن را با baseURL و apiKey پیکربندی میکند. از آنجا:

رابط کاربری/عامل OpenCode
   → @ai-sdk/openai-compatible
      → HTTP POST {baseURL}/chat/completions          (سطح OpenAI متعلق به OmniRoute)
         → کنترلکنندهٔ OmniRoute /v1/chat/completions     (open-sse/handlers/chatCore.ts)
            → مسیریابی ترکیبی / Auto-Combo / اجراکننده
               → ارائهدهندهٔ بالادستی

افزونه هرگز مستقیماً با HTTP سروکار ندارد. فقط پیکربندی تولید میکند.


پیشفرضهای کاتالوگ مدل

export const OMNIROUTE_DEFAULT_OPENCODE_MODELS = [
  "claude-opus-4-5-thinking",
  "claude-sonnet-4-5-thinking",
  "gemini-3.1-pro-high",
  "gemini-3-flash",
] as const;

میتوانید با استفاده از models: [...] آن را بازنویسی کنید. موارد پیشنهادی برای افزودن:

  • "auto" — مسیریاب بدون نیاز به پیکربندی Auto-Combo متعلق به OmniRoute را در دسترس قرار میدهد. به OpenCode اجازه میدهد بدون کدنویسی ثابت کاتالوگ، «بهترین مدل موجود» را انتخاب کند.
  • "<combo-name>" — هر ترکیبی که در داشبورد تعریف کردهاید؛ OmniRoute آن را بهصورت شفاف تفکیک و پردازش میکند.

نرمالسازی URL

این ابزار کمکی هر دو شکل را میپذیرد و دقیقاً یک /v1 تولید میکند:

ورودی خروجی (options.baseURL)
http://localhost:20128 http://localhost:20128/v1
http://localhost:20128/ http://localhost:20128/v1
http://localhost:20128/v1 http://localhost:20128/v1
http://localhost:20128/v1/// http://localhost:20128/v1

این حذف موارد تکراری، رایجترین خرابی مشاهدهشده در پیکربندیهای قدیمی است. اگر یک opencode.json مربوط به قبل از v3.8.0 دارید که به /v1/v1/... اشاره میکند، مولد را دوباره اجرا کنید یا بار دیگر createOmniRouteProvider را فراخوانی کنید.


حالتهای احراز هویت

تنظیم OmniRoute مقدار پیشنهادی apiKey
REQUIRE_API_KEY=false (پیشفرض برای محلی) sk_omniroute (مقدار جاینگهدار تحتاللفظی)
REQUIRE_API_KEY=true یک کلید API واقعی و مختص هر کاربر از Dashboard → API Keys.

برای کلاینتهای سبک Anthropic که x-api-key و anthropic-version را ارسال میکنند، extractApiKey متعلق به OmniRoute کلید موجود در x-api-key را نیز میپذیرد. OpenCode از رابط OpenAI استفاده میکند، بنابراین همیشه Authorization: Bearer ${apiKey} را ارسال خواهد کرد — هیچ حالت خاصی برای Anthropic در اینجا اعمال نمیشود.


عیبیابی

نشانه علت راهحل
خطای 404 در هر درخواست با URL حاوی /v1/v1/ پیکربندی قدیمی افزونه پیش از v3.8 که /v1 را دو بار اضافه میکرد. از طریق مسیر 1 یا 2 دوباره تولید کنید.
401 Invalid API key در OmniRoute مقدار REQUIRE_API_KEY=true است و کلید شناخته نمیشود. کلید را در داشبورد ایجاد کنید، یا فقط برای محیط محلی REQUIRE_API_KEY=false را تنظیم و از sk_omniroute استفاده کنید.
فهرست مدلها در رابط کاربری OpenCode خالی است هر 4 مدل پیشفرض در قابلیت مشاهده ارائهدهنده OmniRoute مخفی هستند. برای نمایش مدلهایی که فعال کردهاید، models: ["auto", ...] را ارسال کنید.
خطای 500 در OpenCode با cannot read property 'models' نسخههای قدیمیتر OpenCode (< 0.1.x) فیلد درونخطی models را نمیپذیرفتند. OpenCode را به نسخهای ارتقا دهید که از طرحواره v1 (opencode.ai/config.json) پیروی میکند.

همچنین ببینید