🌐 **Languages:** 🇺🇸 [English](../../TROUBLESHOOTING.md) | 🇧🇷 [Português (Brasil)](../pt-BR/TROUBLESHOOTING.md) | 🇪🇸 [Español](../es/TROUBLESHOOTING.md) | 🇫🇷 [Français](../fr/TROUBLESHOOTING.md) | 🇮🇹 [Italiano](../it/TROUBLESHOOTING.md) | 🇷🇺 [Русский](../ru/TROUBLESHOOTING.md) | 🇨🇳 [中文 (简体)](../zh-CN/TROUBLESHOOTING.md) | 🇩🇪 [Deutsch](../de/TROUBLESHOOTING.md) | 🇮🇳 [हिन्दी](../in/TROUBLESHOOTING.md) | 🇹🇭 [ไทย](../th/TROUBLESHOOTING.md) | 🇺🇦 [Українська](../uk-UA/TROUBLESHOOTING.md) | 🇸🇦 [العربية](../ar/TROUBLESHOOTING.md) | 🇯🇵 [日本語](../ja/TROUBLESHOOTING.md) | 🇻🇳 [Tiếng Việt](../vi/TROUBLESHOOTING.md) | 🇧🇬 [Български](../bg/TROUBLESHOOTING.md) | 🇩🇰 [Dansk](../da/TROUBLESHOOTING.md) | 🇫🇮 [Suomi](../fi/TROUBLESHOOTING.md) | 🇮🇱 [עברית](../he/TROUBLESHOOTING.md) | 🇭🇺 [Magyar](../hu/TROUBLESHOOTING.md) | 🇮🇩 [Bahasa Indonesia](../id/TROUBLESHOOTING.md) | 🇰🇷 [한국어](../ko/TROUBLESHOOTING.md) | 🇲🇾 [Bahasa Melayu](../ms/TROUBLESHOOTING.md) | 🇳🇱 [Nederlands](../nl/TROUBLESHOOTING.md) | 🇳🇴 [Norsk](../no/TROUBLESHOOTING.md) | 🇵🇹 [Português (Portugal)](../pt/TROUBLESHOOTING.md) | 🇷🇴 [Română](../ro/TROUBLESHOOTING.md) | 🇵🇱 [Polski](../pl/TROUBLESHOOTING.md) | 🇸🇰 [Slovenčina](../sk/TROUBLESHOOTING.md) | 🇸🇪 [Svenska](../sv/TROUBLESHOOTING.md) | 🇵🇭 [Filipino](../phi/TROUBLESHOOTING.md)

#समस्या निवारण

ओम्निरूट के लिए सामान्य समस्याएं और समाधान।

---

## त्वरित सुधार

| समस्या                                 | समाधान                                                                          |
| -------------------------------------- | ------------------------------------------------------------------------------- |
| पहला लॉगिन काम नहीं कर रहा             | `.env` में `INITIAL_PASSWORD` को जांचें (डिफ़ॉल्ट: `123456`)                    |
| गलत पोर्ट पर डैशबोर्ड खुलता है         | `PORT=20128` और `NEXT_PUBLIC_BASE_URL=http://localhost:20128` सेट करें          |
| `logs/` के अंतर्गत कोई अनुरोध लॉग नहीं | `ENABLE_REQUEST_LOGS=true` सेट करें                                             |
| EACCES: अनुमति अस्वीकृत                | `~/.omniroute` को ओवरराइड करने के लिए `DATA_DIR=/path/to/writable/dir` सेट करें |
| रूटिंग रणनीति सहेजी नहीं जा रही        | v1.4.11+ पर अपडेट करें (सेटिंग्स दृढ़ता के लिए ज़ोड स्कीमा फिक्स)               |

---

## प्रदाता मुद्दे

### "भाषा मॉडल ने संदेश प्रदान नहीं किया"

**कारण:** प्रदाता कोटा समाप्त हो गया।

**ठीक करें:**

1. डैशबोर्ड कोटा ट्रैकर की जाँच करें
2. फ़ॉलबैक टियर वाले कॉम्बो का उपयोग करें
3. सस्ते/मुफ़्त स्तर पर स्विच करें

