* 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.
65 KiB
Feature Flags (فارسی)
🌐 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
کلیدهای runtime که رفتار OmniRoute را بدون استقرار مجدد تغییر میدهند. تمام فلگهای فهرستشده در اینجا در
src/shared/constants/featureFlagDefinitions.tsتعریف شدهاند — منبع واحد حقیقت. داشبورد و REST API هر دو از آن فایل میخوانند، بنابراین جدول زیر بهگونهای تولید شده است که دقیقاً بهصورت 1:1 با آن مطابقت داشته باشد.
فلگهای قابلیت چیستند
فلگ قابلیت یک کلید نامگذاریشده (از نوع boolean یا enum) است که مقدار آن را میتوان در
runtime تغییر داد و در پایگاه داده ذخیره کرد، بدون اینکه نیاز به استقرار مجدد فرایند باشد. هر
فلگ با یک FeatureFlagDefinition توصیف میشود که شامل key، label،
description، category، defaultValue، type و راهنمای requiresRestart است.
ترتیب تعیین مقدار
مقدار مؤثر یک فلگ توسط
resolveFeatureFlag() و با ترتیب
اولویت زیر تعیین میشود (بالاترین اولویت برنده است):
- بازنویسی DB — مقداری که در جدول
key_valueو در فضای نامfeature_flagsذخیره شده است (از طریق داشبورد یا REST API تنظیم میشود). - متغیر محیطی —
process.env[<KEY>]، در صورتی که تنظیم شده و خالی نباشد. - مقدار پیشفرض تعریف — مقدار
defaultValueازfeatureFlagDefinitions.ts.
یک فلگ boolean زمانی فعال در نظر گرفته میشود که مقدار مؤثر آن "true"،
"1" یا "yes" باشد (isFeatureFlagEnabled() را ببینید).
Note
بیشتر فلگها همچنین یک متغیر محیطی متناظر با همان نام دارند که در
ENVIRONMENT.mdمستند شده است. بازنویسی DB فلگ نسبت به آن متغیر محیطی اولویت دارد. فلگی باrequiresRestart: trueبلافاصله ذخیره میشود، اما فقط هنگام راهاندازی فرایند دوباره خوانده میشود — تغییر آن، بنر «راهاندازی مجدد سرور» را در داشبورد نمایش میدهد.
فهرست فلگها
72 فلگ در 6 دسته. پیشفرض همان مقدار پیشفرض تعریف است — مقداری که وقتی نه بازنویسی DB و نه متغیر محیطی وجود داشته باشد، استفاده میشود.
امنیت (10)
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
REQUIRE_API_KEY |
boolean | false |
برای همه درخواستهای ورودی، کلید API الزامی باشد. |
INPUT_SANITIZER_ENABLED |
boolean | true |
پاکسازی ورودی برای همه درخواستها فعال شود. |
INJECTION_GUARD_MODE |
enum | off |
حالت محافظت در برابر تزریق پرامپت. مقادیر: off، warn، block، redact. |
PII_REDACTION_ENABLED |
boolean | false |
اطلاعات شناسایی شخصی از درخواستها حذف شود (مستقل از INPUT_SANITIZER_MODE). |
PII_RESPONSE_SANITIZATION |
boolean | false |
اطلاعات شناسایی شخصی از پاسخهای ارائهدهنده پاکسازی شود. |
PII_RESPONSE_SANITIZATION_MODE |
enum | redact |
حالت پاکسازی اطلاعات شناسایی شخصی از پاسخها. مقادیر: redact، warn، block، off. |
OUTBOUND_SSRF_GUARD_ENABLED |
boolean | true |
درخواستهای خروجی به محدودههای IP خصوصی/داخلی مسدود شوند. |
ALLOW_API_KEY_REVEAL |
boolean | false |
به کاربران احراز هویتشده داشبورد اجازه داده شود بهجای مشاهده صرفاً مقادیر پوشاندهشده، کلیدهای API ذخیرهشده را آشکار کنند. |
AUTH_LOG_INCLUDE_ACCOUNT_ID |
boolean | false |
پیشوند حساب در خطوط گزارش AUTH درج شود (برای مثال، «در حال استفاده از حساب : abc12345...»). این گزینه بهطور پیشفرض غیرفعال است تا شناسههای حساب در گزارشهای فرایند اشتراکی/چندمستاجری پوشانده شوند. مستقل از حالت اشکالزدایی است؛ تغییر حالت اشکالزدایی این اطلاعات را آشکار نمیکند. |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN |
boolean | false |
وقتی OIDC فعال است، ورود با گذرواژه غیرفعال شود تا کاربران فقط از طریق ورود یکپارچه OIDC احراز هویت کنند. وقتی غیرفعال باشد (پیشفرض)، هر دو روش ورود با گذرواژه و OIDC در دسترس هستند. |
شبکه (15)
| کلید | نوع | پیشفرض | راهاندازی مجدد | توضیحات |
|---|---|---|---|---|
ENABLE_TLS_FINGERPRINT |
boolean | false |
✓ | حالت پنهانسازی اثر انگشت TLS را فعال میکند. |
AUDIO_REMOTE_PROVIDER_NODES |
boolean | false |
به مسیرهای /v1/audio/* اجازه میدهد از گرههای ارائهدهندهٔ سازگار با OpenAI که خارج از localhost میزبانی میشوند استفاده کنند. بهطور پیشفرض غیرفعال است — مسیریابی صوت به یک میزبان راهدور، هویت خروجی را تغییر میدهد و باید تصمیمی صریح از سوی اپراتور باشد. گرههای loopback همیشه مجاز هستند و تحت تأثیر قرار نمیگیرند. | |
PROXY_AUTO_SELECT_ENABLED |
boolean | false |
وقتی هیچ پروکسیای به یک اتصال اختصاص داده نشده است، نخستین پروکسی فعال را بهصورت خودکار از رجیستری انتخاب میکند. بهطور پیشفرض غیرفعال است (در غیر این صورت هر پروکسی رجیستری به یک جایگزین سراسری تبدیل میشود — #3332). | |
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK |
boolean | false |
به جریانهای اعتبارسنجی OAuth و ارائهدهنده اجازه میدهد وقتی بررسیهای اولیهٔ دسترسیپذیری پروکسی ناموفق هستند، پروکسی سنجاقشده را دور بزنند و مستقیماً متصل شوند. بهطور پیشفرض غیرفعال است، زیرا این کار میتواند IP خروجی را تغییر دهد. | |
NETWORK_ROTATION_SHARED_EGRESS_GUARD |
boolean | true |
هنگام رخدادن یک استثنای شبکه (مهلت زمانی، رد یا بازنشانی اتصال) در یک اجراکنندهٔ چرخش چندحسابی، اگر حساب ناموفق پروکسی اختصاصی نداشته باشد، یک دورهٔ انتظار کوتاه اعمال میکند و بهجای تلاش مجدد برای تکتک حسابها، سایر حسابهای بدون پروکسی را تا پایان درخواست رد میکند. بهطور پیشفرض فعال است (ایمن: IP خروجی تغییر نمیکند و فقط خطر تأخیر/دورهٔ انتظار در حسابهای دارای خروجی مشترک را کاهش میدهد). برای بازگرداندن انتشار فوری در نخستین خطای حساب بدون پروکسی، آن را غیرفعال کنید. | |
PROXY_SKIP_RECENTLY_FAILED |
boolean | false |
استخرهای پروکسی و چرخش مختص هر حساب در opencode، ارائهٔ مجدد پروکسیای را که بهتازگی ناموفق بوده است (کاوش TCP ردشده یا دریافت 429 از طریق آن)، برای مدتی مختص هر فرایند متوقف میکنند؛ این مدت با هر تکرار دو برابر میشود تا به سقف برسد. هیچ وضعیت پروکسیای ثبت نمیشود؛ اگر همهٔ گزینهها کنار گذاشته شوند، انتخاب بدون تغییر باقی میماند. بهطور پیشفرض غیرفعال است. | |
PROXY_POOL_EGRESS_OBSERVATION |
boolean | false |
در داشبورد و زیر یک استخر پروکسی نشان میدهد که طی 24 ساعت گذشته، چند IP خروجی مشاهدهشده به اعضای آن سرویس دادهاند و چند اتصال از آنها استفاده کردهاند. فقط خواندنی است، از گزارش پروکسی محاسبه میشود و هرگز برای مسیریابی استفاده نمیشود. بهطور پیشفرض غیرفعال است. | |
OPENCODE_RESPONSES_STALL_ROTATION |
boolean | false |
برای اجراکنندهٔ OpenCode، نخستین بایت بدنهٔ پاسخ جریانی Responses را پایش میکند (بازه: RESPONSES_FIRST_BYTE_TIMEOUT_MS، پیشفرض 15000). یک جریان 2xx از Responses که پس از پایان این بازه همچنان ساکت بماند، متوقفشده تلقی میشود: حساب وارد دورهٔ انتظار میشود و درخواست یک بار به حساب بعدی میچرخد؛ توقف دوم بلافاصله با شکست مواجه میشود. بهطور پیشفرض غیرفعال است: جریانهای متوقفشده تا پایان مهلت آمادگی جریان، رفتار انتظار فعلی را حفظ میکنند. |
|
OPENCODE_USER_BLOCKED_ROTATION |
boolean | false |
اجراکنندهٔ OpenCode: هنگام دریافت 403/451 حاوی امتناع user_blocked (نه محدودیت جغرافیایی و نه رد اثر انگشت Cloudflare)، حساب ردشده را وارد دورهٔ انتظار میکند و در هر درخواست حداکثر یک بار به حساب بعدی میچرخد؛ امتناع دوم بدون علامتگذاری موفقیت، همانطور که هست بازگردانده میشود. بهطور پیشفرض غیرفعال است: دور زدن مسیریابی یک مسدودسازی کاربر از سوی سرویس بالادستی ممکن است شبیه تلاش برای فرار به نظر برسد و پرچم را در سراسر ناوگان منتشر کند. |
|
OPENCODE_TRANSIENT_FAILOVER_BACKOFF |
boolean | false |
چرخش OpenCode: پس از دو شکست موقت متوالی در سرویس بالادستی (5xx یا یک 400 با بدنهٔ خالی)، پیش از رفتن به حساب بعدی مکث میکند — از 1.5 ثانیه شروع میشود و با هر شکست بعدی دو برابر میگردد، با سقف 6 ثانیه برای هر مکث و 10 ثانیه برای هر درخواست؛ در صورت قطع اتصال کلاینت از آن صرفنظر میشود. بدنهٔ ناموفق پیش از انتظار آزاد میشود. بهطور پیشفرض غیرفعال است: انتقال به جایگزین همچنان فوری انجام میشود. | |
OPENCODE_RATE_LIMITED_429_EARLY_STOP |
boolean | false |
چرخش OpenCode: موج حسابها را در نخستین 429 که بهعنوان محدودیت نرخ واقعی طبقهبندی شده است (دارای Retry-After قابل تجزیه یا بدنهای که از محدودیت نرخ/مصرف نام میبرد) متوقف میکند و همان 429 بالادستی را بدون تغییر بازمیگرداند. برای 429های طبقهبندینشده، چرخش ادامه مییابد. بهطور پیشفرض غیرفعال است: سطح رایگان بهازای هر IP خروجی محدود است (#9611)، بنابراین هر 429 باعث چرخش میشود و یک موج تمامشده آخرین 429 بالادستی را بازمیگرداند. |
|
MITM_DISABLE_TLS_VERIFY |
boolean | false |
✓ | تأیید گواهی TLS را برای پروکسی MITM غیرفعال میکند. خطرناک است. |
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS |
boolean | false |
URLهای ارائهدهنده را که به شبکههای خصوصی/داخلی اشاره میکنند مجاز میسازد. | |
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS |
boolean | true |
افزودن/اعتبارسنجی ارائهدهندگان روی آدرسهای محلی/خصوصی (127.0.0.1، localhost، LAN) را مجاز میکند. بهطور پیشفرض فعال است (اولویت با محیط محلی)؛ برای مسدودسازی سختگیرانه و محدود به آدرسهای عمومی، آن را غیرفعال کنید. فرادادهٔ ابری همچنان مسدود میماند. | |
ENABLE_CC_COMPATIBLE_PROVIDER |
boolean | false |
✓ | حالت ارائهدهندهٔ سازگار با Claude Code را فعال میکند. |
سیاستها (5)
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
TOOL_POLICY_MODE |
enum | disabled |
حالت اعمال سیاست استفاده از ابزار. مقادیر: disabled، warn، block. |
RATE_LIMIT_AUTO_ENABLE |
boolean | false |
فعالسازی خودکار محدودسازی نرخ بر اساس الگوهای استفاده. |
DISABLE_CONTEXT_WINDOW_CHECKS |
boolean | false |
بررسی محلی پنجرهٔ زمینه / حداکثر توکن ورودی OmniRoute را برای درخواستهای مستقیم تکمدلی نادیده میگیرد. محدودیتهای بالادستی همچنان اعمال میشوند. |
CAPABILITY_FILTER_ENABLED |
boolean | false |
وقتی مدل مقصد فاقد قابلیتهای لازم (بینایی، ابزارها، خروجی ساختیافته، پنجرهٔ زمینه) باشد، درخواستها را پیش از ارسال رد میکند. از درخواستهای مستقیم تکارائهدهندهای که فیلتر سازگاری لایهٔ ترکیبی را دور میزنند، محافظت میکند. |
RADAR_ENABLED |
boolean | false |
ماژول Radar در OmniRoute (صفحههای فید کاتالوگ و همگامسازی) را فعال میکند. بهطور پیشفرض خاموش است؛ فعالسازی فقط رابط کاربری را در دسترس قرار میدهد — همگامسازی دادهها همچنان نیازمند اعلام رضایت جداگانه است. |
زمان اجرا (32)
| کلید | نوع | پیشفرض | راهاندازی مجدد | توضیحات |
|---|---|---|---|---|
UNIVERSAL_CONTEXT_HANDOFF_ENABLED |
بولی | true |
هنگام تغییر مدل در مسیریابی ترکیبی، خلاصههای مکالمه را تولید و تزریق میکند. برای مستقل در نظر گرفتن تغییر مدلها و جلوگیری از درخواستهای تحویل پسزمینه برای همهٔ ترکیبهای فعلی و آینده، آن را غیرفعال کنید. | |
RESPONSES_PASSTHROUGH_DROP_COMMENTARY |
بولی | true |
آیتمهای خروجی داخلیِ مرحلهٔ توضیحات را پیش از ارسال به کلاینتها، از جریانهای عبوری Responses API حذف میکند. برای دریافت توضیحات خام بالادستی، آن را غیرفعال کنید. | |
OMNIROUTE_MCP_ENFORCE_SCOPES |
بولی | true |
محدودیتهای دامنه را برای دسترسی به ابزارهای MCP اعمال میکند. | |
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS |
بولی | false |
برای کاهش مصرف توکن، توضیحات ابزارهای MCP را فشرده میکند. | |
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS |
بولی | false |
پردازش وظایف پسزمینه را در زمان اجرا فعال میکند. | |
OMNIROUTE_DISABLE_BACKGROUND_SERVICES |
بولی | false |
✓ | همهٔ سرویسهای پسزمینه (نوسازی سهمیه، همگامسازی و غیره) را غیرفعال میکند. |
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
بولی | false |
بدون اعتبارسنجی به فیلترهای RTK در سطح پروژه اعتماد میکند. | |
OMNIROUTE_ENABLE_LIVE_WS |
بولی | true |
✓ | سرور WebSocket داشبورد بلادرنگ را هنگام import راهاندازی میکند (بهطور پیشفرض روی پورت 20132). |
OMNIROUTE_CODEX_WS_ENABLED |
بولی | true |
به Codex اجازه میدهد از انتقال Responses-over-WebSocket استفاده کند. در صورت خاموش بودن، Codex به HTTP Responses برمیگردد. | |
OMNIROUTE_CODEX_APP_SERVER_ENABLED |
بولی | true |
به Codex اجازه میدهد از انتقال محلی WebSocket JSON-RPC مربوط به app-server استفاده کند (codexTransport=app-server). در صورت خاموش بودن، اتصالهایی که app-server را انتخاب کردهاند به سایر روشهای انتقال Codex برمیگردند. | |
OMNIROUTE_EMERGENCY_FALLBACK |
بولی | true |
درخواستهایی را که بودجهشان تمام شده است به ارائهدهنده/مدل جایگزین رایگان اضطراری هدایت میکند. (بخش جایگزین اضطراری بودجه را در ادامه ببینید.) | |
STREAM_RECOVERY_ENABLED |
بولی | false |
پیش از آنکه هرگونه بایت پاسخ به کلاینت برسد، تلاش مجدد زودهنگام و شفاف را برای جریانهای SSE بالادستیِ ناقص فعال میکند. | |
STREAM_RECOVERY_MIDSTREAM_ENABLED |
بولی | false |
به بازیابی جریان اجازه میدهد پس از رسیدن بایتها به کلاینت نیز پاسخ را دوباره درخواست کرده و به جریان قبلی متصل کند. | |
STREAM_RECOVERY_TOOLCALL_ORDER_FIX |
بولی | false |
ادامه دادن در میانهٔ جریان را برای فراخوانی ابزار ایمن میکند: پس از انتشار یک فراخوانی ابزار، چه در حال اجرا باشد و چه پیشتر با finish_reason برابر با tool_calls پایان یافته باشد، هرگز جریان قطعشده را از سر نمیگیرد و بهجای مصرف کل بودجه، پس از یک ادامهٔ خالی اتصال را میبندد. حالت خاموش: رفتار نسخهٔ انتشاریافته. | |
STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED |
بولی | false |
وقتی یک جریان SSE پیش از انتشار هر فریم مفیدی بسته شود و تلاش مجدد محدود روی همان اتصال نیز مصرف شده باشد، یکبار به اتصال همتای دیگری سوییچ میکند؛ اگر همتای قابلاستفادهای وجود نداشته باشد، پاسخ اصلی 502 با STREAM_EARLY_EOF بازگردانده میشود. بهطور پیشفرض خاموش است: EOF زودهنگام پس از تلاش مجدد روی همان اتصال، نهایی باقی میماند. |
|
MODEL_CATALOG_INCLUDE_NAMES |
بولی | true |
فیلدهای نام مناسب برای نمایش را در پاسخهای /v1/models قرار میدهد. برای کلاینتهایی که فقط شناسههای مدل را انتظار دارند، آن را غیرفعال کنید. |
|
MODELS_CATALOG_PREFIX_MODE |
شمارشی | dual |
نحوهٔ پیشوندگذاری شناسههای مدل در /v1/models را کنترل میکند. 'dual' (پیشفرض) برای سازگاری عقبرو، هم پیشوند نام مستعار و هم پیشوند شناسهٔ رسمی ارائهدهنده را منتشر میکند. 'alias' فقط پیشوند کوتاه نام مستعار را منتشر میکند (برای مثال ds-web/model، نه deepseek-web/model). 'canonical' فقط پیشوند کامل شناسهٔ ارائهدهنده را منتشر میکند. مقادیر: dual، alias، canonical. |
|
ARENA_ELO_SYNC_ENABLED |
بولی | true |
همگامسازی دورهای ELO با جدول رتبهبندی Arena AI را برای رتبهبندی هوشمندی مدلها فعال میکند. | |
EXPOSE_CC_DISCOVERY_ALIASES |
بولی | false |
شناسههای آینهای claude/<provider>/<model> را در /v1/models اعلام میکند تا کشف مدل در درگاه Claude Code، مدلهای غیر Claude را فهرست کند. این گزینه سطح سراسریِ دروازهٔ سهسطحی است (متغیر محیطی بر تنظیم داشبورد اولویت دارد). بخش پیکربندی Claude Code را ببینید. |
|
NO_THINKING_ALIAS_ENABLED |
بولی | true |
کلید اصلی برای نامهای مستعار درگاه no-think//. حالت روشن (پیشفرض): /v1/models برای هر مدل واجد شرایط Claude که قابلیت تفکر دارد، یک گونهٔ بدون تفکر اعلام میکند و شناسهٔ no-think/ ارسالشده در درخواست با سرکوب استدلال به مدل واقعی بازگردانی میشود. حالت خاموش: هیچ گونهای اعلام نمیشود و شناسهٔ no-think/ مانند هر شناسهٔ مدل ناشناختهٔ دیگری در نظر گرفته میشود. تا زمانی که این گزینه روشن است، انتخاب فعال/غیرفعالسازی جداگانهٔ هر مدل با ModelSpec.noThinkingAlias همچنان اعمال میشود. | |
OMNIROUTE_DISABLE_THINKING_LEVEL_VARIANTS |
بولی | false |
تولید گونههای سطح تفکر (برای مثال -low، -medium، -high) را در کاتالوگ /v1/models غیرفعال میکند. | |
OMNIROUTE_CHAT_VIRTUAL_LANES |
بولی | false |
✓ | مسیرهای پذیرش مجازی تطبیقی بهازای هر مستأجر را برای ارسال به ارائهدهنده فعال میکند (#9654): جهش بار یک مستأجر دیگر باعث خطای 503 برای مستأجر دیگری نمیشود. متغیر محیطی OMNIROUTE_CHAT_VIRTUAL_LANES بر این تنظیم داشبورد اولویت دارد؛ تغییرات پس از راهاندازی مجدد سرور اعمال میشوند. |
EXPOSE_FUNCTIONAL_GATEWAY_MIRRORS |
بولی | false |
شناسههای آینهای / را در /v1/models برای مدلهایی اعلام میکند که مالک رسمی آنها اعتبارنامهٔ فعالی ندارد، اما یک درگاه عبوری دارای اعتبارنامهٔ فعال آنها را مسیریابی میکند. هشدار: در صورت فعالسازی سراسری، ورودیهایی را برای همهٔ کلاینتها به کاتالوگ اضافه میکند. | |
NEWAPI_AGGREGATOR_BALANCE |
بولی | false |
تشخیص موجودی را برای گرههای تجمیعکنندهٔ سازگار با New-API / One-API / Sub2API فعال میکند. در صورت فعال بودن، گرههای سازگاری که پرچم تجمیعکننده برایشان تنظیم شده است، موجودی خود را در داشبورد و مسیریابی پیشبررسی سهمیه گزارش میکنند. | |
SERVER_OWNED_TOOL_LOOP_ENABLED |
بولی | false |
فراخوانیهای غیرجریانی ابزار تحت مالکیت سرور را تا زمانی ادامه میدهد که مدل پاسخی قابلاستفاده برای کلاینت بازگرداند. | |
SEARCH_STATS_HIDE_DELETED_CONNECTIONS |
بولی | false |
آمار جستوجو و جستوجوهای اخیر فقط ارائهدهندگانی را محاسبه میکنند که همچنان اتصال فعالی دارند (ارائهدهندگان بدون کلید مانند duckduckgo-free همیشه محاسبه میشوند). در حالت خاموش، هر ردیف جستوجوی نگهداریشده که دارای شناسهٔ ارائهدهنده است حفظ میشود. | |
FREE_BADGE_REQUIRES_PROVIDER_FREE_TIER |
بولی | false |
صفحههای ارائهدهندگان در داشبورد: نشان رایگان را فقط براساس سیگنالهایی نمایش میدهد که ارائهدهنده به آنها پایبند است — روش ابتکاری مبتنی بر نام نمایشی، فیلدهای رایگان غیربولی و پسوندهای :free را برای ارائهدهندگان ثبتشدهای که سطح رایگان مستندی ندارند کنار میگذارد. حالت خاموش، قاعدهٔ تاریخی نمایش نشان را حفظ میکند. | |
RETRY_AFTER_PROVENANCE_ENABLED |
بولی | false |
در پاسخهای تجمیعشدهٔ عدم دسترسی 429/503، هنگامی که زمان مشخصی برای تلاش مجدد در آینده معلوم نیست، Retry-After را حذف میکند (بهجای مقدار ساختگی 1s)، فیلد error.retry_after_provenance (signal | none) را اضافه میکند و به مسیرهای تخلیهٔ ترکیب اجازه میدهد راهنمای متنی تلاش مجدد را از بدنههای بالادستی JSON و متن ساده بخوانند. این فیلد فقط در پاسخهایی ظاهر میشود که توسط unavailableResponse() ساخته شدهاند؛ سایر بدنههای 429/503 بدون تغییر میمانند. |
|
PROTECTED_PRIORITY_INFRA_502_ENABLED |
بولی | false |
وقتی یک مقصد ترکیبی priority که بهعنوان «فقط هنگام اتمام سهمیه جایگزین شود» علامتگذاری شده است، ترکیب را به دلیلی که بهطور اثباتپذیر سهمیه نیست متوقف کند (باز بودن قطعکنندهٔ مدار ارائهدهنده، رد شدن بهعلت تأخیر پیشبینیشده)، بهجای 503 شبیه خطای سهمیه، پاسخ 502 میدهد. توقفهای ناشی از قفل، دورهٔ انتظار، عدم دسترسی، اتمام منابع و سقف همزمانی همچنان 503 برمیگردانند. |
|
MISTRAL_AMBIGUOUS_401_SOFT_LOCKOUT |
بولی | false |
یک پاسخ سادهٔ 401 از Mistral ({"detail":"Unauthorized"}، بدون سیگنال صریح احراز هویت) برای کلید لغوشده و سهمیهٔ تمامشده یکسان است. در حالت روشن، بهجای کنار گذاشتن اتصال با وضعیت expired، آن را وارد دورهٔ انتظار میکند؛ حداکثر 3 بار در ساعت برای هر اتصال. مورد بعدی اتصال را کنار میگذارد، بنابراین کلید لغوشده همچنان در نهایت شناسایی میشود. بهطور پیشفرض خاموش است: هر پاسخ سادهٔ 401 از Mistral مانند گذشته اتصال را کنار میگذارد. |
|
XAI_OAUTH_LIVE_MODEL_DISCOVERY |
بولی | false |
کاتالوگ زندهٔ مدلهای xAI را برای اتصالهای xai-oauth با استفاده از توکن حامل OAuth از https://api.x.ai/v1/models دریافت میکند، بهجای آنکه از دادهٔ اولیهٔ ایستای منجمدشده استفاده کند. بهطور پیشفرض خاموش است: xai-oauth همچنان دادهٔ اولیهٔ ایستا را بدون تغییر ارائه میکند. در صورت بروز هرگونه خطای تفکیک، کشف مدل به دادهٔ اولیه بازمیگردد (پذیرش توکن حامل OAuth توسط x.ai در این نقطهٔ پایانی تأیید نشده است). |
|
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED |
بولی | false |
به پاکسازی خودکار اجازه میدهد کارهای نهاییشدهٔ Batch API (completed/failed/cancelled/expired) قدیمیتر از OMNIROUTE_BATCH_RETENTION_DAYS را همراه با نقاط وارسی هر خط حذف کند و محتوای BLOB فایلهای بارگذاریشدهای را که از expires_at خود گذشتهاند پاک کند. بهطور پیشفرض خاموش است: تا زمانی که اپراتور آن را فعال نکند، همهٔ نصبهای موجود این دادهها را دقیقاً مانند گذشته نگه میدارند. مسیر DELETE /api/v1/batches/delete-completed که توسط اپراتور اجرا میشود در هر دو حالت بیتأثیر میماند — این مسیر یک قرارداد عمومی API جداگانه و بدون شرط است. |
CLI (5)
| کلید | نوع | پیشفرض | راهاندازی مجدد | توضیحات |
|---|---|---|---|---|
CLI_COMPAT_ALL |
boolean | false |
✓ | حالت سازگاری را برای همه کلاینتهای CLI فعال میکند. |
MODEL_ALIAS_COMPAT_ENABLED |
boolean | false |
لایه سازگاری نام مستعار مدل را فعال میکند. | |
PRICING_SYNC_ENABLED |
boolean | false |
همگامسازی خودکار دادههای قیمتگذاری را فعال میکند (همچنین به متغیر محیطی PRICING_SYNC_ENABLED نیاز دارد). |
|
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES |
boolean | false |
پس از همگامسازی مدل ارائهدهنده، فایلهای پروفایل ~/.codex/*.config.toml را بهصورت خودکار بر اساس کاتالوگ فعال (باز)نویسی میکند. پیکربندی فعال/پیشفرض Codex هرگز تغییر نمیکند. بهطور پیشفرض غیرفعال است. | |
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES |
boolean | false |
پس از همگامسازی مدل ارائهدهنده، پروفایلهای Claude Code در ~/.claude/profiles//settings.json را بهصورت خودکار بر اساس کاتالوگ فعال (باز)نویسی میکند. پیکربندی فعال/پیشفرض Claude هرگز تغییر نمیکند. بهطور پیشفرض غیرفعال است. |
سلامت (5)
| کلید | نوع | پیشفرض | توضیحات |
|---|---|---|---|
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK |
boolean | false |
نقطه پایانی بررسی سلامت نمونه محلی را غیرفعال میکند. |
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK |
boolean | false |
بررسی سلامت اعتبارسنجی توکن را غیرفعال میکند. |
SKILLS_SANDBOX_NETWORK_ENABLED |
boolean | false |
دسترسی به شبکه را در محیط سندباکس مهارتها فعال میکند. |
PROXY_HEALTH_BLOCKED_RESETS_STREAK |
boolean | false |
در پیمایش سلامت پروکسی، کاوشی که هدف آن را رد کرده است (401/403/429)، زنجیره شکستهای متوالی پروکسی را بازنشانی میکند. بهطور پیشفرض غیرفعال است: یک رد درخواست خنثی باقی میماند (#10654). پاسخ 5xx در هر دو حالت نامشخص باقی میماند؛ رد درخواست هرگز پروکسی را حذف، غیرفعال یا دوباره فعال نمیکند. |
DB_HEALTHCHECK_STARTUP_DEFERRED_ENABLED |
boolean | false |
بررسی یکپارچگی/سلامت DB هنگام راهاندازی را پس از آغاز پذیرش درخواستها توسط سرور (از طریق setImmediate) اجرا میکند، بهجای اینکه راهاندازی را تا تکمیل آن مسدود کند (#13717). بهطور پیشفرض غیرفعال است: راهاندازی دقیقاً مانند قبل از این PR مسدود میشود. |
Note
INPUT_SANITIZER_BLOCK_THRESHOLDو نام مستعار قدیمی آنINJECTION_GUARD_BLOCK_THRESHOLDحالتblockمربوط بهINJECTION_GUARD_MODEرا تنظیم میکنند، اما متغیرهای محیطی سادهای هستند که توسطsrc/shared/utils/injectionSeverity.tsخوانده میشوند، نه پرچمهای ویژگی: آنها نه بازنویسی DB دارند و نه کلید تغییر وضعیت در داشبورد. مراجعه کنید بهENVIRONMENT.md.
Note
ستون
راهاندازی مجددپرچمهای دارایrequiresRestart: trueرا مشخص میکند — مقدار فوراً ذخیره میشود، اما تنها پس از بارگذاری مجدد فرایند اعمال میشود. پرچمهای enum هر مقداری خارج از مجموعه مجاز خود را رد میکنند (اعتبارسنجی در سمت سرور هم درsetFeatureFlagOverride()و هم در کنترلکننده RESTPUTانجام میشود).
تغییر وضعیت پرچمها
داشبورد
به داشبورد ← تنظیمات ← پرچمهای ویژگی
(/dashboard/settings/feature-flags) بروید. شبکهٔ
(src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx)
از موارد زیر پشتیبانی میکند:
- جستوجو بر اساس کلید یا توضیحات و فیلتر بر اساس دستهبندی (بهعلاوهٔ نمای ساختگی نیازمند راهاندازی مجدد).
- یک کلید تغییر وضعیت برای پرچمهای بولی و یک فهرست کشویی برای پرچمهای enum
(
src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx). - یک نشان منبع برای هر پرچم —
DB،ENVیاDEF— که نشان میدهد مقدار مؤثر از کجا آمده است. - یک دکمهٔ بازنشانی (که فقط برای پرچمهای دارای منبع
DBنمایش داده میشود) برای حذف مقدار بازنویسیشده، و یک دکمهٔ بازنشانی همهٔ مقادیر بازنویسیشده در پایین صفحه. - هنگام تغییر پرچمی با ویژگی
requiresRestart، یک بنر راهاندازی مجدد سرور نمایش داده میشود.
API مبتنی بر REST
همهٔ عملیات از طریق یک مسیر واحد انجام میشوند:
src/app/api/settings/feature-flags/route.ts.
هر متد به یک نشست احراز هویتشدهٔ داشبورد نیاز دارد (در غیر این صورت 401).
GET /api/settings/feature-flags
همهٔ پرچمها را همراه با مقدار مؤثر، منبع و یک خلاصه برمیگرداند.
{
"flags": [
{
"key": "REQUIRE_API_KEY",
"label": "Require API Key",
"description": "Require an API key for all incoming requests",
"category": "security",
"type": "boolean",
"enumValues": null,
"defaultValue": "false",
"effectiveValue": "false",
"source": "default", // "db" | "env" | "default"
"requiresRestart": false,
"warningLevel": "caution",
},
// ... همهٔ 72 پرچم
],
"summary": {
"total": 56,
"active": 0,
"inactive": 0,
"overriddenByDb": 0,
"overriddenByEnv": 0,
},
}
PUT /api/settings/feature-flags
یک مقدار بازنویسیشده را برای یک پرچم تنظیم یا حذف میکند. بدنه: { key: string; value?: string }.
حذف value از بدنه، مقدار بازنویسیشده را حذف میکند (و مقدار env / پیشفرض را بازمیگرداند).
# تنظیم یک مقدار بازنویسیشده در DB
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY","value":"true"}'
# حذف مقدار بازنویسیشده (بدون "value")
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY"}'
پاسخ، effectiveValue/source جدید، previousValue/
previousSource و requiresRestart را بازتاب میدهد. کلیدهای ناشناخته و مقادیر enum
خارج از محدوده با 400 رد میشوند.
DELETE /api/settings/feature-flags
همهٔ مقادیر بازنویسیشدهٔ DB را یکباره پاک میکند و هر پرچم را به مقدار env / پیشفرض آن
بازمیگرداند. { cleared: <count>, message: "..." } را برمیگرداند.
Note
پرچمهایی با
requiresRestart: trueفقط پس از بارگذاری مجدد فرایند اعمال میشوند. جریان راهاندازی مجدد داشبورد،POST /api/restartرا فراخوانی میکند و سپس تا زمانی که سرور دوباره در دسترس قرار گیرد،GET /api/health/pingرا بهطور دورهای بررسی میکند.
مسیر جایگزین اضطراری بودجه
OMNIROUTE_EMERGENCY_FALLBACK (دستهبندی runtime، مقدار پیشفرض true) مسیر
جایگزین رایگان اضطراری را در
open-sse/services/emergencyFallback.ts
کنترل میکند. هنگامی که فعال باشد، درخواستهایی که بودجهٔ خود را تمام میکنند، بهجای شکست کامل
به یک ارائهدهنده/مدل جایگزین رایگان هدایت میشوند. برای غیرفعال کردن این رفتار و شکست خوردن درخواستهایی
که بودجهشان تمام شده است، آن را — از طریق کلید تغییر وضعیت داشبورد، یک مقدار بازنویسیشده در DB یا متغیر محیطی
OMNIROUTE_EMERGENCY_FALLBACK — روی false (یا 0) تنظیم کنید.
(در PRهای #3741 / #3752 بهصورت یک کلید تغییر وضعیت در داشبورد ارائه شده است.)
همچنین ببینید
- مرجع متغیرهای محیطی — بیشتر پرچمها دارای یک متغیر محیطی همنام هستند که در آنجا مستند شده است (مقدار بازنویسیشده در DB بر آن اولویت دارد).
src/shared/constants/featureFlagDefinitions.ts— منبع معتبر برای همهٔ پرچمها.src/shared/utils/featureFlags.ts— منطق تعیین مقدار (resolveFeatureFlag،isFeatureFlagEnabled،resolveAllFeatureFlags).src/lib/db/featureFlags.ts— ذخیرهسازی پایدار مقادیر بازنویسیشده در DB، در فضای نامfeature_flagsاز جدولkey_value.