---
read_when:
    - आपको कनेक्टिविटी/प्रमाणीकरण संबंधी समस्याएँ हैं और आप मार्गदर्शित समाधान चाहते हैं
    - आपने अपडेट किया है और इसकी सामान्य जाँच चाहते हैं
summary: '`openclaw doctor` के लिए CLI संदर्भ (स्वास्थ्य जाँच + निर्देशित सुधार)'
title: डॉक्टर
x-i18n:
    generated_at: "2026-07-27T17:34:32Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: e2b0aa9b51d7bccd4357d3ec747be514a0245b44a90e6e6c7ea789ab68420465
    source_path: cli/doctor.md
    workflow: 16
---

# `openclaw doctor`

Gateway, चैनलों, plugins, skills, मॉडल रूटिंग, स्थानीय स्थिति और कॉन्फ़िग माइग्रेशन के लिए स्वास्थ्य जाँच और त्वरित सुधार। जब भी कोई चीज़ अपेक्षा के अनुरूप काम न कर रही हो और आप चाहते हों कि एक कमांड बताए कि क्या गलत है, इसका उपयोग करें।

जब Gateway स्थिति अवनत SecretRef स्वामियों की रिपोर्ट करती है, तो doctor प्रत्येक कोल्ड या स्टेल स्वामी, प्रभावित कॉन्फ़िग पथ, संशोधित कारण और `openclaw secrets reload` पुनः प्रयास कमांड के साथ **सीक्रेट रनटाइम अवनति** चेतावनी दिखाता है।