### दर सीमित करना

**कारण:** सदस्यता कोटा समाप्त हो गया।

**ठीक करें:**

- फ़ॉलबैक जोड़ें: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
- सस्ते बैकअप के रूप में GLM/MiniMax का उपयोग करें

### OAuth टोकन समाप्त हो गया

ओम्निरूट स्वचालित रूप से टोकन ताज़ा करता है। यदि समस्याएँ बनी रहती हैं:

1. डैशबोर्ड → प्रदाता → पुनः कनेक्ट करें
2. प्रदाता कनेक्शन हटाएं और पुनः जोड़ें

---

## बादल मुद्दे

### क्लाउड सिंक त्रुटियाँ

1. अपने चल रहे उदाहरण के लिए `BASE_URL` अंक सत्यापित करें (उदाहरण के लिए, `http://localhost:20128`)
2. अपने क्लाउड एंडपॉइंट पर `CLOUD_URL` पॉइंट सत्यापित करें (जैसे, `https://omniroute.dev`)
3. `NEXT_PUBLIC_*` मानों को सर्वर-साइड मानों के साथ संरेखित रखें

### क्लाउड `stream=false` 500 लौटाता है

**लक्षण:** गैर-स्ट्रीमिंग कॉल के लिए क्लाउड एंडपॉइंट पर `Unexpected token 'd'...`।

**कारण:** अपस्ट्रीम एसएसई पेलोड लौटाता है जबकि ग्राहक JSON की अपेक्षा करता है।

**समाधान:** क्लाउड डायरेक्ट कॉल के लिए `stream=true` का उपयोग करें। स्थानीय रनटाइम में SSE→JSON फ़ॉलबैक शामिल है।

### क्लाउड कहता है कनेक्टेड लेकिन "अमान्य एपीआई कुंजी"

1. स्थानीय डैशबोर्ड से एक नई कुंजी बनाएं (`/api/keys`)
2. क्लाउड सिंक चलाएँ: क्लाउड सक्षम करें → अभी सिंक करें
3. पुरानी/गैर-सिंक की गई कुंजियाँ अभी भी क्लाउड पर `401` लौटा सकती हैं

---

## डॉकर मुद्दे

### सीएलआई टूल शो स्थापित नहीं है

1. रनटाइम फ़ील्ड जांचें: `curl http://localhost:20128/api/cli-tools/runtime/codex | jq`
2. पोर्टेबल मोड के लिए: छवि लक्ष्य `runner-cli` (बंडल सीएलआई) का उपयोग करें
3. होस्ट माउंट मोड के लिए: `CLI_EXTRA_PATHS` सेट करें और होस्ट बिन निर्देशिका को केवल पढ़ने के लिए माउंट करें
4. यदि `installed=true` और `runnable=false`: बाइनरी पाई गई लेकिन स्वास्थ्य जांच विफल रही

### त्वरित रनटाइम सत्यापन

```bash
curl -s http://localhost:20128/api/cli-tools/codex-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
curl -s http://localhost:20128/api/cli-tools/claude-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
curl -s http://localhost:20128/api/cli-tools/openclaw-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
```

---

## लागत संबंधी मुद्दे

### उच्च लागत

1. डैशबोर्ड → उपयोग में उपयोग के आँकड़े जाँचें
2. प्राथमिक मॉडल को जीएलएम/मिनीमैक्स पर स्विच करें
3. गैर-महत्वपूर्ण कार्यों के लिए फ्री टियर (मिथुन सीएलआई, आईफ्लो) का उपयोग करें
4. प्रति एपीआई कुंजी लागत बजट निर्धारित करें: डैशबोर्ड → एपीआई कुंजी → बजट

---

## डिबगिंग

### अनुरोध लॉग सक्षम करें

अपनी `.env` फ़ाइल में `ENABLE_REQUEST_LOGS=true` सेट करें। लॉग `logs/` निर्देशिका के अंतर्गत दिखाई देते हैं।

### प्रदाता के स्वास्थ्य की जाँच करें

