---
read_when:
    - आप ऑनबोर्डिंग के पुनःडिज़ाइन के किसी चरण को लागू कर रहे हैं या उसकी समीक्षा कर रहे हैं
summary: कस्टोडियन ऑनबोर्डिंग के पुनःडिज़ाइन की कार्यान्वयन योजना (सतत अद्यतन दस्तावेज़)
title: ऑनबोर्डिंग का पुनः डिज़ाइन
x-i18n:
    generated_at: "2026-07-19T09:59:27Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: dc1f049d59cfa2638e7332ab4127905141625de5471144c856c91bfe50c9fa11
    source_path: start/onboarding-redesign.md
    workflow: 16
---

# ऑनबोर्डिंग रीडिज़ाइन कार्यान्वयन योजना

> **जीवंत दस्तावेज़।** यह पृष्ठ कस्टोडियन ऑनबोर्डिंग रीडिज़ाइन को
> कार्यान्वयन स्तर पर ट्रैक करता है और प्रत्येक चरण के लागू होने पर अपडेट किया जाता है। अंतिम चरण
> मर्ज होने पर, इस पृष्ठ को उपयोगकर्ता-केंद्रित ऑनबोर्डिंग मार्गदर्शिका के रूप में दोबारा लिखा जाता है और इसे
> दस्तावेज़ नेविगेशन में शामिल किया जाता है। तब तक इसे जानबूझकर `docs.json` में शामिल नहीं किया गया है।

## मुख्य लक्ष्य

एक गैर-तकनीकी उपयोगकर्ता `openclaw onboard` टाइप करता है (या ऐप खोलता है) और उसका स्वागत
एक संवादात्मक उपस्थिति — OpenClaw, सिस्टम कस्टोडियन ("custodian" केवल
आंतरिक नाम है; उपयोगकर्ता को हमेशा "OpenClaw" दिखाई देता है) — करती है, जो उसका AI ढूँढती है,
प्रश्न पूछने के बजाय घोषित डिफ़ॉल्ट के साथ सब कुछ सेट अप करती है, उसके
एजेंट को एक स्पष्ट पहचान-क्षण के रूप में जन्म देती है, और उसके बाद हमेशा
सिस्टम की देखभाल करने वाले के रूप में उपलब्ध रहती है। डिफ़ॉल्ट रूप से जादुई अनुभव, सहमति की एक सीमा, कोई बंद रास्ता नहीं।

डिज़ाइन सिद्धांत (तय किए जा चुके हैं, बिना उचित कारण के इन पर फिर बहस न करें):

- **आसान पूर्ववत सुविधा वाले घोषित डिफ़ॉल्ट** अवरोधक प्रश्नों की जगह लेते हैं। एकमात्र
  अनिवार्य आवश्यकता कार्यशील इनफ़रेंस है; बाकी सब कुछ एक प्रस्ताव है।
- **प्रश्न शून्य सहमति की सीमा है**: "पूर्ण पहुँच" (अनुशंसित) का अर्थ है कि
  खोज चुपचाप और स्वचालित रूप से होती है; "पहले पूछें" प्रत्येक खोज — AI
  स्कैनिंग, ऐप स्कैनिंग और मेमोरी-स्रोत स्कैनिंग समान रूप से — को एक
  स्पष्ट हाँ के पीछे रोकता है, साथ ही एक पूर्णतः मैन्युअल रास्ता उपलब्ध रहता है जो कभी स्कैन नहीं करता।
- **क्रमिक बुद्धिमत्ता वाले UI के रूप में संवाद**: कस्टोडियन सतह
  किसी AI के काम करने से पहले ही मौजूद होती है (स्क्रिप्टेड संवाद), किसी रूट के सत्यापित होते ही
  मॉडल-समर्थित हो जाती है, और ऐसा स्पष्ट रूप से बताती है। यह कभी बुद्धिमत्ता का दिखावा नहीं करती:
  रूट सत्यापित होने से पहले मुक्त-पाठ इनपुट पर सहजता से "पहले मुझे अपना दिमाग
  काम करने लायक बनाने दें" कहा जाता है।
- **जन्म एक अनुष्ठान है**: वही थ्रेड, अवतार बदलना, एजेंट स्वयं अपना नाम रखता है
  और अपना चेहरा चुनता है। कस्टोडियन पदानुक्रम एक बार समझाता है: "सिस्टम के बारे में
  मुझसे पूछें, या सीधे अपने एजेंट से पूछें — वह संदेश पहुँचा देता है।"
- **विश्वास को स्रोत के अनुसार स्तरों में बाँटा गया है**: आधिकारिक कैटलॉग प्रविष्टियाँ पहले से चुनी जा सकती हैं;
  तृतीय-पक्ष ClawHub Skills मॉडल
  रैंकिंग की परवाह किए बिना कभी पहले से नहीं चुनी जातीं, और उनके लेबल बताते हैं कि वे प्रकाशक का कोड इंस्टॉल करती हैं।
- **कॉन्फ़िगर किए गए इंस्टॉल पवित्र हैं**: ऑनबोर्डिंग को दोबारा चलाना एक सत्यापन
  पास है। यह कभी सेटअप दोबारा लागू नहीं करता और कभी Gateway सेवा पुनः आरंभ नहीं करता।