जब चैनल इनग्रेस इवेंट डेड-लेटर किए जाते हैं, तो doctor प्रत्येक प्रभावित चैनल अकाउंट का नाम बताता है और जाँच तथा पुनर्प्राप्ति के लिए [`openclaw channels dead-letters list`](/hi/cli/channels#inbound-dead-letters) की ओर इंगित करता है।

संबंधित:

- समस्या निवारण: [समस्या निवारण](/hi/gateway/troubleshooting)
- सुरक्षा ऑडिट: [सुरक्षा](/hi/gateway/security)

## कार्यप्रणालियाँ

Doctor की पाँच कार्यप्रणालियाँ हैं:

| कार्यप्रणाली                   | कमांड                                   | व्यवहार                                                                        |
| ------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------- |
| निरीक्षण                   | `openclaw doctor`                         | उपयोगकर्ता-केंद्रित जाँच और निर्देशित प्रॉम्प्ट।                                       |
| सुधार                    | `openclaw doctor --fix`                   | समर्थित सुधार लागू करता है और गैर-इंटरैक्टिव सुधार सुरक्षित न होने पर प्रॉम्प्ट का उपयोग करता है। |
| लिंट                      | `openclaw doctor --lint`                  | CI, प्रीफ़्लाइट और समीक्षा गेट के लिए केवल-पढ़ने योग्य संरचित निष्कर्ष।              |
| साझा SQLite रखरखाव | `openclaw doctor --state-sqlite compact`  | कैनोनिकल साझा स्थिति DB को स्पष्ट रूप से चेकपॉइंट, कॉम्पैक्ट और सत्यापित करता है।   |
| सत्र SQLite माइग्रेशन  | `openclaw doctor --session-sqlite <mode>` | सत्र स्थिति का निरीक्षण, आयात, सत्यापन, कॉम्पैक्शन, पुनर्प्राप्ति या पुनर्स्थापन करता है।    |

जब ऑटोमेशन को स्थिर परिणाम चाहिए, तो `--lint` को प्राथमिकता दें। जब कोई मानव ऑपरेटर चाहता हो कि doctor कॉन्फ़िग या स्थिति को संपादित करे, तो `--fix` को प्राथमिकता दें।

## उदाहरण

```bash
openclaw doctor
openclaw doctor --lint
openclaw doctor --lint --json
openclaw doctor --lint --severity-min warning
openclaw doctor --lint --all
openclaw doctor --lint --allow-exec
openclaw doctor --deep
openclaw doctor --fix
openclaw doctor --fix --non-interactive
openclaw doctor --generate-gateway-token
openclaw doctor --post-upgrade
openclaw doctor --post-upgrade --json
openclaw doctor --state-sqlite compact
openclaw doctor --state-sqlite compact --json
openclaw doctor --session-sqlite inspect --session-sqlite-all-agents
openclaw doctor --session-sqlite dry-run --session-sqlite-agent main --json
openclaw doctor --session-sqlite import --session-sqlite-all-agents
openclaw doctor --session-sqlite validate --session-sqlite-all-agents --json
openclaw doctor --session-sqlite compact --session-sqlite-all-agents
openclaw doctor --session-sqlite recover --github-issue
openclaw doctor --session-sqlite restore --session-sqlite-all-agents
```

चैनल-विशिष्ट अनुमतियों के लिए `doctor` के बजाय चैनल प्रोब का उपयोग करें:

```bash
openclaw channels capabilities --channel discord --target channel:<channel-id>
openclaw channels status --probe
```

`channels capabilities` किसी विशिष्ट चैनल लक्ष्य के लिए बॉट की प्रभावी अनुमतियों की रिपोर्ट करता है। `channels status --probe` सभी कॉन्फ़िगर किए गए चैनलों और वॉइस ऑटो-जॉइन लक्ष्यों का ऑडिट करता है।

## विकल्प

| विकल्प                          | प्रभाव                                                                                                                                                                                  |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--no-workspace-suggestions`    | वर्कस्पेस मेमोरी/खोज सुझाव अक्षम करें।                                                                                                                                            |
| `--yes`                         | प्रॉम्प्ट किए बिना डिफ़ॉल्ट स्वीकार करें।                                                                                                                                                      |
| `--repair` / `--fix`            | प्रॉम्प्ट किए बिना अनुशंसित गैर-सेवा सुधार लागू करें (`--fix` एक उपनाम है)। Gateway सेवा इंस्टॉलेशन/पुनर्लेखन के लिए अब भी इंटरैक्टिव पुष्टि या स्पष्ट `gateway` कमांड आवश्यक हैं। |
| `--force`                       | कस्टम सेवा कॉन्फ़िग को ओवरराइट करने सहित आक्रामक सुधार लागू करें।                                                                                                                  |
| `--non-interactive`             | प्रॉम्प्ट के बिना चलाएँ; केवल सुरक्षित माइग्रेशन और गैर-सेवा सुधार।                                                                                                                      |
| `--generate-gateway-token`      | Gateway टोकन जनरेट और कॉन्फ़िगर करें।                                                                                                                                                 |
| `--allow-exec`                  | सीक्रेट सत्यापित करते समय doctor को कॉन्फ़िगर किए गए `exec` SecretRefs निष्पादित करने दें।                                                                                                           |
| `--deep`                        | अतिरिक्त Gateway इंस्टॉलेशन के लिए सिस्टम सेवाओं को स्कैन करें; हाल के Gateway सुपरवाइज़र रीस्टार्ट हैंडऑफ़ की रिपोर्ट करें।                                                                                     |
| `--lint`                        | आधुनिकीकृत स्वास्थ्य जाँच केवल-पढ़ने योग्य मोड में चलाएँ और नैदानिक निष्कर्ष उत्सर्जित करें।                                                                                                            |
| `--post-upgrade`                | अपग्रेड के बाद plugin संगतता प्रोब चलाएँ; निष्कर्ष stdout पर जाते हैं; कोई त्रुटि-स्तरीय निष्कर्ष मौजूद होने पर एग्ज़िट कोड 1।                                                                 |
| `--state-sqlite <mode>`         | स्पष्ट साझा स्थिति SQLite रखरखाव चलाएँ। एकमात्र मोड `compact` है।                                                                                                               |
| `--session-sqlite <mode>`       | लक्षित सत्र SQLite माइग्रेशन मोड चलाएँ: `inspect`, `dry-run`, `import`, `validate`, `compact`, `recover`, या `restore`।                                                         |
| `--session-sqlite-store <path>` | `--session-sqlite` के साथ: एक पुराना `sessions.json` स्टोर पथ चुनें।                                                                                                                  |
| `--session-sqlite-agent <id>`   | `--session-sqlite` के साथ: एक कॉन्फ़िगर किया गया एजेंट चुनें।                                                                                                                                   |
| `--session-sqlite-all-agents`   | `--session-sqlite` के साथ: कॉन्फ़िगर और खोजे गए एजेंट स्टोर चुनें।                                                                                                                 |
| `--github-issue`                | `--session-sqlite recover` के साथ: स्वच्छ किया गया openclaw/openclaw समस्या रिपोर्ट तैयार करें; doctor इसे `--yes` या इंटरैक्टिव पुष्टि के बाद `gh` से बनाता है।                             |
| `--json`                        | `--lint` के साथ: JSON निष्कर्ष। `--post-upgrade` के साथ: `{ probesRun, findings }`। `--state-sqlite` या `--session-sqlite` के साथ: JSON के रूप में रखरखाव रिपोर्ट।                            |
| `--severity-min <level>`        | `--lint` के साथ: `info`, `warning`, या `error` से नीचे के निष्कर्ष हटा दें।                                                                                                                       |
| `--all`                         | `--lint` के साथ: डिफ़ॉल्ट सेट से बाहर रखी गई ऑप्ट-इन जाँचों सहित सभी पंजीकृत जाँच चलाएँ।                                                                                        |
| `--skip <id>`                   | `--lint` के साथ: कोई जाँच आईडी छोड़ें। दोहराया जा सकता है।                                                                                                                                             |
| `--only <id>`                   | `--lint` के साथ: केवल दी गई जाँच आईडी चलाएँ। दोहराया जा सकता है।                                                                                                                              |

`--severity-min`, `--all`, `--only`, और `--skip` केवल `--lint` के साथ स्वीकार किए जाते हैं; `--json` को `--lint`, `--post-upgrade`, `--state-sqlite`, और `--session-sqlite` के साथ स्वीकार किया जाता है।

## लिंट मोड

`openclaw doctor --lint` केवल-पढ़ने योग्य है: कोई प्रॉम्प्ट नहीं, कोई सुधार नहीं, कोई कॉन्फ़िग/स्थिति पुनर्लेखन नहीं।

```bash
openclaw doctor --lint
openclaw doctor --lint --severity-min warning
openclaw doctor --lint --json
openclaw doctor --lint --all
openclaw doctor --lint --allow-exec
openclaw doctor --lint --only core/doctor/gateway-config --json
openclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min info
```

उपयोगकर्ता के लिए आउटपुट संक्षिप्त है:

```text
doctor --lint: 6 जाँच चलाई गईं, 1 निष्कर्ष मिला
  [warning] core/doctor/gateway-config gateway.mode - gateway.mode सेट नहीं है; Gateway प्रारंभ अवरुद्ध हो जाएगा।
    सुधार: `openclaw configure` चलाएँ और Gateway मोड (local/remote) सेट करें, या `openclaw config set gateway.mode local` चलाएँ।
```

JSON आउटपुट स्क्रिप्टिंग इंटरफ़ेस है:

```json
{
  "ok": false,
  "checksRun": 5,
  "checksSkipped": 0,
  "findings": [
    {
      "checkId": "core/doctor/gateway-config",
      "severity": "warning",
      "message": "gateway.mode सेट नहीं है; Gateway प्रारंभ अवरुद्ध हो जाएगा।",
      "path": "gateway.mode",
      "fixHint": "`openclaw configure` चलाएँ और Gateway मोड (local/remote) सेट करें, या `openclaw config set gateway.mode local` चलाएँ।"
    }
  ]
}
```

एग्ज़िट कोड:

| कोड | अर्थ                                                       |
| ---- | ------------------------------------------------------------- |
| `0`  | चयनित गंभीरता सीमा पर या उससे ऊपर कोई निष्कर्ष नहीं।      |
| `1`  | कम से कम एक निष्कर्ष चयनित सीमा को पूरा करता है।            |
| `2`  | लिंट निष्कर्ष उत्पन्न होने से पहले कमांड/रनटाइम विफलता। |

`--severity-min` यह नियंत्रित करता है कि कौन-से निष्कर्ष दिखें और एग्ज़िट सीमा क्या हो: कम गंभीरता वाले `info`/`warning` निष्कर्ष मौजूद होने पर भी `openclaw doctor --lint --severity-min error` कुछ भी प्रदर्शित किए बिना `0` के साथ बाहर निकल सकता है।

`--all` यह नियंत्रित करता है कि गंभीरता फ़िल्टरिंग से पहले कौन-सी जाँच चुनी जाएँ। डिफ़ॉल्ट लिंट रन उन जाँचों को बाहर रखता है जो गहरी, ऐतिहासिक या सुधार योग्य पुराने अवशेष दिखाने की अधिक संभावना वाली हैं; पूरी सूची के लिए `--all` का उपयोग करें। `--only <id>` सबसे सटीक चयनकर्ता है और आईडी द्वारा किसी भी पंजीकृत जाँच को चला सकता है।

`core/doctor/local-audio-acceleration` किसी स्पीच मॉडल को लोड किए बिना स्वतः चयनित स्थानीय STT कमांड, सक्षम/अनुरोधित/देखे गए बैकएंड के अलग-अलग प्रमाण और फ़ॉलबैक क्रम की रिपोर्ट करता है। यह एक सूचनात्मक निष्कर्ष उत्सर्जित करता है, इसलिए इसे प्रदर्शित करने के लिए `--severity-min info` शामिल करें।

## संरचित स्वास्थ्य जाँच

आधुनिक doctor जाँच एक छोटे विभाजित अनुबंध का उपयोग करती हैं:

```ts
detect(ctx, scope?) -> HealthFinding[]
repair?(ctx, findings) -> HealthRepairResult
```

`detect()`, `doctor --lint` को संचालित करता है। `repair()` वैकल्पिक है और केवल `doctor --fix` / `doctor --repair` के अंतर्गत चलता है। जो जाँच अभी तक इस स्वरूप में माइग्रेट नहीं हुई हैं, वे अब भी पुराने doctor योगदान प्रवाह का उपयोग करती हैं।

मरम्मत संदर्भ `dryRun`/`diff` अनुरोध ले जा सकते हैं; मरम्मत परिणाम संरचित `diffs` (कॉन्फ़िगरेशन/फ़ाइल संपादन) और `effects` (सेवा, प्रक्रिया, पैकेज, स्थिति या अन्य दुष्प्रभाव) लौटा सकते हैं, ताकि परिवर्तित जाँचें म्यूटेशन योजना को `detect()` में स्थानांतरित किए बिना `doctor --fix --dry-run` की ओर बढ़ सकें।

`repair()`, `status: "repaired" | "skipped" | "failed"` की रिपोर्ट करता है (स्थिति न देने का अर्थ `repaired` है)। जब मरम्मत `skipped` या `failed` लौटाती है, तो Doctor कारण की रिपोर्ट करता है और उस जाँच का सत्यापन छोड़ देता है। सफल मरम्मत के बाद, Doctor मरम्मत किए गए निष्कर्षों के दायरे में `detect()` को फिर से चलाता है; यदि निष्कर्ष अब भी मौजूद है, तो Doctor परिवर्तन को पूर्ण मानने के बजाय मरम्मत चेतावनी की रिपोर्ट करता है।

एक निष्कर्ष में ये शामिल होते हैं:

| फ़ील्ड             | उद्देश्य                                                |
| ----------------- | ------------------------------------------------------ |
| `checkId`         | स्किप/ओनली फ़िल्टर और CI अनुमत-सूचियों के लिए स्थिर आईडी।     |
| `severity`        | `info`, `warning`, या `error`।                         |
| `message`         | मानव-पठनीय समस्या विवरण।                      |
| `path`            | उपलब्ध होने पर कॉन्फ़िगरेशन, फ़ाइल या तार्किक पथ।          |
| `line` / `column` | उपलब्ध होने पर स्रोत स्थान।                        |
| `ocPath`          | जब कोई जाँच किसी एक की ओर संकेत कर सके, तब सटीक `oc://` पता। |
| `fixHint`         | सुझाई गई ऑपरेटर कार्रवाई या मरम्मत सारांश।           |

आधुनिकीकरण की गई मुख्य Doctor जाँचें उस क्रमबद्ध Doctor योगदान से जुड़ी रहती हैं, जो उनके मानवीय `doctor` / `doctor --fix` व्यवहार का स्वामी है। साझा संरचित स्वास्थ्य रजिस्ट्री विस्तार बिंदु है: बंडल की गई और Plugin-समर्थित जाँचें मुख्य Doctor जाँचों के बाद चलती हैं, जब उनका स्वामी पैकेज उन्हें सक्रिय कमांड पथ में पंजीकृत कर देता है। `openclaw/plugin-sdk/health`, Plugin लेखकों के लिए यही अनुबंध उपलब्ध कराता है।

## जाँच चयन

```bash
openclaw doctor --lint --only core/doctor/gateway-config --json
openclaw doctor --lint --skip core/doctor/skills-readiness
openclaw doctor --lint --all --skip core/doctor/session-locks
```

`--only` और `--skip` पूर्ण जाँच आईडी स्वीकार करते हैं और उन्हें दोहराया जा सकता है। यदि कोई `--only` आईडी पंजीकृत नहीं है, तो उस आईडी के लिए कोई जाँच नहीं चलती; यह पुष्टि करने के लिए कि केंद्रित गेट आपकी अपेक्षित जाँचें चुनता है, आउटपुट में `checksRun`/`checksSkipped` का उपयोग करें।

## अपग्रेड-पश्चात मोड

`openclaw doctor --post-upgrade`, बिल्ड या अपग्रेड के बाद श्रृंखलाबद्ध रूप से चलाने के लिए Plugin संगतता परीक्षण चलाता है। निष्कर्ष stdout पर जाते हैं; यदि किसी निष्कर्ष में `level: "error"` है, तो निकास कोड 1 होता है। मशीन-पठनीय आवरण (`{ probesRun, findings }`) के लिए `--json` जोड़ें, जो CI, सामुदायिक `fork-upgrade` Skill और अन्य अपग्रेड-पश्चात स्मोक टूलिंग के लिए उपयुक्त है। यदि स्थापित Plugin इंडेक्स अनुपस्थित या विकृत है, तो भी JSON मोड `plugin.index_unavailable` त्रुटि निष्कर्ष के साथ आवरण उत्सर्जित करता है।

कंटेनर इमेज स्टार्टअप सामान्य "अपडेट करने के बाद Doctor चलाएँ"
प्रवाह का अपवाद है। जब `openclaw gateway run` किसी नए OpenClaw संस्करण पर शुरू होता है, तो यह
तैयार होने की रिपोर्ट करने से पहले सुरक्षित स्थिति और Plugin मरम्मत चलाता है। यदि मरम्मत
सुरक्षित रूप से पूरी नहीं हो सकती, तो स्टार्टअप बंद हो जाता है और आपको कंटेनर को
सामान्य रूप से पुनः आरंभ करने से पहले उसी माउंट की गई स्थिति/कॉन्फ़िगरेशन के विरुद्ध
`openclaw doctor --fix` के साथ उसी इमेज को एक बार चलाने के लिए कहता है।

## विरासती स्थिति माइग्रेशन

`openclaw doctor --fix` स्थायी फ़ाइल-से-SQLite माइग्रेशन का एकमात्र स्वामी है। यह प्रत्येक पहचाने गए स्रोत को सत्यापित करके उस पर दावा करता है, कैनोनिकल पंक्तियाँ लिखता और सत्यापित करता है, माइग्रेशन रसीद दर्ज करता है, फिर सेवानिवृत्त स्रोत हटा देता है। रनटाइम कोड लेज़ी इम्पोर्ट या फ़ॉलबैक रीड नहीं करता।

इसमें `<state-dir>/mcp-oauth/*.json` के अंतर्गत सेवानिवृत्त MCP OAuth फ़ाइलें शामिल हैं। मरम्मत से पहले Gateway रोकें। Doctor मान्य क्रेडेंशियल को `<state-dir>/state/openclaw.sqlite` में इम्पोर्ट करता है, दोनों स्टोर मौजूद होने पर मौजूदा कैनोनिकल SQLite सत्र बनाए रखता है, अप्रचलित स्थायी OAuth `state` मान हटाता है, और पुनः बनाई गई पुरानी फ़ाइल को लॉग-आउट किए गए क्रेडेंशियल पुनर्जीवित करने से रोकने के लिए अपनी रसीद का उपयोग करता है। सेवानिवृत्त `.lock` साइडकार विफलता पर बंद हो जाते हैं: यदि Doctor किसी पुराने स्वामी की रिपोर्ट करता है, तो सत्यापित करें कि कोई पुरानी OpenClaw प्रक्रिया नहीं चल रही है, वह साइडकार हटाएँ और Doctor फिर से चलाएँ।

## साझा स्थिति SQLite Compaction

स्कीमा संस्करण निर्धारण, अखंडता जाँच और डाउनग्रेड पुनर्प्राप्ति के लिए [डेटाबेस स्कीमा](/hi/reference/database-schemas) देखें।

`openclaw doctor --state-sqlite compact`,
`<state-dir>/state/openclaw.sqlite` पर स्थित कैनोनिकल साझा स्थिति डेटाबेस के लिए स्पष्ट ऑफ़लाइन रखरखाव है।
यह कोई मनमाना डेटाबेस पथ स्वीकार नहीं करता, सामान्य Gateway संचालन द्वारा कभी लागू नहीं किया जाता,
और `openclaw doctor --fix` का भाग नहीं है। कमांड Gateway स्टार्टअप वाला समान स्थिति स्वामित्व लॉक
प्राप्त करता है और सत्यापन, चेकपॉइंटिंग, `VACUUM` तथा अंतिम अखंडता जाँचों तक उसे
बनाए रखता है। जब कोई Gateway या अन्य SQLite रखरखाव कमांड उस लॉक का स्वामी होता है, तो यह
चलने से मना कर देता है। जब `OPENCLAW_ALLOW_MULTI_GATEWAY=1` प्रति-कॉन्फ़िगरेशन Gateway सिंगलटन को छोड़ता है,
तब भी स्थिति लॉक सक्रिय रहता है, इसलिए रखरखाव द्वारा उसका पता लगाने के लिए ऑपरेटर शेल को
Gateway सेवा का परिवेश इनहेरिट करने की आवश्यकता नहीं होती।

पहले Gateway रोकें और सत्यापित बैकअप बनाएँ:

```bash
openclaw gateway stop
openclaw backup create --verify
openclaw doctor --state-sqlite compact --json
openclaw gateway start
```

कमांड:

1. कैनोनिकल साझा-स्थिति पथ पर एक नियमित फ़ाइल आवश्यक है। अनुपस्थित
   डेटाबेस को `skipped` के रूप में रिपोर्ट किया जाता है और कमांड सफलतापूर्वक समाप्त होता है।
2. चेकपॉइंटिंग या फ़ाइल बदलने से पहले वर्तमान समर्थित स्कीमा संस्करण और
   `schema_meta.role = "global"` को सत्यापित करता है।
3. एक गैर-व्यस्त `wal_checkpoint(TRUNCATE)` आवश्यक है। यदि चेकपॉइंट व्यस्त है, तो शेष सभी OpenClaw
   प्रक्रियाएँ रोकें और पुनः प्रयास करें।
4. `auto_vacuum` को `INCREMENTAL` पर सेट करता है, पूर्ण `VACUUM` चलाता है और फिर से
   चेकपॉइंट करता है।
5. `quick_check`, `integrity_check` और `foreign_key_check` चलाता है, फिर
   डेटाबेस और SQLite साइडकार फ़ाइलों पर केवल-स्वामी अनुमतियाँ पुनः लागू करता है।

JSON आउटपुट Compaction से पहले और बाद के डेटाबेस तथा WAL आकार, फ़्रीलिस्ट पृष्ठ, पृष्ठ आकार और
`auto_vacuum` मान के साथ पुनः प्राप्त बाइट तथा `quick_check` और
`integrity_check` परिणामों की रिपोर्ट करता है। `foreign_key_check` को विफलता पर बंद होने के
नियम के साथ लागू किया जाता है और इसका कोई अलग सफलता फ़ील्ड नहीं है। SQLite, `auto_vacuum` को
कोई नहीं के लिए `0`, पूर्ण के लिए `1` और वृद्धिशील के लिए `2` के रूप में रिपोर्ट करता है।

जब स्कीमा पुराना हो, चल रहे OpenClaw बिल्ड से नया हो या किसी एजेंट डेटाबेस का हो, तो
Compaction बिना म्यूटेशन के विफल हो जाता है। पुराने साझा-स्थिति स्कीमा के लिए पहले
`openclaw doctor --fix` चलाएँ। नए स्कीमा के लिए संगत बैकअप पुनर्स्थापित करें या OpenClaw अपग्रेड करें।

## सत्र SQLite माइग्रेशन

OpenClaw, Gateway स्टार्टअप के दौरान और `openclaw doctor --fix` के दौरान विरासती सत्र पंक्तियों
और ट्रांसक्रिप्ट इतिहास को प्रत्येक एजेंट के SQLite डेटाबेस में स्वचालित रूप से इम्पोर्ट करता है।
`openclaw doctor --session-sqlite <mode>` उस माइग्रेशन के लिए लक्षित निरीक्षण और सत्यापन टूल है। वर्तमान रनटाइम
सत्र पंक्तियाँ `~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite` में रहती हैं। विरासती
`sessions.json` फ़ाइलें माइग्रेशन स्रोत हैं। सक्रिय ट्रांसक्रिप्ट JSONL फ़ाइलों को
इम्पोर्ट करके सफल इम्पोर्ट के बाद सक्रिय सत्र निर्देशिका से बाहर अभिलेखित किया जाता है;
अभिलेख-स्तरीय JSONL फ़ाइलें सहायक आर्टिफ़ैक्ट रहती हैं, रनटाइम फ़ॉलबैक नहीं।

मोड:

| मोड       | व्यवहार                                                                                                               |
| ---------- | ---------------------------------------------------------------------------------------------------------------------- |
| `inspect`  | इम्पोर्ट किए बिना विरासती और SQLite संख्याएँ तथा बिना संदर्भ वाली JSONL फ़ाइलें पढ़ता है।                                       |
| `dry-run`  | विरासती प्रविष्टियों और ट्रांसक्रिप्ट JSONL फ़ाइलों को पार्स करता है, इम्पोर्ट योग्य पंक्तियाँ गिनता है और SQLite पंक्तियाँ लिखे बिना समस्याओं की रिपोर्ट करता है। |
| `import`   | चुने गए लक्ष्यों के लिए विरासती प्रविष्टियाँ और ट्रांसक्रिप्ट घटनाएँ SQLite में इम्पोर्ट करता है।                                      |
| `validate` | चुने गए विरासती स्रोतों की तुलना SQLite पंक्तियों और ट्रांसक्रिप्ट घटना संख्याओं से करता है।                                   |
| `compact`  | बड़े विलोपन या अभिलेख सफ़ाई के बाद खाली पृष्ठ पुनः प्राप्त करने के लिए चुने गए एजेंट SQLite डेटाबेस को चेकपॉइंट और VACUUM करता है।    |
| `recover`  | नवीनतम विफल माइग्रेशन रन पुनर्स्थापित करता है, उसके लक्ष्यों को सत्यापित करता है और साफ़ किया गया GitHub समस्या प्रतिवेदन तैयार करता है।            |
| `restore`  | SQLite डेटा हटाए बिना दर्ज किए गए माइग्रेशन मेनिफ़ेस्ट से अभिलेखित ट्रांसक्रिप्ट आर्टिफ़ैक्ट पुनर्स्थापित करता है।                  |

चयनकर्ता:

- डिफ़ॉल्ट: कॉन्फ़िगर किया गया डिफ़ॉल्ट एजेंट स्टोर, जब वह विरासती स्टोर फ़ाइल मौजूद हो।
- `--session-sqlite-agent <id>`: एक कॉन्फ़िगर किया गया एजेंट।
- `--session-sqlite-all-agents`: कॉन्फ़िगर किए गए एजेंट स्टोर और खोजे गए एजेंट स्टोर।
- `--session-sqlite-store <path>`: एक स्पष्ट विरासती `sessions.json` पथ।

मैन्युअल निरीक्षण क्रम:

```bash
openclaw doctor --session-sqlite inspect --session-sqlite-all-agents
openclaw doctor --session-sqlite dry-run --session-sqlite-all-agents --json
openclaw doctor --session-sqlite import --session-sqlite-all-agents
openclaw doctor --session-sqlite validate --session-sqlite-all-agents --json
openclaw doctor --session-sqlite compact --session-sqlite-all-agents
openclaw doctor --session-sqlite recover --github-issue
```

महत्वपूर्ण इतिहास वाली स्थापना पर `import` चलाने से पहले OpenClaw स्थिति निर्देशिका का बैकअप लें।
जब कोई चुनी गई विरासती प्रविष्टि SQLite में अनुपस्थित होती है, कोई सत्र आईडी भिन्न होती है या
ट्रांसक्रिप्ट घटना संख्या भिन्न होती है, तो `validate` गैर-शून्य मान के साथ समाप्त होता है।
`--session-sqlite-store <path>` का उपयोग करते समय जाँचें कि रिपोर्ट में अपेक्षित लक्ष्य संख्या मौजूद है;
कोई अस्तित्वहीन स्पष्ट स्टोर पथ किसी लक्ष्य का चयन नहीं करता।

SQLite विलोपन पहले डेटाबेस के भीतर पृष्ठ पुनः प्राप्त करते हैं; वे आवश्यक रूप से
डेटाबेस फ़ाइल को तुरंत छोटा नहीं करते। बड़े ट्रांसक्रिप्ट हटाने या अभिलेखित करने के बाद,
WAL फ़ाइलों को चेकपॉइंट करने, `VACUUM` चलाने और डेटाबेस तथा WAL के पहले/बाद के
आकार रिपोर्ट करने के लिए `openclaw doctor --session-sqlite compact --session-sqlite-all-agents` चलाएँ। Compaction के लिए वर्तमान एजेंट स्कीमा वाली
एक नियमित फ़ाइल, चुने गए एजेंट का स्थायी स्वामी मेटाडेटा और Doctor प्रक्रिया में कोई खुला
हैंडल न होना आवश्यक है। विनाशकारी `import`, `compact`, `recover` और
`restore` मोड अपने पूरे संचालन के दौरान Gateway स्टार्टअप वाला समान स्थिति स्वामित्व लॉक
बनाए रखते हैं; `inspect`, `dry-run` और `validate` केवल-पठन रहते हैं और
उसे प्राप्त नहीं करते। पहले Gateway रोकें। विनाशकारी मोड सक्रिय लेखनों या किसी अन्य रखरखाव
कमांड के साथ प्रतिस्पर्धा करने के बजाय विफल हो जाते हैं। विनाशकारी `--session-sqlite-store`
लक्ष्य सक्रिय स्थिति निर्देशिका के भीतर होना चाहिए; किसी अन्य स्थापना का रखरखाव करने से पहले
`OPENCLAW_STATE_DIR` को स्टोर की स्वामी स्थिति निर्देशिका पर सेट करें। मौजूदा हार्ड-लिंक किए गए
लक्ष्य अस्वीकार कर दिए जाते हैं, क्योंकि कोई अन्य पथ लॉक की गई स्थिति निर्देशिका से बाहर
उसी डेटाबेस inode को साझा कर सकता है। यही स्वामित्व जाँचें SQLite WAL, साझा-मेमोरी और
रोलबैक-जर्नल साइडकार को भी कवर करती हैं।

प्रत्येक इम्पोर्ट ट्रांसक्रिप्ट आर्टिफ़ैक्ट को अभिलेख में ले जाने से पहले
`~/.openclaw/session-sqlite-migration-runs/` के अंतर्गत एक मेनिफ़ेस्ट लिखता है।
यदि आर्टिफ़ैक्ट स्थानांतरित होने के बाद स्टार्टअप किसी विफल सत्र SQLite माइग्रेशन की रिपोर्ट करता है,
तो पुनर्प्राप्ति चलाएँ:

```bash
openclaw doctor --session-sqlite recover --github-issue
```

पुनर्प्राप्ति नवीनतम विफल माइग्रेशन मैनिफ़ेस्ट का चयन करती है, केवल
मैनिफ़ेस्ट की संग्रहीत कलाकृतियों को पुनर्स्थापित करती है, प्रभावित लक्ष्यों को सत्यापित करती है, सैनिटाइज़ की गई
`.failure.md` और `.failure.json` रिपोर्टों को रीफ़्रेश करती है, और GitHub इश्यू
बॉडी तैयार करती है जिसमें ट्रांसक्रिप्ट की सामग्री, अपरिष्कृत एनवायरनमेंट, सीक्रेट और असीमित
कॉन्फ़िग शामिल नहीं होते। जब कोई विफल माइग्रेशन मैनिफ़ेस्ट मौजूद नहीं होता, लेकिन चयनित एजेंट SQLite
डेटाबेस दूषित होता है, डेटाबेस नहीं होता, या उसमें मुख्य
डेटाबेस के बिना जर्नल साइडकार होते हैं, तो पुनर्प्राप्ति संपूर्ण फ़ाइल सेट को एक अस्थायी निरीक्षण
डायरेक्टरी में कॉपी करती है। SQLite उस अस्थायी कॉपी में मान्य हॉट जर्नल को
`quick_check`, `integrity_check`, और `foreign_key_check` के चलने से पहले रोल बैक कर सकता है, जबकि
मूल फ़ॉरेंसिक फ़ाइलें अपरिवर्तित रहती हैं। विफल अखंडता जाँच या अनाथ
साइडकार, खोजे गए पूरे सेट का नाम एक `.corrupt-<timestamp>` प्रत्यय के साथ बदलकर
DB, WAL, SHM, और रोलबैक-जर्नल फ़ाइलों को संरक्षित रखते हैं। पकड़ी गई नाम-बदलने की
विफलता, विफलता की रिपोर्ट करने से पहले पहले से स्थानांतरित फ़ाइलों को वापस ले जाती है, ताकि
पुनर्प्राप्त किए जा सकने वाले फ़ाइल सेट को चुपचाप विभाजित न किया जाए। पुनर्प्राप्ति से पहले Gateway बंद करें;
सक्रिय रूप से बदल रहे SQLite फ़ाइल सेट को कॉपी करना या उसका नाम बदलना असुरक्षित है और अलग-अलग
ऑपरेटिंग सिस्टम पर अलग तरह से व्यवहार करता है। `--github-issue --yes` के साथ, doctor
GitHub CLI का उपयोग करके `openclaw/openclaw` में इश्यू बनाता है; पुष्टि के बिना
यह स्थानीय सहायता रिपोर्ट लिखता है और पहले से भरा हुआ इश्यू URL प्रिंट करता है।

`restore` निम्न-स्तरीय पूर्ववत कार्रवाई बनी रहती है। यह मैनिफ़ेस्ट के
`sourcePath -> archivePath` रिकॉर्ड का उपयोग करती है, संग्रहीत कलाकृतियों को केवल तभी वापस ले जाती है जब
मूल पथ मौजूद न हो, दोनों पथ मौजूद होने पर टकराव की रिपोर्ट करती है, और
SQLite डेटाबेस को उसी स्थान पर छोड़ देती है।

### सत्र SQLite माइग्रेशन के बाद डाउनग्रेड करना

फ़ाइल-समर्थित OpenClaw के किसी पुराने संस्करण को शुरू करने से पहले, संग्रहीत
पुरानी ट्रांसक्रिप्ट कलाकृतियों को पुनर्स्थापित करें:

```bash
openclaw doctor --session-sqlite restore --session-sqlite-all-agents
```

पुराने संस्करण उन प्रविष्टियों में दर्ज `sessions.json` प्रविष्टियाँ और `sessionFile` पथ पढ़ते
हैं। SQLite माइग्रेशन के बाद, सफल आयात सक्रिय JSONL
ट्रांसक्रिप्ट को `session-sqlite-import-archive/` में स्थानांतरित कर देते हैं, इसलिए पुराना रनटाइम
उस इतिहास को तब तक नहीं देख सकता जब तक पुनर्स्थापना उन मैनिफ़ेस्ट-दर्ज कलाकृतियों को
उनके मूल पथों पर वापस नहीं ले जाती।

पुनर्स्थापना SQLite डेटा को नहीं मिटाती। SQLite पर स्विच होने के बाद बनाए गए सत्र
केवल SQLite में मौजूद होते हैं और पुराने रनटाइम में दिखाई नहीं देंगे। यदि आप बाद में
फिर से अपग्रेड करते हैं, तो ऊपर दिया गया सामान्य माइग्रेशन सत्यापन क्रम चलाएँ, ताकि OpenClaw
आयात करने से पहले पुनर्स्थापित पुरानी कलाकृतियों की SQLite पंक्तियों से तुलना कर सके।

## टिप्पणियाँ

- Nix मोड (`OPENCLAW_NIX_MODE=1`) में, केवल-पढ़ने योग्य doctor जाँचें अब भी काम करती हैं, लेकिन `doctor --fix`, `doctor --repair`, `doctor --yes`, और `doctor --generate-gateway-token` अक्षम रहते हैं क्योंकि `openclaw.json` अपरिवर्तनीय है। इसके बजाय इस इंस्टॉलेशन के लिए Nix स्रोत संपादित करें; nix-openclaw के लिए, एजेंट-प्रथम [त्वरित शुरुआत](https://github.com/openclaw/nix-openclaw#quick-start) का उपयोग करें।
- इंटरैक्टिव प्रॉम्प्ट (कीचेन/OAuth सुधार आदि) केवल तभी चलते हैं जब stdin एक TTY हो और `--non-interactive` **सेट न हो**। हेडलेस रन (Cron, Telegram, कोई टर्मिनल नहीं) प्रॉम्प्ट छोड़ देते हैं।
- गैर-इंटरैक्टिव `doctor` रन अग्रिम Plugin लोडिंग छोड़ देते हैं, ताकि हेडलेस स्वास्थ्य जाँचें तेज़ बनी रहें। इंटरैक्टिव सत्र अब भी पुराने स्वास्थ्य/मरम्मत प्रवाह के लिए आवश्यक Plugin सतहें लोड करते हैं।
- `--lint`, `--non-interactive` से अधिक सख्त है: हमेशा केवल-पढ़ने योग्य, कभी प्रॉम्प्ट नहीं करता और कभी सुरक्षित माइग्रेशन लागू नहीं करता। जब आप चाहते हों कि doctor बदलाव करे, तो `doctor --fix` या `doctor --repair` का उपयोग करें।
- डिफ़ॉल्ट रूप से सीक्रेट जाँचते समय doctor `exec` SecretRefs निष्पादित नहीं करता। केवल तभी `--allow-exec` का उपयोग करें (`--lint` के साथ या उसके बिना), जब आप जानबूझकर चाहते हों कि doctor उन कॉन्फ़िगर किए गए सीक्रेट रिज़ॉल्वर को चलाए।
- कोई भी कॉन्फ़िगरेशन लेखन (`--fix` मरम्मत सहित) बैकअप को `~/.openclaw/openclaw.json.bak` में घुमाता है (क्रमांकित `.bak.1`..`.bak.4` रिंग के साथ)। `--fix` स्कीमा सत्यापन द्वारा रिपोर्ट की गई अज्ञात कॉन्फ़िगरेशन कुंजियाँ भी हटाता है और प्रत्येक हटाव सूचीबद्ध करता है; अपडेट जारी रहने के दौरान यह इसे छोड़ देता है, ताकि आंशिक रूप से लिखी गई अपग्रेड स्थिति का माइग्रेशन पूरा होने से पहले उसे हटाया न जाए।
- यदि `openclaw.json` को पार्स नहीं किया जा सकता और अंतिम ज्ञात-सही कॉन्फ़िगरेशन पुनर्प्राप्त नहीं हो सकता, तो `doctor --fix` मूल को `openclaw.json.clobbered.<timestamp>` के रूप में सुरक्षित रखता है, वर्तमान फ़ाइल को अपरिवर्तित छोड़ता है और आंशिक प्रतिस्थापन लिखने के बजाय त्रुटि के साथ बाहर निकलता है।
- जब कोई अन्य पर्यवेक्षक Gateway जीवनचक्र का स्वामी हो, तब `OPENCLAW_SERVICE_REPAIR_POLICY=external` सेट करें। Doctor अब भी Gateway/सेवा स्वास्थ्य की रिपोर्ट करता है और गैर-सेवा मरम्मत लागू करता है, लेकिन सेवा इंस्टॉल/शुरू/पुनः आरंभ/बूटस्ट्रैप और पुरानी सेवा सफ़ाई छोड़ देता है।
- Doctor प्रबंधित Gateway की लागू हीप सीमा और वर्तमान होस्ट या कंटेनर मेमोरी सीमा के लिए उपयोग की गई अनुकूली व्युत्पत्ति की रिपोर्ट करता है। मरम्मत पास के बाहर यही रिपोर्ट पाने के लिए `openclaw gateway status` का उपयोग करें।
- Linux पर, doctor निष्क्रिय अतिरिक्त Gateway-जैसी systemd इकाइयों को अनदेखा करता है और मरम्मत के दौरान चल रही systemd Gateway सेवा के कमांड/एंट्रीपॉइंट मेटाडेटा को दोबारा नहीं लिखता। पहले सेवा रोकें, या सक्रिय लॉन्चर को बदलने के लिए `openclaw gateway install --force` का उपयोग करें।
- `doctor --fix --non-interactive` अनुपलब्ध या पुराने Gateway सेवा-परिभाषाओं की रिपोर्ट करता है, लेकिन अपडेट मरम्मत मोड के बाहर उन्हें इंस्टॉल या दोबारा नहीं लिखता। अनुपलब्ध सेवा के लिए `openclaw gateway install`, या लॉन्चर बदलने के लिए `openclaw gateway install --force` चलाएँ।
- स्थिति-अखंडता जाँचें सत्र निर्देशिका में अनाथ ट्रांसक्रिप्ट फ़ाइलों का पता लगाती हैं। उन्हें `.deleted.<timestamp>` के रूप में संग्रहित करने के लिए इंटरैक्टिव पुष्टि आवश्यक है; `--fix`, `--yes`, और हेडलेस रन उन्हें वहीं छोड़ देते हैं।
- Doctor पुराने Cron जॉब आकारों के लिए `~/.openclaw/cron/jobs.json` (या `cron.store`) को स्कैन करता है और SQLite में कैनोनिकल पंक्तियाँ आयात करने से पहले उन्हें दोबारा लिखता है।
- Doctor स्पष्ट `payload.model` ओवरराइड वाले Cron जॉब की रिपोर्ट करता है, जिसमें प्रदाता-नेमस्पेस गणनाएँ और `agents.defaults.model` के साथ असंगतियाँ शामिल हैं, ताकि डिफ़ॉल्ट मॉडल इनहेरिट न करने वाले शेड्यूल किए गए जॉब प्रमाणीकरण या बिलिंग जाँच के दौरान दिखाई दें।
- Doctor उन Cron जॉब की रिपोर्ट करता है जिन्हें अब भी प्रगति में (`state.runningAtMs`) चिह्नित किया गया है, जिससे `openclaw cron list` उन्हें `running` के रूप में दिखा सकता है। यह जाँच केवल-पढ़ने योग्य है: यदि कोई Gateway वर्तमान में किसी चिह्नित जॉब को निष्पादित नहीं कर रहा है, तो अगला Cron सेवा स्टार्टअप बाधित रन दर्ज करता है और चिह्न साफ़ कर देता है।
- Linux पर, जब उपयोगकर्ता का crontab अब भी अनुरक्षण-रहित पुराने `~/.openclaw/bin/ensure-whatsapp.sh` को चलाता है, तब doctor चेतावनी देता है, क्योंकि Cron के पास systemd उपयोगकर्ता-बस परिवेश न होने पर यह `Gateway inactive` की ग़लत रिपोर्ट कर सकता है।
- WhatsApp सक्षम होने पर, doctor स्थानीय `openclaw-tui` क्लाइंट के अब भी चलते रहने के साथ अवनत Gateway इवेंट लूप की जाँच करता है। `doctor --fix` केवल सत्यापित स्थानीय TUI क्लाइंट रोकता है, ताकि WhatsApp उत्तर पुराने TUI रीफ़्रेश लूप के पीछे कतारबद्ध न हों।
- जब HTTP(S) प्रॉक्सी परिवेश चर मौजूद हों लेकिन `tools.web.fetch.useTrustedEnvProxy` अक्षम हो, तब doctor समझाता है कि `web_fetch` अब भी प्रत्यक्ष रूटिंग का उपयोग करता है, एक छोटी प्रत्यक्ष TLS कनेक्टिविटी जाँच चलाता है और स्पष्ट ऑप्ट-इन का नाम बताता है। यह कभी भी प्रॉक्सी विश्वास अपने-आप सक्षम नहीं करता।
- Doctor प्राथमिक मॉडल, फ़ॉलबैक, मॉडल अनुमतिसूचियों, छवि/वीडियो जनरेशन मॉडल, Heartbeat/सबएजेंट/Compaction ओवरराइड, हुक, चैनल मॉडल ओवरराइड, Cron पेलोड और पुराने सत्र/ट्रांसक्रिप्ट रूट पिन में पुराने `codex/*` और `openai-codex/*` मॉडल संदर्भों को कैनोनिकल `openai/*` संदर्भों में दोबारा लिखता है। सुरक्षित होने पर `--fix` पुराने `models.providers.codex` और `models.providers.openai-codex` कॉन्फ़िगरेशन को भी मर्ज करता है, पुराने `openai-codex:*` प्रमाणीकरण प्रोफ़ाइल और `auth.order.openai-codex` प्रविष्टियों को `openai:*` में माइग्रेट करता है, Codex अभिप्राय को प्रदाता/मॉडल-स्कोप वाले `agentRuntime.id: "codex"` प्रविष्टियों पर ले जाता है, पुराने पूरे-एजेंट/सत्र रनटाइम पिन हटाता है और सुधारे गए OpenAI एजेंट संदर्भों को प्रत्यक्ष OpenAI API-कुंजी प्रमाणीकरण के बजाय Codex प्रमाणीकरण रूटिंग पर रखता है।
- Doctor उन गैर-रिक्त `auth.order.<provider>` सूचियों की रिपोर्ट करता है जिनकी संदर्भित सभी प्रोफ़ाइल हट चुकी हैं, जबकि संगत संग्रहीत क्रेडेंशियल मौजूद हैं। `doctor --fix` केवल उन पुराने ओवरराइड को हटाता है और स्वचालित प्रति-एजेंट क्रेडेंशियल चयन पुनर्स्थापित करता है; स्पष्ट रिक्त क्रम, आंशिक रूप से सक्रिय सूचियाँ और संगत संग्रहीत क्रेडेंशियल के बिना क्रम अपरिवर्तित रहते हैं। यदि सक्रिय SQLite प्रमाणीकरण स्टोर अपठनीय या विकृत है, तो doctor समझाता है कि उसने यह मरम्मत क्यों छोड़ी। यदि चल रहे Gateway का कॉन्फ़िगरेशन पुनः लोड मोड लेखन को अपने-आप लागू नहीं करता, तो प्रमाणीकरण स्थिति दोबारा जाँचने से पहले Gateway को पुनः आरंभ करें।
- Doctor पुराने OpenClaw संस्करणों की पुरानी Plugin निर्भरता स्टेजिंग स्थिति साफ़ करता है और उसे पीयर निर्भरता घोषित करने वाले प्रबंधित npm Plugins के लिए होस्ट `openclaw` पैकेज को दोबारा लिंक करता है। यह कॉन्फ़िगरेशन द्वारा संदर्भित अनुपलब्ध डाउनलोड-योग्य Plugins (`plugins.entries`, कॉन्फ़िगर किए गए चैनल, कॉन्फ़िगर की गई प्रदाता/खोज सेटिंग्स, कॉन्फ़िगर किए गए एजेंट रनटाइम) की भी मरम्मत करता है। पैकेज अपडेट के दौरान, पैकेज अदला-बदली पूरी होने तक doctor पैकेज-मैनेजर Plugin मरम्मत छोड़ देता है; यदि किसी कॉन्फ़िगर किए गए Plugin को अब भी पुनर्प्राप्ति चाहिए, तो बाद में `openclaw doctor --fix` दोबारा चलाएँ। यदि डाउनलोड विफल होता है, तो doctor इंस्टॉलेशन त्रुटि रिपोर्ट करता है और अगली मरम्मत कोशिश के लिए कॉन्फ़िगर की गई Plugin प्रविष्टि सुरक्षित रखता है।
- Plugin खोज स्वस्थ होने पर, doctor `plugins.allow`/`plugins.deny`/`plugins.entries` से अनुपलब्ध Plugin आईडी हटाकर, साथ ही उनसे मेल खाने वाले लटकते चैनल कॉन्फ़िगरेशन, Heartbeat लक्ष्य और चैनल मॉडल ओवरराइड हटाकर पुराने Plugin कॉन्फ़िगरेशन की मरम्मत करता है।
- Doctor प्रभावित `plugins.entries.<id>` प्रविष्टि को अक्षम करके और उसका अमान्य `config` पेलोड हटाकर अमान्य Plugin कॉन्फ़िगरेशन को क्वारंटीन करता है। Gateway स्टार्टअप पहले से केवल उस ख़राब Plugin को छोड़ता है, इसलिए अन्य Plugins और चैनल चलते रहते हैं।
- Doctor सेवानिवृत्त `plugins.entries.codex.config.codexDynamicToolsProfile` को हटाता है; Codex ऐप-सर्वर हमेशा Codex-मूल वर्कस्पेस टूल को मूल ही रखता है।
- Doctor पुराने समतल Talk कॉन्फ़िगरेशन (`talk.voiceId`, `talk.modelId`, और संबंधित प्रविष्टियों) को `talk.provider` + `talk.providers.<provider>` में अपने-आप माइग्रेट करता है। जब केवल ऑब्जेक्ट कुंजियों के क्रम का अंतर हो, तब बार-बार `doctor --fix` चलाने पर Talk सामान्यीकरण की रिपोर्ट या उसे लागू नहीं किया जाता।
- Doctor में मेमोरी-खोज तत्परता जाँच शामिल है और एम्बेडिंग क्रेडेंशियल अनुपलब्ध होने पर यह `openclaw configure --section model` की अनुशंसा कर सकता है।
- कोई कमांड स्वामी कॉन्फ़िगर न होने पर doctor चेतावनी देता है। कमांड स्वामी वह मानव ऑपरेटर खाता है जिसे केवल-स्वामी कमांड चलाने और ख़तरनाक कार्रवाइयों को स्वीकृत करने की अनुमति है। DM पेयरिंग केवल किसी व्यक्ति को बॉट से बात करने देती है; यदि आपने प्रथम-स्वामी बूटस्ट्रैप के अस्तित्व में आने से पहले किसी प्रेषक को स्वीकृत किया था, तो `commands.ownerAllowFrom` स्पष्ट रूप से सेट करें।
- Codex-मोड एजेंट कॉन्फ़िगर होने और ऑपरेटर के Codex होम में व्यक्तिगत Codex CLI एसेट मौजूद होने पर doctor एक सूचना नोट रिपोर्ट करता है। स्थानीय Codex ऐप-सर्वर लॉन्च पृथक प्रति-एजेंट होम का उपयोग करते हैं; आवश्यकता होने पर पहले Codex Plugin इंस्टॉल करें, फिर उन एसेट की सूची बनाने के लिए `openclaw migrate plan codex` का उपयोग करें जिन्हें जानबूझकर प्रोमोट किया जाना चाहिए।
- डिफ़ॉल्ट एजेंट के लिए अनुमत Skills वर्तमान रनटाइम परिवेश में अनुपलब्ध होने पर doctor चेतावनी देता है (अनुपलब्ध बाइनरी, परिवेश चर, कॉन्फ़िगरेशन या OS आवश्यकताएँ)। `doctor --fix`, `skills.entries.<skill>.enabled=false` के साथ उन अनुपलब्ध Skills को अक्षम कर सकता है; यदि आप Skill को सक्रिय रखना चाहते हैं, तो इसके बजाय अनुपलब्ध आवश्यकता को इंस्टॉल/कॉन्फ़िगर करें।
- यदि सैंडबॉक्स मोड सक्षम है लेकिन Docker अनुपलब्ध है, तो doctor सुधार उपाय (`install Docker` या `openclaw config set agents.defaults.sandbox.mode off`) के साथ उच्च-संकेत चेतावनी रिपोर्ट करता है।
- यदि पुराने सैंडबॉक्स रजिस्ट्री फ़ाइलें या शार्ड निर्देशिकाएँ मौजूद हैं (`~/.openclaw/sandbox/containers.json`, `~/.openclaw/sandbox/browsers.json`, `~/.openclaw/sandbox/containers/`, या `~/.openclaw/sandbox/browsers/`), तो doctor उनकी रिपोर्ट करता है; `--fix` मान्य प्रविष्टियों को SQLite में माइग्रेट करता है और अमान्य पुरानी फ़ाइलों को क्वारंटीन करता है।
- यदि `gateway.auth.token`/`gateway.auth.password` SecretRef-प्रबंधित हैं और वर्तमान कमांड पथ में अनुपलब्ध हैं, तो doctor केवल-पढ़ने योग्य चेतावनी रिपोर्ट करता है और प्लेनटेक्स्ट फ़ॉलबैक क्रेडेंशियल नहीं लिखता। exec-समर्थित SecretRefs के लिए, `--allow-exec` मौजूद न होने पर doctor निष्पादन छोड़ देता है।
- यदि सुधार पथ में चैनल SecretRef निरीक्षण विफल होता है, तो doctor जल्दी बाहर निकलने के बजाय जारी रहता है और चेतावनी रिपोर्ट करता है।
- स्थिति-निर्देशिका माइग्रेशन के बाद, जब सक्षम डिफ़ॉल्ट Telegram या Discord खाते परिवेश फ़ॉलबैक पर निर्भर हों और `TELEGRAM_BOT_TOKEN` या `DISCORD_BOT_TOKEN` doctor प्रक्रिया के लिए अनुपलब्ध हो, तब doctor चेतावनी देता है।
- Telegram `allowFrom` उपयोगकर्ता नाम के स्वचालित रिज़ॉल्यूशन (`doctor --fix`) के लिए वर्तमान कमांड पथ में रिज़ॉल्व किया जा सकने वाला Telegram टोकन आवश्यक है। यदि टोकन निरीक्षण अनुपलब्ध है, तो doctor चेतावनी रिपोर्ट करता है और उस पास के लिए स्वचालित रिज़ॉल्यूशन छोड़ देता है।

## macOS: `launchctl` परिवेश ओवरराइड

यदि आपने पहले `launchctl setenv OPENCLAW_GATEWAY_TOKEN ...` (या `...PASSWORD`) चलाया था, तो वह मान आपकी कॉन्फ़िगरेशन फ़ाइल को ओवरराइड करता है और लगातार "अनधिकृत" त्रुटियाँ उत्पन्न कर सकता है।

```bash
launchctl getenv OPENCLAW_GATEWAY_TOKEN
launchctl getenv OPENCLAW_GATEWAY_PASSWORD

launchctl unsetenv OPENCLAW_GATEWAY_TOKEN
launchctl unsetenv OPENCLAW_GATEWAY_PASSWORD
```

## संबंधित

- [CLI संदर्भ](/hi/cli)
- [Gateway doctor](/hi/gateway/doctor)