### रनटाइम स्टोरेज

- मुख्य स्थिति: `${DATA_DIR}/db.json` (प्रदाता, कॉम्बो, उपनाम, कुंजियाँ, सेटिंग्स)
- उपयोग: `${DATA_DIR}/usage.json`, `${DATA_DIR}/log.txt`, `${DATA_DIR}/call_logs/`
- अनुरोध लॉग: `<repo>/logs/...` (जब `ENABLE_REQUEST_LOGS=true`)

---

## सर्किट ब्रेकर मुद्दे

### प्रदाता खुली स्थिति में फंसा हुआ है

जब किसी प्रदाता का सर्किट ब्रेकर खुला होता है, तो कूलडाउन समाप्त होने तक अनुरोध अवरुद्ध हो जाते हैं।

**ठीक करें:**

1. **डैशबोर्ड → सेटिंग्स → लचीलापन** पर जाएं
2. प्रभावित प्रदाता के लिए सर्किट ब्रेकर कार्ड की जाँच करें
3. सभी ब्रेकर साफ़ करने के लिए **रीसेट ऑल** पर क्लिक करें, या कूलडाउन समाप्त होने तक प्रतीक्षा करें
4. रीसेट करने से पहले सत्यापित करें कि प्रदाता वास्तव में उपलब्ध है

### प्रदाता सर्किट ब्रेकर को ट्रिप करता रहता है

यदि कोई प्रदाता बार-बार खुली स्थिति में प्रवेश करता है:

1. विफलता पैटर्न के लिए **डैशबोर्ड → स्वास्थ्य → प्रदाता स्वास्थ्य** की जाँच करें
2. **सेटिंग्स → लचीलापन → प्रदाता प्रोफाइल** पर जाएं और विफलता सीमा बढ़ाएं
3. जांचें कि क्या प्रदाता ने एपीआई सीमाएं बदल दी हैं या पुनः प्रमाणीकरण की आवश्यकता है
4. विलंबता टेलीमेट्री की समीक्षा करें - उच्च विलंबता टाइमआउट-आधारित विफलताओं का कारण बन सकती है

---

## ऑडियो ट्रांस्क्रिप्शन मुद्दे

### "असमर्थित मॉडल" त्रुटि

- सुनिश्चित करें कि आप सही उपसर्ग का उपयोग कर रहे हैं: `deepgram/nova-3` या `assemblyai/best`
- सत्यापित करें कि प्रदाता **डैशबोर्ड → प्रदाता** में जुड़ा हुआ है

### प्रतिलेखन खाली या विफल रहता है

- समर्थित ऑडियो प्रारूप जांचें: `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`
- सत्यापित करें कि फ़ाइल का आकार प्रदाता सीमा के भीतर है (आमतौर पर <25MB)
- प्रदाता कार्ड में प्रदाता एपीआई कुंजी वैधता की जांच करें

---

## अनुवादक डिबगिंग

प्रारूप अनुवाद समस्याओं को डीबग करने के लिए **डैशबोर्ड → अनुवादक** का उपयोग करें:

| मोड              | कब उपयोग करें                                                                                                 |
| ---------------- | ------------------------------------------------------------------------------------------------------------- |
| **खेल का मैदान** | इनपुट/आउटपुट स्वरूपों की साथ-साथ तुलना करें - यह कैसे अनुवादित होता है यह देखने के लिए एक असफल अनुरोध चिपकाएँ |
| **चैट परीक्षक**  | लाइव संदेश भेजें और हेडर सहित पूर्ण अनुरोध/प्रतिक्रिया पेलोड का निरीक्षण करें                                 |
| **टेस्ट बेंच**   | यह पता लगाने के लिए कि कौन से अनुवाद टूटे हुए हैं, सभी प्रारूप संयोजनों में बैच परीक्षण चलाएँ                 |
| **लाइव मॉनिटर**  | रुक-रुक कर होने वाली अनुवाद समस्याओं को पकड़ने के लिए वास्तविक समय अनुरोध प्रवाह देखें                        |

### सामान्य प्रारूप मुद्दे

