🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇳 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
מדריך מלא לשימוש ב-Codex CLI המוגדר לעבוד מול OmniRoute כקצה עורפי תואם OpenAI.
TOML הוא הפורמט היעיל היחיד. גרסאות מודרניות של Codex קוראות באופן בלעדי את
~/.codex/config.toml(אומת מול codex-cli 0.147.0: הפקודהcodex --helpמתעדת שדריסות-c/--config"נטענות מתוך~/.codex/config.toml"). הקובץ הישן~/.codex/config.yamlהשתייך ל-CLI הישן של npm, ומתעלמים ממנו ללא הודעה. מחולל התצורה בלוח הבקרה (/api/cli-tools/apply, הכליcodex) כותב TOML באמצעות מיזוג שמרני — מפתחות קיימים ובלוקים של ספקים אחרים נשמרים, מפתח ה-API נשאר ב-OMNIROUTE_API_KEY(לעולם לא בקובץ), וקובץconfig.yamlישן שנותר מדווח כהערת הגירה מבלי שייערך.
החליפו את <YOUR_HOST> ואת <YOUR_KEY> בערכים שלכם:
# ~/.codex/config.toml
model = "cx/gpt-5.5"
model_provider = "omniroute"
model_reasoning_effort = "xhigh"
model_context_window = 400000
model_auto_compact_token_limit = 350000
tool_output_token_limit = 32768 # מגבלת אחסון ההיסטוריה לכל קריאת כלי
[model_providers.omniroute]
name = "OmniRoute"
base_url = "http://<YOUR_HOST>:20128/v1"
env_key = "OMNIROUTE_API_KEY"
requires_openai_auth = false
wire_api = "responses"# ~/.bashrc או ~/.zshrc — ערך המפתח בפועל, לעולם לא בתוך config.toml
export OMNIROUTE_API_KEY="<YOUR_KEY>"אם התקנתם את Codex דרך אפליקציית שולחן העבודה של ChatGPT, ייתכן שקובץ ההפעלה
codex קיים רק בתוך חבילת האפליקציה ועדיין אינו נמצא ב-PATH של המעטפת שלכם. הוסיפו את
ספריית המשאבים לקובץ האתחול של המעטפת:
export PATH="/Applications/ChatGPT.app/Contents/Resources:$PATH"פתחו מעטפת חדשה ולאחר מכן אמתו:
command -v codex
codex --versionCodex מוודא שמשתנה הסביבה ששמו מוגדר באמצעות env_key קיים
לפני שהבקשה הראשונה יוצאת מה-CLI. אם מופע OmniRoute
המקומי שלכם אינו דורש אימות, כל מציין מקום שאינו ריק יעבוד:
export OMNIROUTE_API_KEY="${OMNIROUTE_API_KEY:-local}"השתמשו במקום זאת במפתח אמיתי כאשר שרת OmniRoute שלכם מוגן או מרוחק.
אפשרויות מארח נפוצות
גישה URL רשת מקומית http://192.168.0.1:20128/v1Tailscale http://100.x.x.x:20128/v1ממשק לולאה חוזרת http://localhost:20128/v1
Codex CLI הוציא משימוש את wire_api = "chat" (Chat Completions) בפברואר 2026, וכעת דורש wire_api = "responses" (OpenAI Responses API). הגדרת wire_api = "chat" גורמת לקריסה מיידית בעת ההפעלה החל מ-v0.138.
ספקים רבים, כולל GLM ו-Kimi, עדיין חושפים רק נקודת קצה של Chat Completions. DeepSeek V4 חושף כעת גם Responses API מובנה וגם נקודת קצה תואמת Anthropic; OmniRoute משתמש ב-Responses כברירת מחדל ומאפשר לכל חיבור DeepSeek לבחור תאימות ל-Anthropic.
OmniRoute פותר זאת באופן שקוף:
Codex CLI
→ wire_api = "responses"
→ POST /v1/responses (OmniRoute)
→ OmniRoute בוחר את הפרוטוקול המובנה של הספק ומתרגם בעת הצורך
→ POST /responses (DeepSeek V4) או /chat/completions (Mistral / GLM / Kimi / אחרים)
בעת השימוש ב-OmniRoute לעולם אין צורך בשרת proxy נפרד לתרגום. כל המודלים משתמשים ב-wire_api = "responses" — OmniRoute מטפל בכל השאר.
wire_apiהוא ברירת המחדל — ערך ברירת המחדל של השדה הוא"responses", וניתן להשמיט אותו לחלוטין מתוךconfig.toml. הגדירו אותו במפורש רק אם ברצונכם לתעד את הכוונה.
| שדה | תיאור |
|---|---|
model_context_window |
תקציב הטוקנים הכולל עבור המודל הפעיל. יש להגדיר למגבלה המוצהרת של המודל. |
model_auto_compact_token_limit |
הסף שמפעיל דחיסה אוטומטית של ההיסטוריה. מקסימום: 90% מ־model_context_window — המערכת מתעלמת ללא הודעה מערכים הגבוהים מ־90%. |
tool_output_token_limit |
מגבלת הטוקנים המאוחסנים בהיסטוריה לכל פלט של קריאת כלי. מונע מתגובת כלי גדולה יחידה למלא את החלון. זו אינה מגבלת הפלט המרבית — זוהי מגבלת אחסון בהיסטוריה. |
compact_prompt |
דריסה מובנית של הנחיית המערכת המשמשת במהלך הדחיסה (v0.138+). |
הערה לגבי
model_max_output_tokens: שדה זה אינו חלק מסכמת התצורה של Codex CLI (הוא אינו קיים בבסיס הקוד של Codex ב־Rust). אם הוא מוגדר, המערכת מתעלמת ממנו ללא הודעה. אין להסתמך עליו — יש להשתמש ב־tool_output_token_limitכדי לשלוט בכמות פלט הכלים המאוחסנת בהיסטוריה.
| מודל | מזהה OmniRoute | חלון הקשר | auto_compact |
tool_output_limit |
|---|---|---|---|---|
| GPT-5.5 | cx/gpt-5.5 |
400k אמינים (1M לכל היותר) | 350,000 | 32,768 |
| Kimi K2.7 (חשיבה) | kmc/kimi-k2.7 |
131,072 | 112,000 | 32,768 |
| Kimi K2.6 | kmc/kimi-k2.6 |
131,072 | 112,000 | 32,768 |
| GLM-5.2 / 5.2-max (חשיבה) | glm/glm-5.2 |
131,072 | 112,000 | 32,768 |
| MiMo V2.5 Pro (חשיבה) | opencode-go/mimo-v2.5-pro |
131,072 | 112,000 | 32,768 |
| Qwen 3.7 Plus (חשיבה) | opencode-go/qwen3.7-plus |
32,768 | 28,000 | 16,384 |
| DeepSeek V4 Pro (OllamaCloud) | ollamacloud/deepseek-v4-pro |
131,072 | 112,000 | 32,768 |
| DeepSeek V4 Pro | ds/deepseek-v4-pro |
1,000,000 | 900,000 | 65,536 |
| MiMo V2.5 | opencode-go/mimo-v2.5 |
131,072 | 112,000 | 32,768 |
| Gemma 4 31B (OllamaCloud) | ollamacloud/gemma4:31b |
32,768 | 28,000 | 16,384 |
| Nemotron 3 Super (OllamaCloud) | ollamacloud/nemotron-3-super |
32,768 | 28,000 | 16,384 |
| GPT-OSS 20B (OllamaCloud) | ollamacloud/gpt-oss:20b |
32,768 | 28,000 | 16,384 |
| DeepSeek V4 Flash (OllamaCloud) | ollamacloud/deepseek-v4-flash |
65,536 | 56,000 | 16,384 |
| Gemini 3 Flash Preview (OllamaCloud) | ollamacloud/gemini-3-flash-preview |
1,000,000 | 850,000 | 32,768 |
| GLM-5 Turbo | glm/glm-5-turbo |
131,072 | 112,000 | 16,384 |
| GLM-4.7 Flash | glm/glm-4.7-flash |
131,072 | 112,000 | 16,384 |
| Mistral Large Latest | mistral/mistral-large-latest |
262,144 | 220,000 | 16,384 |
נוסחת הדחיסה:
effective_window = model_context_window - min(tool_output_token_limit, 20000). ערכים הגבוהים מ־20k אינם משנים את סף הדחיסה.
כלל אצבע: יש להגדיר את
model_auto_compact_token_limitל־85–88% מ־model_context_window. לעולם אין לעבור את 90% — המערכת תתעלם מכך ללא הודעה.
כל מודלי Codex ב-OmniRoute משתמשים בקידומת cx/:
| שם ב-Codex CLI | מודל OmniRoute |
|---|---|
cx/gpt-5.5 |
GPT-5.5 סטנדרטי |
cx/gpt-5.4 |
GPT-5.4 סטנדרטי |
cx/gpt-5.4-mini |
GPT-5.4 מיני |
cx/gpt-5.1-codex-mini |
GPT-5.1 Codex מיני |
ספקים אחרים משתמשים בקידומת משלהם (kmc/, glm/, ds/, ollamacloud/, opencode-go/, mistral/) — הקידומת תואמת לכינוי הספק ב-OmniRoute.
קובע כמה המודל "חושב" לפני שהוא משיב.
| ערך | מיועד עבור |
|---|---|
none |
ללא חשיבה — תגובה ישירה |
low |
משימות פשוטות (שינוי שם, עיצוב) |
medium |
ברירת המחדל של השרת כאשר לא צוין ערך |
high |
משימות ביניים (ארגון קוד מחדש, ניפוי שגיאות) |
xhigh |
ארכיטקטורה, ניתוח מעמיק, בעיות מורכבות |
# דריסה עבור הפעלה בודדת
codex -c model_reasoning_effort=low "rename variable x to count"
codex -c model_reasoning_effort=xhigh "design the auth module"הגדירו גם סיכום חשיבה כדי ש-Desktop יוכל להציג את טקסט החשיבה (ולא רק מקטעים מוצפנים):
# ~/.codex/config.toml
model_reasoning_effort = "xhigh" # או ultra כאשר הוא נתמך
model_reasoning_summary = "detailed" # auto | concise | detailed | noneבמארח OmniRoute, הערך של Settings → AI → Thinking Budget חייב להיות passthrough כדי שמאמץ החשיבה והסיכום של Codex יגיעו לספק שמעלה הזרם. מצב auto מסיר את כל שדות הלקוח reasoning / reasoning_effort ויותיר את חלוניות החשיבה ריקות, גם כאשר Codex מוגדר כראוי.
המדריך המלא: THINKING_BUDGET.md.
דחיסה ומטמון הנחיות אינם תלויים בכך וממשיכים לפעול תחת passthrough.
פרופילים מאפשרים להחליף מודל + חלון הקשר באמצעות דגל יחיד. כל פרופיל הוא קובץ שטוח
~/.codex/<name>.config.toml שמתווסף מעל קובץ הבסיס config.toml.
כלל מתן שמות (Codex CLI v0.137+): שם הקובץ חייב להיות
~/.codex/<name>.config.toml— ללא הקידומתprofile-. ה-CLI פותר את-p kimi-k27ל-~/.codex/kimi-k27.config.toml. אם הקובץ אינו נמצא, ברירת המחדל מוחלת ללא הודעה.
codex --profile kimi-k27 "analyze 10k lines of this codebase"
codex -p glm52 "architecture review"
codex --profile deepseek-flash "rename variable" # מהיר, זולcodex -p low # cx/gpt-5.5, effort=low
codex -p medium # cx/gpt-5.5, effort=medium
codex -p high # cx/gpt-5.5, effort=high
codex -p xhigh # cx/gpt-5.5, effort=xhigh (ברירת מחדל)
codex -p chat # cx/gpt-5.5, לא הוגדר מאמץ (ברירת המחדל של השרת)| פרופיל | מודל | הקשר | מיועד עבור |
|---|---|---|---|
kimi-k27 |
kmc/kimi-k2.7 |
128k | איכות החשיבה הטובה ביותר (Kimi) |
glm52 |
glm/glm-5.2 |
128k | חשיבה של GLM |
glm52max |
glm/glm-5.2-max |
128k | חשיבה מרבית של GLM |
mimo-pro |
opencode-go/mimo-v2.5-pro |
128k | חשיבה של MiMo |
qwen37plus |
opencode-go/qwen3.7-plus |
32k | חשיבה של Qwen |
| פרופיל | מודל | הקשר | מיועד עבור |
|---|---|---|---|
kimi-k26 |
kmc/kimi-k2.6 |
128k | שימוש כללי (Kimi) |
deepseek-pro |
ollamacloud/deepseek-v4-pro |
128k | DeepSeek Pro דרך OllamaCloud |
deepseek |
ds/deepseek-v4-pro |
1M | DeepSeek Pro ישירות, הקשר עצום |
mimo |
opencode-go/mimo-v2.5 |
128k | MiMo לשימוש כללי |
| פרופיל | מודל | הקשר | מיועד עבור |
|---|---|---|---|
gemma4 |
ollamacloud/gemma4:31b |
32k | משתלם ובעל יכולת |
nemotron |
ollamacloud/nemotron-3-super |
32k | NVIDIA Nemotron |
gptoss |
ollamacloud/gpt-oss:20b |
32k | GPT בקוד פתוח |
| פרופיל | מודל | הקשר | מיועד עבור |
|---|---|---|---|
deepseek-flash |
ollamacloud/deepseek-v4-flash |
64k | משימות מהירות |
gemini-flash |
ollamacloud/gemini-3-flash-preview |
1M | מהיר מאוד, הקשר עצום |
glm5turbo |
glm/glm-5-turbo |
128k | GLM Turbo |
glm47flash |
glm/glm-4.7-flash |
128k | GLM Flash |
mistral |
mistral/mistral-large-latest |
256k | Mistral Large |
| משימה | פרופיל מומלץ |
|---|---|
| שינוי שם, עיצוב, קוד תבניתי | --profile deepseek-flash או -p low |
| הסבר, סקירה קלה | -p chat או -p gemini-flash |
| ניפוי שגיאות, ארגון מחדש מתון | -p medium או -p kimi-k26 |
| תכונה חדשה, בדיקות מורכבות | -p high או -p mimo |
| ארכיטקטורה, ניתוח מעמיק | -p kimi-k27 או -p glm52 או -p xhigh |
| ניתוח בסיס קוד (דורש הקשר של 1M) | --profile deepseek או --profile gemini-flash |
| איכות חשיבה מרבית | -p glm52max או -p mimo-pro |
| חיסכון בעלויות | -p gemma4 או -p gptoss |
אם אתם מריצים את OmniRoute על VPS, תוכלו ליצור אוטומטית קובצי פרופיל מקטלוג המודלים הפעיל:
# מתוך VPS (משתמש ב-OmniRoute מקומי ביציאה 20128)
omniroute setup-codex
# מכל מחשב — הפניה אל ה-VPS שלכם
omniroute setup-codex --remote http://100.x.x.x:20128 --api-key sk-xxx
# תצוגה מקדימה ללא כתיבת קבצים
omniroute setup-codex --remote http://100.x.x.x:20128 --dry-run
# יצירת פרופילים עבור GLM ו-Kimi בלבד
omniroute setup-codex --only glm,kimi
# כתיבה לספרייה מותאמת אישית
omniroute setup-codex --codex-home /path/to/.codexהפקודה מאחזרת את /v1/models, משתמשת בפרופילים מכווננים עבור מודלים מוכרים, מסתמכת על המטא-נתונים שבקטלוג עבור מודלי טקסט תואמים אחרים, וכותבת ~/.codex/<name>.config.toml עבור כל אחד מהם. הפעולה אידמפוטנטית — ניתן להריץ אותה שוב בבטחה.
OmniRoute יכול גם לבצע סנכרון אוטומטי של אותם קובצי פרופיל לאחר שגילוי/ייבוא מוצלח של מודלים מספק משנה את הקטלוג הפעיל. זוהי אפשרות שיש להפעיל במפורש והיא כבויה כברירת מחדל: הפעילו אותה מלוח הבקרה CLI Code ("סנכרון אוטומטי של פרופילי CLI" ← Codex), או הגדירו OMNIROUTE_AUTO_SYNC_CODEX_PROFILES=true (היא מכבדת גם את CLI_ALLOW_CONFIG_WRITES, שמופעל כברירת מחדל). כאשר האפשרות מופעלת, היא כותבת רק קובצי פרופיל נפרדים מסוג ~/.codex/*.config.toml; היא לעולם אינה משנה את ~/.codex/config.toml הפעיל/המוגדר כברירת מחדל, את הגדרות Codex-lb, את האימות או את בחירת הספק.
הפקודה מבצעת בדיקת תקינות של מופע OmniRoute שלכם לפני הפעלת Codex:
# הפעלה מול OmniRoute מקומי (יציאת ברירת המחדל היא 20128)
omniroute launch-codex
# הפעלה עם פרופיל מסוים
omniroute launch-codex --profile kimi-k27
# הפעלה מול VPS מרוחק
omniroute launch-codex --remote http://100.x.x.x:20128/v1 --api-key sk-xxx
# העברת ארגומנטים נוספים אל codex
omniroute launch-codex --profile glm52 -- --yolo "fix this bug"Codex הוא גם יעד של שתי נקודות הכניסה הכלליות המונעות באמצעות מניפסט
(bin/cli/cli-manifest.mjs):
# בורר מודלים אינטראקטיבי ← כותב ~/.codex/<name>.config.toml (TOML, env_key)
omniroute configure codex
# הפעלת codex עם ספק omniroute שמוזרק באמצעות דגלי -c (ללא כתיבת תצורה)
omniroute run codex| גרסה | תכונה |
|---|---|
| v0.138 | העברה ליישום שולחן העבודה (/app), אסימוני גישה אישיים v2, --profile כבורר הפרופיל הבלעדי (טבלאות [profiles] ישנות בתוך הקובץ גורמות לקריסה בעת ההפעלה) |
| v0.139 | web_search = "live" — חיפוש אינטרנט מובנה ממצב קוד; oneOf/allOf בסכמות הכלים של MCP; אבחון סביבה באמצעות codex doctor |
| v0.140 | תצוגת אסימונים /usage בתוך ההפעלה; /import מהפעלות Claude Code; תת-הפקודה codex delete <SESSION_ID>; אימות Amazon Bedrock באמצעות אובייקט aws בתצורת הספק |
| v0.141 | ממסר Noise מוצפן מקצה לקצה עבור מריצים מרוחקים; תיקון SQLite WAL; תמיכה ב-TLS מסוג P-521 |
# חיפוש אינטרנט מובנה (v0.139)
web_search = "live" # "disabled" | "cached" | "live"
# הנחיית מערכת נפרדת למפתח (v0.138)
developer_instructions = "Always prefer functional style."
# הנחיית דחיסה מותאמת אישית
compact_prompt = "Summarise the above as bullet points."
# ניתוב /review למודל זול יותר
review_model = "glm/glm-5-turbo"
# רמת השירות של OpenAI
service_tier = "fast" # "fast" | "flex"[model_providers.omniroute]
base_url = "http://100.x.x.x:20128/v1"
env_key = "OMNIROUTE_API_KEY"
requires_openai_auth = false
# כותרות נוספות סטטיות בכל בקשה
[model_providers.omniroute.http_headers]
"X-Custom-Header" = "value"
# כותרות שנקראות ממשתני סביבה
[model_providers.omniroute.env_http_headers]
"X-Trace-Id" = "TRACE_ID"
# פרמטרים נוספים בשאילתת URL (שימושי עבור api-version של Azure)
[model_providers.omniroute.query_params]
"api-version" = "2024-12-01-preview"[model_providers.bedrock]
base_url = "https://bedrock-runtime.us-east-1.amazonaws.com"
[model_providers.bedrock.aws]
profile = "default" # פרופיל ~/.aws/credentials
region = "us-east-1"[model_providers.omniroute-main]
base_url = "http://192.168.0.1:20128/v1"
env_key = "OMNIROUTE_API_KEY"
[model_providers.omniroute-tailscale]
base_url = "http://100.x.x.x:20128/v1"
env_key = "OMNIROUTE_API_KEY"Codex CLI (config.toml) |
Claude Code (משתנה סביבה) | השפעה |
|---|---|---|
tool_output_token_limit = 32768 |
(לא נחשף ישירות) | מגבלת היסטוריה לכל כלי |
model_context_window = 400000 |
(נקבע לפי המודל) | חלון הקשר |
| — | CLAUDE_CODE_MAX_OUTPUT_TOKENS=65536 |
מספר אסימונים מרבי לתגובה |
# ~/.bashrc — מגבלת האסימונים של Claude Code
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=65536| דגל | קיצור | השפעה |
|---|---|---|
--model <id> |
-m |
דורס את model עבור הפעלה זו |
--profile <name> |
-p |
טוען את ~/.codex/<name>.config.toml |
--config key=value |
-c |
דורס כל שדה ב-config.toml (ניתן לשימוש חוזר) |
--enable <feature> |
— | מפעיל בכפייה דגל תכונה |
--disable <feature> |
— | משבית בכפייה דגל תכונה |
--search |
— | מפעיל חיפוש חי באינטרנט עבור הפעלה זו |
חדש ב-v0.140:
codex delete <SESSION_ID> # מחיקת הפעלה
codex delete <SESSION_ID> --force # דילוג על אישור
codex debug models --bundled # הצגת קטלוג המודלים המובנה כ-JSONבתוך הפעלה אינטראקטיבית:
| פקודה | השפעה |
|---|---|
/model |
פתיחת בורר המודלים |
/usage |
הצגת השימוש באסימונים בהפעלה זו (v0.140) |
/app |
העברת השליטה ליישום שולחן העבודה (v0.138) |
/import |
ייבוא הפעלת Claude Code (v0.140) |
/help |
הצגת כל פקודות הלוכסן |
שתי ברירות מחדל של OmniRoute עלולות לשבש בשקט הפעלות Codex CLI הנמשכות שעות. אף אחת מהן אינה הגדרה של Codex CLI — שתיהן נמצאות בצד של OmniRoute. משתמשים שמעבירים תצורה משרתי proxy קיימים, אשר מקבעים חשבונות ומשביתים ניתוקים עקב חוסר פעילות, נתקלים לעיתים קרובות בשתיהן ומסיקים ש-OmniRoute „אינו מסוגל לתמוך בהפעלה ממושכת”.
| תסמין | סיבה סבירה | הגדרה |
|---|---|---|
| ההפעלה ממשיכה להחליף חשבונות / רציפות מטמון ההנחיות אובדת בין תורים | ה-TTL של שיוך ההפעלה הוא 0 (מושבת) |
sessionAffinityTtlMs |
| החיבור מתנתק באמצע ההסקה ללא הודעה המוצגת ללקוח | מנגנון הפיקוח על חוסר פעילות בזרם הופעל לאחר 10 דקות ללא מקטע מצד המקור | STREAM_IDLE_TIMEOUT_MS |
דיונים קשורים: #7126 (ניתוקים במשימות ממושכות), #5718 (מדוע השיוך מושבת כברירת מחדל). מעקב: #7287.
ברירת מחדל: sessionAffinityTtlMs = 0 (מושבת).
היכן להגדיר זאת
- לוח הבקרה → הגדרות → ניתוב → שיוך הפעלה → TTL של השיוך (שניות) (
ComboDefaultsTab) - לחלופין, בצעו PATCH להגדרות עם
sessionAffinityTtlMsבאלפיות שנייה (טווח Zod הוא0–86_400_000, כלומר עד 24 שעות)
השם שונה ב-#7274 מ-
codexSessionAffinityTtlMs, שהיה ייעודי ל-Codex. המפתח הקודם עדיין מתקבל ככינוי לקריאה בלבד; בתצורות חדשות יש להשתמש ב-sessionAffinityTtlMs. השיוך חל כעת על כל ספק לאחר שה-TTL גדול מ-0, ולא רק על Codex — ראוdocs/architecture/RESILIENCE_GUIDE.md→ שיוך הפעלה.
מה משתבש כשהערך נשאר 0
כל תור בשיחת Codex מרובת-תורים מנותב באופן עצמאי לפי אסטרטגיית השילוב הפעילה, ועשוי להגיע לחשבון שונה בכל תור. הדבר פוגע ברציפות ההפעלה / מטמון ההנחיות בצד המקור. OmniRoute בוחן כותרות הפעלה של Codex (x-codex-session-id / x-session-id / x-omniroute-session) ושדות גוף כגון prompt_cache_key / session_id רק כאשר ה-TTL גדול מ-0 (extractSessionAffinityKey בתוך src/sse/services/auth.ts).
המלצה למשימה יחידה הנמשכת שעות
הגדירו את ה-TTL לערך הגבוה ממשך הזמן הצפוי בפועל של המשימה (המקסימום בממשק המשתמש הוא 86400 שניות = 24 שעות):
| משך המשימה הצפוי | TTL של השיוך (ממשק משתמש, שניות) | sessionAffinityTtlMs |
|---|---|---|
| מספר שעות | 14400 (4 שעות) |
14400000 |
| במשך הלילה / כ-12 שעות | 43200 (12 שעות) |
43200000 |
| יום שלם | 86400 (24 שעות, המקסימום) |
86400000 |
ההצטרפות היא מכוונת: השבתת השיוך מעדיפה איזון עומסים בין חשבונות; הפעלתו מעדיפה רציפות עבור הפעלת סוכן ממושכת אחת. מדריך זה אינו משנה את ברירת המחדל — מפעילים שמריצים משימות Codex ממושכות חייבים להפעיל את האפשרות במפורש.
ברירת מחדל: STREAM_IDLE_TIMEOUT_MS = 600000 (10 דקות). כאשר אינו מוגדר, הוא יורש את הערך מ-REQUEST_TIMEOUT_MS; ערך הבסיס המשותף הוא גם 600000. ראו docs/guides/SETUP_GUIDE.md → פסקי זמן.
מה משתבש עם ברירת המחדל
סבב הנמקה / כלי של Codex שנשאר שקט במשך יותר מ־10 דקות ללא מקטע אמיתי ממקור upstream נסגר בכוח על ידי מנגנון מעקב חוסר הפעילות של SSE (open-sse/utils/stream.ts). לעיתים קרובות הלקוח רואה ניתוק רגיל של החיבור — מצב התואם ל„נעצר אוטומטית ללא כל הודעה”.
פרט קריטי: פעימת הלב הסינתטית של SSE ב־OmniRoute אינה מאפסת את שעון חוסר הפעילות. רק מקטע גוף אמיתי ממקור upstream מעדכן את lastChunkTime. מנקודת מבטו של מנגנון המעקב, מודל שקט שעדיין „חושב” נראה בדיוק כמו מקור upstream שנתקע.
חוסר פעילות קשור בגוף של Undici: FETCH_BODY_TIMEOUT_MS (גם הוא משתמש כברירת מחדל באותו קו בסיס של 10 דקות; 0 משבית אותו). עבור הזרמה, FETCH_TIMEOUT_MS מכסה רק את הקמת החיבור / הכותרות הראשונות — לאחר שהזרם פעיל, תקיעות נשלטות על ידי STREAM_IDLE_TIMEOUT_MS ו־FETCH_BODY_TIMEOUT_MS.
מומלץ עבור משימה יחידה הנמשכת כמה שעות
בסביבת התהליך של OmniRoute (.env / compose / systemd):
# השבתת מגבלות חוסר הפעילות של הזרם ושל גוף הבקשה עבור סבבי הנמקה ארוכים
STREAM_IDLE_TIMEOUT_MS=0
FETCH_BODY_TIMEOUT_MS=0לחלופין, העלו אותן מעבר לפרק הזמן השקט הארוך ביותר הצפוי (הערכים הם באלפיות שנייה):
# דוגמה: לאפשר עד שעתיים של שקט בין מקטעים ממקור upstream
STREAM_IDLE_TIMEOUT_MS=7200000
FETCH_BODY_TIMEOUT_MS=7200000הפעילו מחדש את OmniRoute לאחר שינוי משתני הסביבה האלה.
- קיבוע החשבון: לוח הבקרה → הגדרות → ניתוב → שיוך הפעלה → Affinity TTL =
43200 (12 שעות) או86400 (24 שעות לכל היותר). - העלאת / השבתת מגבלות חוסר הפעילות בסביבה של OmniRoute:
STREAM_IDLE_TIMEOUT_MS=0
FETCH_BODY_TIMEOUT_MS=0- השאירו את
config.tomlהרגיל של Codex (wire_api = "responses",base_urlנכון,OMNIROUTE_API_KEY) — בצד של Codex אין אפשרויות שיוך/חוסר פעילות עבור שתי ההתנהגויות האלה. - הפעילו מחדש את OmniRoute, ולאחר מכן התחילו את משימת Codex הארוכה.
| אפשרות | ברירת המחדל להפצה | לשנות במדריך הזה? |
|---|---|---|
sessionAffinityTtlMs |
0 (כבוי) |
לא — נשאר אופציונלי (איזון עומסים לעומת רציפות; ראו דיון #5718) |
STREAM_IDLE_TIMEOUT_MS |
600000 (10 דקות) |
לא — נשאר 10 דקות לתעבורה כללית; מפעילי Codex במשימות ארוכות מעלים או משביתים אותו |
שינוי גלובלי של אחת מברירות המחדל ישנה את ההתנהגות עבור כל לקוח של מופע, ולא רק עבור Codex. תעדו את האפשרויות; השאירו את ברירות המחדל ללא שינוי עד שהחלטה מפורשת של המפעיל תורה אחרת.
כאשר מנגנון המעקב אחר חוסר פעילות מופעל, OmniRoute רושם שורה במבנה הבא:
[STREAM] Idle timeout: no data from codex for 600000ms (model: cx/gpt-5.5)
חפשו באמצעות Grep את Idle timeout: no data from (או את הקוד stream_idle_timeout / שם השגיאה StreamIdleTimeoutError). מקטע הספק הוא הערך שבו OmniRoute השתמש עבור הבקשה הזו (codex, מזהה ספק אחר, או provider אם אינו ידוע) — הוא לא תמיד המחרוזת המילולית codex.
Error: wire_api = "chat" is no longer supported
הסירו את wire_api = "chat" מהתצורה שלכם. הגדירו wire_api = "responses" או השמיטו את השדה (מאז v0.138 ברירת המחדל היא "responses").
Error: model not found
ודאו שהמודל קיים ב-OmniRoute עם הקידומת הנכונה. השתמשו ב-omniroute models list או פתחו את /dashboard/providers/<provider>.
Authentication error
ודאו שהמשתנה OMNIROUTE_API_KEY מיוצא: echo $OMNIROUTE_API_KEY.
ERROR: Missing environment variable: OMNIROUTE_API_KEY
Codex מוודא שמשתנה הסביבה קיים לפני שליחת הבקשה הראשונה. יצאו
מפתח אמיתי עבור שרתים מוגנים, או ערך מציין מיקום שאינו ריק, כגון
OMNIROUTE_API_KEY=local, כאשר מופע OmniRoute המקומי שלכם אינו
דורש אימות. הפעילו מחדש את המעטפת אם הוספתם אותו ל-~/.bashrc או ל-~/.zshrc.
Connection refused
ודאו ש-OmniRoute פועל וששם המארח/היציאה של base_url נכונים עבור הרשת שלכם (מקומית לעומת Tailscale לעומת VPS).
ההפעלה קורסת סמוך למגבלת ההקשר
הגדירו במפורש את model_context_window ואת model_auto_compact_token_limit. עיינו בטבלת חלון ההקשר שלעיל.
הדחיסה מופעלת מאוחר מדי
הנמיכו את model_auto_compact_token_limit ל-80–85% מהחלון. לעולם אל תגדירו ערך מעל 90%.
הפרופיל אינו נטען (-p <name> זוכה להתעלמות ללא הודעה)
ודאו שהקובץ קיים ב-~/.codex/<name>.config.toml (ללא הקידומת profile-). הריצו ls ~/.codex/*.config.toml.
משימת Codex ארוכה מתנתקת באמצע ההרצה / מחליפה חשבונות בין תורות
עיינו במשימות ארוכות טווח. הפעילו שיוך הפעלה (TTL ארוך ממשך המשימה) והגדילו או השביתו את STREAM_IDLE_TIMEOUT_MS / FETCH_BODY_TIMEOUT_MS. חפשו ביומני OmniRoute באמצעות grep את Idle timeout: no data from.