- **टर्मिनल फ़ॉलबैक है, प्रश्न नहीं**: Gateway उपलब्ध होने पर ब्राउज़र
  डैशबोर्ड को प्राथमिकता दें; कभी "टर्मिनल या ब्राउज़र?" न पूछें।
- **कमज़ोर मॉडलों को सीमित सतह मिलती है** (स्वतः `localModelLean`), जिसे
  सरल शब्दों में समझाया जाता है — टूल, कोड मोड या कॉन्टेक्स्ट विंडो के संदर्भ में कभी नहीं।

## वर्तमान जारी प्रवाह (चरण 1-3 के बाद)

नए macOS इंस्टॉल पर `openclaw onboard`, सफल मार्ग — कुल चार बार Enter:

1. सुरक्षा नोट → स्वीकार करने के लिए एक बार Enter (सहेजा जाता है; फिर कभी नहीं पूछा जाता)।
2. **प्रश्न शून्य**: "मुझे चीज़ें कैसे सेट अप करनी चाहिए?" — पूर्ण पहुँच (अनुशंसित)
   या पहले पूछें। `wizard.accessMode` के रूप में सहेजा जाता है; दोबारा चलाने पर सहेजा गया
   विकल्प डिफ़ॉल्ट होता है। गार्डेड + "मैन्युअल रूप से कॉन्फ़िगर करें" बिना
   किसी स्कैनिंग के प्रदाता चयनकर्ता तक पहुँचता है और मेमोरी-स्रोत स्कैनिंग भी छोड़ देता है।