- **सोच टैग दिखाई नहीं दे रहे हैं** - जांचें कि क्या लक्ष्य प्रदाता सोच और सोच बजट सेटिंग का समर्थन करता है
- **टूल कॉल ड्रॉपिंग** — कुछ प्रारूप अनुवाद असमर्थित फ़ील्ड को हटा सकते हैं; खेल का मैदान मोड में सत्यापित करें
- **सिस्टम प्रॉम्प्ट गायब** — क्लाउड और जेमिनी हैंडल सिस्टम प्रॉम्प्ट अलग-अलग होते हैं; अनुवाद आउटपुट की जाँच करें
- **एसडीके ऑब्जेक्ट के बजाय कच्ची स्ट्रिंग लौटाता है** - v1.1.0 में फिक्स्ड: रिस्पॉन्स सैनिटाइज़र अब गैर-मानक फ़ील्ड्स (`x_groq`, `usage_breakdown`, आदि) को हटा देता है जो OpenAI SDK पायडेंटिक सत्यापन विफलताओं का कारण बनता है
- **GLM/ERNIE `system` भूमिका को अस्वीकार करता है** - v1.1.0 में फिक्स्ड: रोल नॉर्मलाइज़र स्वचालित रूप से असंगत मॉडल के लिए सिस्टम संदेशों को उपयोगकर्ता संदेशों में मर्ज कर देता है
- **`developer` भूमिका पहचानी नहीं गई** - v1.1.0 में ठीक किया गया: गैर-ओपनएआई प्रदाताओं के लिए स्वचालित रूप से `system` में परिवर्तित हो गया
- **`json_schema` मिथुन राशि के साथ काम नहीं कर रहा** - v1.1.0 में ठीक किया गया: `response_format` अब मिथुन राशि के `responseMimeType` + `responseSchema` में परिवर्तित हो गया है

---

## लचीलापन सेटिंग्स

### स्वचालित दर-सीमा ट्रिगर नहीं हो रही है

- ऑटो दर-सीमा केवल एपीआई कुंजी प्रदाताओं पर लागू होती है (OAuth/सदस्यता पर नहीं)
- सत्यापित करें **सेटिंग्स → लचीलापन → प्रदाता प्रोफाइल** में ऑटो-दर-सीमा सक्षम है
- जांचें कि क्या प्रदाता `429` स्टेटस कोड या `Retry-After` हेडर लौटाता है

### ट्यूनिंग घातीय बैकऑफ़

प्रदाता प्रोफ़ाइल इन सेटिंग्स का समर्थन करती हैं:

- **आधार विलंब** — पहली विफलता के बाद प्रारंभिक प्रतीक्षा समय (डिफ़ॉल्ट: 1 सेकंड)
- **अधिकतम विलंब** — अधिकतम प्रतीक्षा समय सीमा (डिफ़ॉल्ट: 30s)
- **गुणक** - लगातार विफलता के बाद विलंब को कितना बढ़ाया जाए (डिफ़ॉल्ट: 2x)

### वज्र-विरोधी झुंड

जब कई समवर्ती अनुरोध एक दर-सीमित प्रदाता से टकराते हैं, तो ओमनीरूट अनुरोधों को क्रमबद्ध करने और कैस्केडिंग विफलताओं को रोकने के लिए म्यूटेक्स + ऑटो रेट-लिमिटिंग का उपयोग करता है। यह एपीआई कुंजी प्रदाताओं के लिए स्वचालित है।

---

## अभी भी अटका हुआ है?

- **गिटहब मुद्दे**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
- **आर्किटेक्चर**: आंतरिक विवरण के लिए [link](ARCHITECTURE.md) देखें
- **एपीआई संदर्भ**: सभी समापन बिंदुओं के लिए [link](API_REFERENCE.md) देखें
- **स्वास्थ्य डैशबोर्ड**: वास्तविक समय प्रणाली की स्थिति के लिए **डैशबोर्ड → स्वास्थ्य** जांचें
- **अनुवादक**: प्रारूप संबंधी समस्याओं को डीबग करने के लिए **डैशबोर्ड → अनुवादक** का उपयोग करें