3. **खोज का प्रदर्शन**: कोडिंग CLI, env कुंजियों और स्थानीय रनटाइम का पता लगाता है;
   कोडिंग एजेंट मिलने पर हल्की टिप्पणी करता है; उम्मीदवारों का क्रम से लाइव परीक्षण करता है और
   विफलताओं को चुपचाप एक सारांश पंक्ति में एकत्र करता है (विवरण "अन्य
   विकल्प देखें" के पीछे)। पहले कार्यशील रूट को डिफ़ॉल्ट के रूप में घोषित किया जाता है और
   एक कुंजी दबाकर पूर्ण चयनकर्ता तक पहुँचा जा सकता है; अन्य विकल्प देखने या छोड़ने पर भी
   कार्यशील रूट बना रहता है।
4. मेमोरी-आयात प्रस्ताव (Claude Code / Codex / Hermes), खोज
   अस्वीकार किए जाने पर छोड़ दिया जाता है।
5. केवल नए इंस्टॉल: मानक सेटअप योजना स्वचालित रूप से लागू होती है
   (वर्कस्पेस, Gateway सेवा, सत्र — वही योजना जिसे संवादात्मक
   "हाँ" चलाता है)। कॉन्फ़िगर किए गए इंस्टॉल "पहले से सेट अप" प्रिंट करते हैं और
   सेवा को कभी नहीं छूते।
6. **ऐप अनुशंसाएँ**: सत्यापित मॉडल द्वारा इंस्टॉल किए गए ऐप्स का
   आधिकारिक कैटलॉग + ClawHub से मिलान किया जाता है; आधिकारिक चैनल Plugin
   पहले से चेक किए हुए आते हैं, तृतीय-पक्ष Skills चेतावनी लेबल के साथ ऑप्ट-इन होती हैं। छोड़ा जा सकता है;
   किल स्विच `wizard.appRecommendations`।
7. **जन्म**: Gateway उपलब्ध होने पर, ब्राउज़र हैंडऑफ़ खुलता है (GUI) या
   डैशबोर्ड URL प्रिंट करता है (हेडलेस/SSH) और Control UI के
   कनेक्ट होने की प्रतीक्षा करता है — "डैशबोर्ड कनेक्ट हो गया — आपके ब्राउज़र में जारी रखा जा रहा है।" अन्यथा, या
   `--tui` के साथ, टर्मिनल TUI बूटस्ट्रैप जन्म
   संदेश के साथ खुलता है और एजेंट अपना परिचय देता है।

रिमोट-Gateway ऑनबोर्डिंग अपना पुराना संवादात्मक हैंडऑफ़
(`handoffMode: "chat"`) बनाए रखता है; सेटअप रिमोट Gateway पर लागू होना चाहिए।

## चरण

| #   | चरण                                                                                                                                                     | सतह              | स्थिति                                                                                                                            |
| --- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| 1   | इंस्टॉल किए गए ऐप की Plugin अनुशंसाएँ (स्कैन, उम्मीदवार, AI मिलानकर्ता, विज़ार्ड चरण, `device.apps` Node कमांड)                                              | क्लासिक + मार्गदर्शित CLI | मर्ज किया गया ([#109668](https://github.com/openclaw/openclaw/pull/109668))                                                              |
| 2   | CLI कस्टोडियन आधार (प्रश्न शून्य, खोज का प्रदर्शन, स्वतः लागू करना + जन्म)                                                                                | मार्गदर्शित CLI           | मर्ज किया गया ([`a83ed13204f1`](https://github.com/openclaw/openclaw/commit/a83ed13204f118adf1009e5ac88d5afe1905b86c))                   |
| 3   | ब्राउज़र-प्रथम हैंडऑफ़ (GUI-सत्र पहचान, डैशबोर्ड-कनेक्शन की प्रतीक्षा, फ़ॉलबैक के रूप में TUI)                                                                | CLI → वेब            | मर्ज किया गया ([#110054](https://github.com/openclaw/openclaw/pull/110054))                                                              |
| 4   | वेब कस्टोडियन सतह (विकल्प कार्ड, `openclaw.chat` पर टाइप किया हुआ `question` फ़ील्ड, विज़ार्ड-चरण मिररिंग, प्रथम-रन हैंडऑफ़)                                 | Control UI           | मर्ज किया गया ([#110141](https://github.com/openclaw/openclaw/pull/110141), [#110242](https://github.com/openclaw/openclaw/pull/110242)) |
| 5   | जन्म और बूटस्ट्रैप (एक-बार अर्थविज्ञान वाला अनुशंसा स्टोर, स्वयं-नामकरण जन्म अनुक्रम, नए सेटअप के बाद स्वतः-जन्म हैंडऑफ़; अवतार क्रम स्थगित) | एजेंट बूटस्ट्रैप      | मर्ज किया गया ([#110173](https://github.com/openclaw/openclaw/pull/110173), [#110331](https://github.com/openclaw/openclaw/pull/110331)) |
| 6   | कस्टोडियन उपस्थिति PR1 (पिन की गई साइडबार प्रविष्टि, Settings में OpenClaw से पूछें, सामान्य-क्रोम देखभालकर्ता अभिवादन; इवेंट टिप्पणी और चैनल आह्वान PR2 में हैं)    | वेब + चैनल       | मर्ज किया गया ([#110269](https://github.com/openclaw/openclaw/pull/110269))                                                              |
| 7   | सुदृढ़ता (टूटी हुई कॉन्फ़िगरेशन पर कस्टोडियन उपलब्ध, आंशिक-सतह पुनर्प्राप्ति, स्वतः-doctor)                                                                   | Gateway              | अनुवर्ती                                                                                                                         |

## प्रत्येक चरण के कार्यान्वयन नोट्स

### चरण 1 — ऐप अनुशंसाएँ (PR #109668)

- स्कैनर: `src/infra/installed-apps.ts` (TCC-मुक्त macOS गणना; सिमलिंक किए गए
  `.app` बंडलों का अनुसरण करता है)।
- उम्मीदवार: आधिकारिक कैटलॉग + ClawHub खोज, कुल 20s बजट, ऑफ़लाइन होने पर सहजता से
  केवल-कैटलॉग उम्मीदवारों तक सीमित हो जाता है। कैटलॉग प्रविष्टियाँ शीर्ष-स्तरीय
  `id` के बिना पैकेज मेनिफ़ेस्ट हैं — उम्मीदवारों को हल किए गए
  Plugin आईडी से कुंजीबद्ध किया जाता है (वास्तविक बंडल कैटलॉग के विरुद्ध रिग्रेशन-परीक्षित; एक बार
  `entry.id` से कुंजीबद्ध करने पर पूरा कैटलॉग संकुचित हो गया था और हर आधिकारिक
  अनुशंसा हट गई थी)।
- AI मिलानकर्ता: सत्यापित रूट पर एक पूर्णता
  (`src/system-agent/setup-app-recommendations.ts`); कोई क्यूरेट किया हुआ बंडल-आईडी मानचित्र नहीं —
  मॉडल संयोगवश नामों के मेल को अस्वीकार करता है। आउटपुट को हल किए गए
  मॉडल के अपने `maxTokens` बजट से सीमित किया जाता है (स्पष्ट सीमा न दिए जाने पर
  स्ट्रीम परत इसे लागू करती है)।
- **आपूर्ति-श्रृंखला सुरक्षा**: ClawHub सूची का टेक्स्ट प्रकाशक द्वारा नियंत्रित होता है और
  मिलानकर्ता प्रॉम्प्ट तक पहुँचता है, इसलिए कोई सूची स्वयं को
  "अनुशंसित" के रूप में बढ़ावा दे सकती है। केवल आधिकारिक कैटलॉग प्रविष्टियाँ पहले से चुनी जा सकती हैं; ClawHub
  Skills के लिए हमेशा स्पष्ट टिक आवश्यक है और उन पर "तृतीय-पक्ष ClawHub
  Skill; इसके प्रकाशक का कोड इंस्टॉल करती है" लेबल होता है।
- Node कमांड `device.apps` (TS Node-होस्ट, Android एनवलप समानता), साझाकरण
  डिफ़ॉल्ट रूप से बंद; Gateway किल स्विच `wizard.appRecommendations`।
- डिलीवरी क्लासिक विज़ार्ड और मार्गदर्शित कस्टोडियन प्रवाह में रहती है
  (`src/wizard/setup.app-recommendations.ts`); बूटस्ट्रैप
  टेल पर पुनः लक्षित करना चरण 5 में बाकी है (सेवा पहले से इंजेक्ट करने योग्य इन्वेंटरी
  स्रोत लेती है)। एक-बार अर्थविज्ञान (स्वीकार किए जाने तक ही प्रस्ताव, सहेजा गया स्कैन) भी
  चरण 5 स्टोर के साथ लागू होता है; आज दोबारा चलाने पर फिर प्रस्ताव दिया जाता है।
- यह भी ठीक किया गया: कस्टम `completeSetupInference` प्रॉम्प्ट अब
  32-टोकन सत्यापन-जाँच आउटपुट सीमा इनहेरिट नहीं करते (`SETUP_INFERENCE_TEST_MAX_TOKENS`
  केवल "reply OK" जाँच पर लागू होता है)।

### चरण 2 — CLI कस्टोडियन आधार (PR #109841)

- `src/commands/onboard-guided.ts` में प्रवाह का पुनर्गठन; रिमोट-Gateway ऑनबोर्डिंग
  `handoffMode: "chat"` के माध्यम से अपना पुराना चैट हैंडऑफ़ बनाए रखता है।
- प्रश्न शून्य `wizard.accessMode` ("full" | "guarded") को सहेजता है; दोबारा चलाने पर
  सहेजा गया विकल्प डिफ़ॉल्ट होता है (डिफ़ॉल्ट स्वीकार करने से guarded कभी चुपचाप
  full में डाउनग्रेड नहीं हो सकता)। गार्डेड + मैन्युअल
  `listManualSetupInferenceOptions` (केवल कॉन्फ़िगरेशन/मेनिफ़ेस्ट, कोई जाँच नहीं) का उपयोग करता है और
  मेमोरी-स्रोत स्कैनिंग छोड़ देता है।
- खोज: विफलताओं का शांत संग्रह (एकल सारांश पंक्ति; विवरण
  "अन्य विकल्प देखें" के पीछे), कोडिंग-एजेंट टिप्पणी, घोषित रूट डिफ़ॉल्ट। टिप्पणी में
  सत्र गणना को तब तक स्थगित किया गया है (केवल गुणात्मक), जब तक एक सस्ता
  सत्र-गणना सीम उपलब्ध न हो।
- नए इंस्टॉल: `applySystemAgentSetup` (नियतात्मक संवादात्मक
  "हाँ"), फिर बूटस्ट्रैप संदेश के साथ सीड किए गए `launchTuiCli` के माध्यम से जन्म।
  कॉन्फ़िगर किए गए इंस्टॉल (पहले से मौजूद मॉडल या Gateway कॉन्फ़िगरेशन — विज़ार्ड
  टाइमस्टैम्प कुछ सिद्ध नहीं करते, वे configure/doctor के साथ साझा किए जाते हैं):
  केवल सत्यापन — कोई लागू करना नहीं, Gateway सेवा पुनः आरंभ नहीं। लागू करने में विफलता
  संवादात्मक चैट पर वापस जाती है।

### चरण 3 — ब्राउज़र-प्रथम हैंडऑफ़ (PR #110054, मर्ज किया गया)

- `src/commands/onboard-browser-handoff.ts` शुद्ध ग्राफ़िकल-सत्र
  पहचान (`SSH_CONNECTION`/`SSH_TTY`; Linux पर `DISPLAY`/`WAYLAND_DISPLAY`)
  और 60-सेकंड GUI / 300-सेकंड SSH प्रतीक्षा का स्वामी है। निर्देशित ऑनबोर्डिंग वर्तमान में
  हैंडऑफ़ को केवल macOS पर सक्षम करती है; `--tui` और अन्य प्लेटफ़ॉर्म
  टर्मिनल निकास बनाए रखते हैं। Linux/Windows सक्षमता अनुवर्ती कार्य है।
- Dashboard लिंक क्लासिक फ़ाइनलाइज़ की तरह उन्हीं `resolveAdvertisedControlUiLinks`,
  `resolveLocalControlUiProbeLinks`, और `buildOnboardingControlUiUrl` सहायकों का उपयोग करते हैं।
  ब्राउज़र लॉन्च साझा `openUrl` सहायक का उपयोग करता है।
- तत्परता मौजूदा `system-presence` RPC को एक **CLI-मोड लूपबैक
  क्लाइंट के रूप में पोल करती है, जो कॉन्फ़िगर किया गया साझा सीक्रेट प्रस्तुत करता है** — वही विश्वसनीय पथ जिसका प्रत्येक
  `openclaw` कमांड उपयोग करता है। कच्चे साझा-प्रमाणीकरण वाले Control UI क्लाइंट को
  SecretRef Gateway पर "device identity required" के साथ अस्वीकार कर दिया जाता है। पहुँच-योग्यता
  प्रीफ़्लाइट उसी लक्ष्य (और सीक्रेट) को हल करती है जिसे प्रतीक्षा लूप करता है, इसलिए
  गेट और प्रतीक्षा प्रमाणीकरण पर कभी असहमत नहीं हो सकते। हैंडऑफ़ केवल तभी पूर्ण होता है
  जब कनेक्टेड `openclaw-control-ui`/`webchat` उपस्थिति पंक्ति प्री-लॉन्च
  बेसलाइन की तुलना में नई हो (पहले से खुला Dashboard इसे
  पूर्ण नहीं कर सकता)।
- `gateway.controlUi.enabled: false` किसी भी URL के दिखाए जाने से पहले शॉर्ट-सर्किट करता है।
- एक पृथक समान-कॉन्फ़िगरेशन Gateway के विरुद्ध शुरू से अंत तक प्रमाणित: URL प्रिंट → वास्तविक
  ब्राउज़र कनेक्ट → "Dashboard कनेक्ट हो गया — आपके ब्राउज़र में जारी रखा जा रहा है" → कोई
  टर्मिनल निकास नहीं। पहले का "token mismatch" अवरोध परीक्षण-हार्नेस की
  कृत्रिम समस्या था — नीचे परीक्षण प्लेबुक देखें।

### चरण 4 — वेब कस्टोडियन सतह (मर्ज किया गया: #110141, #110242)

- `/custodian` पृष्ठ `openclaw.chat` पर विकल्प-कार्ड घटक के साथ
  (2-4 कार्ड, अधिकतम एक अनुशंसित, हमेशा छोड़ा जा सकने वाला); ऑनबोर्डिंग क्रोम
  `?onboarding=1` के माध्यम से; मॉडल-सेटअप का प्रथम-रन समापन इसमें हैंडऑफ़ करता है।
- संरचित प्रश्न `SystemAgentChatResult` पर एक टाइप किया हुआ योगात्मक `question` फ़ील्ड हैं
  (प्रति-विकल्प `reply` पाठ; macOS ऐप/TUI के लिए गद्य हमेशा स्वतंत्र रहता है)।
  उत्पादक: ऑनबोर्डिंग स्वागत के दोनों रूप और 2-4 बंद विकल्पों वाले
  होस्टेड विज़ार्ड चयन/पुष्टि चरण — वास्तविक चैनल विज़ार्ड कार्ड के रूप में रेंडर होते हैं।
  PR1 का स्ट्रिंग-मार्कर अस्थायी उपाय हटा दिया गया।
- सत्र स्वामित्व Gateway URL + प्रस्तुत किए गए प्रत्येक क्रेडेंशियल
  (टोकन, पासवर्ड, बूटस्ट्रैप टोकन, संग्रहीत डिवाइस टोकन — क्षणिक hello ड्रॉप के दौरान भी स्थिर)
  तक सीमित है; विफल उपयोगकर्ता टर्न कभी दोबारा चलाने योग्य नहीं होते; संवेदनशील
  इनपुट हूबहू भेजा जाता है और ट्रांसक्रिप्ट में छिपाया जाता है।

### चरण 5 — निकास और बूटस्ट्रैप (मर्ज किया गया: #110173, #110331)

- कस्टोडियन एक अनाम एजेंट बनाता है (टूल कॉल); एजेंट का बूटस्ट्रैप
  स्वयं नाम रखने से खुलता है। PR1 इस अनुष्ठान को तीन चरणों तक सीमित करके भेजता है (नाम → सोल
  पंक्ति → स्किल्स प्रश्न) और स्वयं बनाए गए अवतार/image-gen क्रम
  (मॉडल-जनित उम्मीदवार → प्रीसेट चिह्न → लोगो बनाए रखें) को अनुवर्ती कार्य के लिए टालता है। वही
  थ्रेड, अवतार अदला-बदली; पंजे का चिह्न कस्टोडियन के लिए आरक्षित रहता है। सहमत
  पहचान दो बार कायम रहती है: `IDENTITY.md`/`SOUL.md` में (जिसे एजेंट
  पढ़ता है) और `openclaw agents set-identity` के माध्यम से (जिसे चैनल और UI
  प्रदर्शित करते हैं)।
- अनुशंसाएँ (चरण 1 सेवा, एक-बार अर्थविज्ञान के साथ संग्रहीत स्कैन)
  बूटस्ट्रैप फ़ाइल हटाए जाने से पहले अंतिम बूटस्ट्रैप चरण के रूप में आती हैं: "न्यूनतम सेट
  या अधिकतम सुविधा?" बूटस्ट्रैप संग्रहीत प्रस्ताव को
  `openclaw onboard recommendations --json` के माध्यम से पढ़ता है (केवल अपारदर्शी इंस्टॉल ID) और
  विकल्प संभाले जाने के बाद उसे स्वीकार करता है, ताकि वह फिर कभी न पूछे। चैनल
  कनेक्ट बटन प्रति-चैनल सेटअप प्लेबुक रखते हैं; एजेंट संवादात्मक रूप से
  क्रेडेंशियल एकत्र करता है और कॉन्फ़िगरेशन लेखन कस्टोडियन को रिले करता है
  ("OpenClaw से पूछा जा रहा है…" प्रामाणिक मुहावरा है)।
- स्व-अधिगम की घोषणा नहीं, बल्कि उसके बारे में पूछा जाता है, और यह स्किल-वर्कशॉप
  की सहमति के रूप में भी काम करता है; ClawHub के रिलीज़-विश्वास, स्कैन, सत्यापन और अखंडता
  जाँचों के साथ प्रकाशक-कोड चेतावनी का वर्णन करें — कभी यह संकेत न दें कि प्रत्येक रिलीज़ हस्ताक्षरित है।
- ऑटो-निकास भेज दिया गया: नए इंस्टॉल पर सेटअप लागू करना निकास की घोषणा करता है और
  हैंडऑफ़ करता है (टर्मिनल TUI / Gateway क्लाइंट के लिए `open-agent`); वेब पृष्ठ
  एजेंट चैट में पहुँचता है, जहाँ "जागो, मेरे दोस्त!" ड्राफ़्ट पहले से भरा होता है।
  हैंडऑफ़ केवल स्वच्छ पोस्ट-राइट सत्यापन पर सक्रिय होता है। हटाने के बाद
  शून्य एजेंट होने पर स्वतः करने के बजाय प्रस्ताव देना अनुवर्ती परिष्करण बना हुआ है।

### चरण 6 — कस्टोडियन उपस्थिति (PR1 मर्ज किया गया: #110269; टिप्पणी/समन PR2 हैं)

- PR1 में भेजा गया: डिफ़ॉल्ट रूप से पिन की गई "OpenClaw" साइडबार प्रविष्टि (नए प्रोफ़ाइल;
  मौजूदा उपयोगकर्ता सहेजे गए पिन रखते हैं और कस्टमाइज़/More के माध्यम से इस तक पहुँचते हैं), पहली Settings प्रविष्टि के रूप में "OpenClaw से
  पूछें", और सामान्य-क्रोम `/custodian` विज़िट
  जो केयरटेकर अभिवादन का अनुरोध करती हैं (कोई ऑनबोर्डिंग स्वागत रूप नहीं), जहाँ
  Exit setup केवल ऑनबोर्डिंग मोड में रेंडर होता है। डॉक किए गए इनलाइन Settings पेन
  के लिए साझा वार्तालाप-दृश्य निष्कर्षण आवश्यक है (अनुवर्ती कार्य)।
- Clippy-विरोधी सुरक्षा सीमाओं के साथ घटना-प्रतिक्रियाशील टिप्पणी: केवल परिणामकारी या
  विफल परिवर्तन, और पूछे जाने के अलावा प्रति Settings विज़िट अधिकतम एक बार। यही
  घटना सीम बाद में कस्टोडियन को निम्नीकृत प्रमाणीकरण या टूटे
  चैनलों की आवाज़ बनाती है।
- चैनल: दैनिक उपयोग में अदृश्य (एजेंट रिले करता है); स्पष्ट
  समन और उसी थ्रेड में एजेंट-डाउन घटनाओं पर पहुँचा जा सकता है, जहाँ प्लेटफ़ॉर्म अनुमति देता है वहाँ
  इसका अपना नाम और पंजे वाला अवतार होता है।
- सेटअप में कमज़ोर मॉडल मिलने पर: `localModelLean` स्वतः सेट करें, और कस्टोडियन
  इसे स्पष्ट शब्दों में अपग्रेड प्रस्ताव के साथ बताता है।
- कस्टोडियन अपना आंतरिक उपनाम जानता है ("कुछ लोग मुझे
  कस्टोडियन कहते हैं — OpenClaw भी ठीक है") और एजेंट को हमेशा नाम से संदर्भित करता है।

### चरण 7 — प्रत्यास्थता (निर्माण से पहले स्वामी का निर्णय आवश्यक)

मूल रूपरेखा — "कॉन्फ़िगरेशन चाहे कितना भी टूटा हो, कस्टोडियन तक पहुँचना संभव होना चाहिए"
— रिपॉज़िटरी की सुरक्षा नीति से टकराती है: रूट गाइड
कहती है कि संरचनात्मक रूप से अमान्य कॉन्फ़िगरेशन होने पर Gateway **स्टार्टअप से इनकार करता है**,
और केवल SecretRef-स्वामी विफलताएँ कॉन्फ़िगर-अनुपलब्ध
क्षमताओं में निम्नीकृत होती हैं। अमान्य कॉन्फ़िगरेशन से कोई भी सतह सर्व करना नीति परिवर्तन है,
कार्यान्वयन विवरण नहीं। दो दायरे हैं, एक चुनें:

- **विकल्प A (अनुशंसित, नीति-अनुपालक): CLI-पक्षीय ऑटो-डॉक्टर।** जब कोई
  Gateway या CLI प्रारंभ ज्ञात-आकृति वाले अमान्य कॉन्फ़िगरेशन के कारण विफल होता है, तो CLI
  `openclaw doctor --fix` की पेशकश करता है (या सहमति से उसे चलाता है), फिर एक बार पुनः प्रयास करता है और
  स्पष्ट रूप से रिपोर्ट करता है। Gateway व्यवहार में कोई परिवर्तन नहीं; कस्टोडियन मौजूदा
  निम्नीकृत-SecretRef पथ और टर्मिनल के माध्यम से पहुँच योग्य रहता है।
- **विकल्प B (स्पष्ट स्वामी अनुमोदन + सुरक्षा समीक्षा आवश्यक): Gateway
  न्यूनतम-सतह मोड।** संरचनात्मक रूप से अमान्य कॉन्फ़िगरेशन होने पर, केवल
  कस्टोडियन वार्तालाप और डॉक्टर कार्रवाइयाँ सर्व करने वाली लॉक-डाउन सतह प्रारंभ करें। यह
  विफलता-बंद स्टार्टअप अनुबंध को फिर से लिखता है और किसी भी कोड से पहले
  इसकी अपनी प्रवेश-सुरक्षा रणनीति परिभाषित होनी चाहिए।

चरण 4-6 के शेष अनुवर्ती कार्य (ट्रैक किए गए, अनिर्धारित): निकास के लिए अवतार/image-gen
क्रम; टाइप किए हुए `question` फ़ील्ड का macOS ऐप रेंडरिंग;
कस्टोडियन के लिए डॉक किया गया इनलाइन Settings पेन (साझा वार्तालाप-दृश्य
निष्कर्षण आवश्यक); घटना-प्रतिक्रियाशील टिप्पणी और चैनल समन/एजेंट-डाउन पुनर्प्राप्ति
(चरण 6 PR2); कमज़ोर मॉडलों के लिए स्वचालित `localModelLean`; क्या मौजूदा
उपयोगकर्ताओं के सहेजे गए साइडबार पिन को OpenClaw प्रविष्टि अपनानी चाहिए।

## परीक्षण और लैंडिंग प्लेबुक (कठिन अनुभव से अर्जित; चरण 4-6 से पहले पढ़ें)

- **`OPENCLAW_STATE_DIR` Gateway सेवा को पृथक नहीं करता।**
  LaunchAgent लेबल (`ai.openclaw.gateway`) मशीन-वैश्विक है: पृथक स्टेट डायरेक्टरी वाला नया-इंस्टॉल
  ऑनबोर्डिंग परीक्षण वास्तविक मशीन की सेवा को फिर से लिखेगा और पुनः प्रारंभ करेगा
  (रैपर स्क्रिप्ट पृथक डायरेक्टरी के भीतर पहुँचती हैं; उस डायरेक्टरी को साफ़ करने पर अगला
  सेवा प्रारंभ टूट जाता है)। किसी भी नए-इंस्टॉल
  परीक्षण के बाद वास्तविक वातावरण से `openclaw gateway install --force && openclaw gateway
restart` के साथ पुनर्स्थापित करें और plist सत्यापित करें। उत्पाद अनुवर्ती:
  स्टेट-डायरेक्टरी-स्कोप्ड सेवा लेबल, या किसी बाहरी सेवा का पता लगाती ऑनबोर्डिंग।
- **सुरक्षित शुरू-से-अंत हार्नेस**: पृथक कॉन्फ़िगरेशन में पहले से एक `gateway`
  अनुभाग भरें (ताकि ऑनबोर्डिंग कॉन्फ़िगर-इंस्टॉल पथ ले और सेवा को कभी न छुए)
  और एक अतिरिक्त पोर्ट पर सादे टोकन के साथ `openclaw gateway run` को सादी फ़ोरग्राउंड प्रक्रिया के रूप में चलाएँ।
  उस हार्नेस ने वास्तविक ब्राउज़र कनेक्ट सहित चरण-3 लूप को प्रमाणित किया।
- **प्रमाणीकरण पथ केवल क्रेडेंशियल के आधार पर नहीं, बल्कि क्लाइंट पहचान के आधार पर भी अलग होते हैं।** उपस्थिति और
  अन्य ऑपरेटर रीड उसी कॉन्फ़िगरेशन के क्रेडेंशियल के साथ CLI-मोड लूपबैक क्लाइंट का उपयोग करते हैं।
  टोकन-प्रमाणीकरण वाले Gateway को साझा सीक्रेट चाहिए; SecretRef/none
  Gateway बिना टोकन के विश्वसनीय-लूपबैक प्रमाणीकरण पर वापस जा सकते हैं। Control
  UI-पहचान वाले ब्राउज़र क्लाइंट को डिवाइस पहचान या सुरक्षित-संदर्भ
  लूपबैक अनुदान चाहिए। किसी ऐसे Gateway के विरुद्ध प्रमाणीकरण करने वाला प्रोब, जो
  भिन्न कॉन्फ़िगरेशन सर्व करता है (LaunchAgent वाली समस्या देखें), "token mismatch" के साथ विफल होता है — उस
  कृत्रिम समस्या ने कुछ समय के लिए चरण 3 रोक दिया था।
- **समापन प्रोब**: `runSetupInferenceTest` सत्यापन प्रोब को
  32 आउटपुट टोकन तक सीमित करता है; कस्टम प्रॉम्प्ट सीमा को बायपास करते हैं और
  मॉडल के अपने `maxTokens` द्वारा सीमित होते हैं। रीजनिंग मॉडल उस बजट को पहले छिपी हुई
  रीजनिंग में खर्च करते हैं — खाली-पाठ वाला टर्न सामान्यतः दर्शाता है कि बजट वहीं समाप्त हो गया।
- **एजेंट लैंडिंग के लिए सटीक-हेड होस्टेड CI आवश्यक है।** भारी `CI` वर्कफ़्लो
  संगठन के लोड के दौरान पुश पर कतारबद्ध नहीं हो सकता; मेंटेनर फ़ॉलबैक PR शाखा पर
  रिलीज़-गेट डिस्पैच है:

  ```bash
  gh workflow run ci.yml --ref <branch> -f target_ref=<head-sha> -f release_gate=true -f pull_request_number=<pr>
  ```

  रन शाखा रेफ़ पर होना चाहिए ताकि
  `head_sha` मेल खाए, और शीर्षक
  `CI release gate <sha>` बनता है, जिसे `scripts/verify-pr-hosted-gates.mjs`
  स्वीकार करता है। फिर हमेशा की तरह `scripts/pr` तैयार/मर्ज करें।

- **केंद्रित परीक्षणों के अतिरिक्त CI द्वारा लागू गेट**: दस्तावेज़ मानचित्र
  (कोई भी दस्तावेज़ पृष्ठ जोड़ने के बाद `pnpm docs:map:gen`), oxlint (`no-map-spread`,
  `max-lines` — फ़ाइलें विभाजित करें, कभी दबाएँ नहीं), `check:test-types`, knip
  डेडकोड (केवल वही निर्यात करें जिसे उत्पादन उपयोग करता है; परीक्षणों को सार्वजनिक API से रूट करें),
  और लाइव-परीक्षण शार्ड वर्गीकारक
  (`test/scripts/test-live-shard.test.ts` में प्रत्येक नया `*.live.test.ts` सूचीबद्ध होना चाहिए)।

## निर्णय लॉग

- किल स्विच वाला जादुई स्कैन, सहमति-प्रथम नहीं (चरण 1; प्रकटीकरण
  स्कैनिंग प्रगति पंक्ति और परिणाम नोट में रहता है)।
- Node `device.apps` कमांड सहित पूर्ण वर्टिकल (चरण 1)।
- तृतीय-पक्ष ClawHub स्किल्स कभी पहले से चयनित नहीं होते और उन पर
  प्रकाशक का कोड इंस्टॉल करने का लेबल होता है; आधिकारिक प्रविष्टियाँ पहले से चेक की जा सकती हैं
  (चरण 1, भेजी गई सुरक्षा मुद्रा)।
- दो एक्सेस कार्ड, तीन नहीं; सहमति को विकल्प में पहले ही रखा गया है (चरण 2)।
- घोषणा के साथ ऑटो-निकास, अवरोधक बटन नहीं (चरण 2/5)।
- ब्राउज़र-प्रथम: टर्मिनल निकास फ़ॉलबैक है, कभी भी "टर्मिनल या
  ब्राउज़र?" प्रश्न नहीं (चरण 3)।
- कस्टोडियन को चैनल उपस्थिति मिलती है (समन + पुनर्प्राप्ति), केवल वेब/CLI नहीं
  (चरण 6)।
- निकास उसी थ्रेड में अवतार अदला-बदली के साथ होता है; पूर्ण होने के बाद
  ऐप नियमित UI में संक्रमण करता है (चरण 5)।
- सेटिंग्स सतह "Settings" नाम बनाए रखती है; कस्टोडियन उसे बदलने के बजाय
  वहीं (और साइडबार में) रहता है (चरण 6)।
- विकल्प कार्ड सीमित हैं: 2-4 विकल्प, ठीक एक अनुशंसित, हमेशा
  छोड़े जा सकने वाले; यही घटक ऑनबोर्डिंग और एजेंट प्रश्न टूल दोनों की सेवा करता है
  (चरण 4)।
- "OpenClaw से पूछा जा रहा है…" प्रामाणिक प्रत्यायोजन मुहावरा है; सोल्स शैली जोड़ सकती हैं,
  टूल वर्णन सादा रहता है (चरण 5)।
- कमज़ोर-मॉडल ट्रिमिंग समझाते समय उपयोगकर्ता-दृश्य प्रति कभी "code mode", "tools", या "context window"
  नहीं कहती (चरण 6)।

## ज्ञात कमियाँ और अनुवर्ती कार्य

- LaunchAgent लेबल state-dir के दायरे में नहीं है (ऊपर बताई गई परीक्षण संबंधी समस्या; साथ ही यह
  वास्तव में बहु-इंस्टेंस उत्पाद की एक कमी भी है)।
- सुझावों के केवल-एक-बार लागू होने के अर्थ-विज्ञान और संग्रहीत स्कैन (चरण 5); दोबारा चलाने पर
  वर्तमान में सुझाव फिर से दिए जाते हैं।
- ब्राउज़र हैंडऑफ़ केवल macOS के लिए है; Linux/Windows में इसे सक्षम करना लंबित है।
- सत्र-संख्या संबंधी चुटीली टिप्पणी गुणात्मक है; संख्याओं के लिए कम लागत वाला session-count सीम आवश्यक है।
- ब्राउज़र हैंडऑफ़ सामान्य डैशबोर्ड पर पहुँचता है; ऑनबोर्डिंग-मोड कस्टोडियन
  डीप-लिंक चरण 4 के साथ आएगा।
