---
read_when:
    - आप Plugin पैकेज इंस्टॉलेशन को डीबग कर रहे हैं
    - आप Plugin स्टार्टअप, डॉक्टर या पैकेज-मैनेजर इंस्टॉल व्यवहार बदल रहे हैं
    - आप पैकेज किए गए OpenClaw इंस्टॉलेशन या बंडल किए गए Plugin मैनिफ़ेस्ट का रखरखाव कर रहे हैं
sidebarTitle: Dependencies
summary: OpenClaw Plugin पैकेज कैसे इंस्टॉल करता है और Plugin निर्भरताओं का समाधान कैसे करता है
title: Plugin निर्भरता समाधान
x-i18n:
    generated_at: "2026-07-27T18:11:25Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: ae24a82568e275399cb7b68729d2805956792852612f84d6918850305f0eb243
    source_path: plugins/dependency-resolution.md
    workflow: 16
---

OpenClaw Plugin निर्भरताओं को केवल इंस्टॉल/अपडेट के समय संभालता है। रनटाइम
लोडिंग कभी भी पैकेज मैनेजर नहीं चलाती, निर्भरता ट्री की मरम्मत नहीं करती, या
OpenClaw पैकेज डायरेक्टरी में बदलाव नहीं करती।

## उत्तरदायित्व विभाजन

Plugin पैकेज अपने निर्भरता ग्राफ़ के स्वामी होते हैं:

- रनटाइम निर्भरताएँ Plugin पैकेज के `dependencies` या
  `optionalDependencies` में रहती हैं।
- SDK/कोर इंपोर्ट, पीयर या उपलब्ध कराए गए OpenClaw इंपोर्ट होते हैं।
- स्थानीय डेवलपमेंट Plugin अपनी पहले से इंस्टॉल की गई निर्भरताएँ स्वयं लाते हैं।
- npm और git Plugin, OpenClaw-स्वामित्व वाले पैकेज रूट में इंस्टॉल होते हैं।

OpenClaw केवल Plugin जीवनचक्र का स्वामी है:

- Plugin स्रोत खोजें।
- स्पष्ट रूप से अनुरोध किए जाने पर पैकेज इंस्टॉल या अपडेट करें।
- इंस्टॉल मेटाडेटा रिकॉर्ड करें।
- Plugin एंट्रीपॉइंट लोड करें।
- निर्भरताएँ न मिलने पर कार्रवाई योग्य त्रुटि के साथ विफल हों।

## इंस्टॉल रूट

OpenClaw प्रत्येक स्रोत के लिए स्थिर रूट का उपयोग करता है:

- npm पैकेज, प्रत्येक Plugin के प्रोजेक्ट में
  `~/.openclaw/npm/projects/<encoded-package>` के अंतर्गत इंस्टॉल होते हैं।
- git पैकेज `~/.openclaw/git` के अंतर्गत क्लोन होते हैं।
- स्थानीय/पाथ/आर्काइव इंस्टॉल को निर्भरता की मरम्मत किए बिना कॉपी या संदर्भित
  किया जाता है।

npm इंस्टॉल उस प्रत्येक-Plugin प्रोजेक्ट रूट में इसके साथ चलते हैं:

```bash
cd ~/.openclaw/npm/projects/<encoded-package>
npm install --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund
```

`openclaw plugins install npm-pack:<path.tgz>` स्थानीय npm-pack टारबॉल के लिए उसी प्रत्येक-Plugin npm
प्रोजेक्ट रूट का उपयोग करता है: OpenClaw टारबॉल का npm
मेटाडेटा पढ़ता है, उसे प्रबंधित प्रोजेक्ट में कॉपी की गई `file:` निर्भरता के रूप में जोड़ता है, ऊपर दिया गया
सामान्य npm इंस्टॉल चलाता है, फिर Plugin पर भरोसा करने से पहले इंस्टॉल किए गए लॉकफ़ाइल मेटाडेटा को
सत्यापित करता है। यह पाथ पैकेज-स्वीकृति और
रिलीज़-कैंडिडेट प्रमाण के लिए मौजूद है, जहाँ किसी स्थानीय पैक आर्टिफ़ैक्ट को उस
रजिस्ट्री आर्टिफ़ैक्ट की तरह व्यवहार करना चाहिए जिसका वह अनुकरण करता है।

प्रकाशित करने से पहले आधिकारिक या बाहरी Plugin पैकेजों का परीक्षण करते समय `npm-pack:` का उपयोग करें।
कच्चा आर्काइव या पाथ इंस्टॉल स्थानीय डीबगिंग के लिए उपयोगी है, लेकिन यह
इंस्टॉल किए गए npm या ClawHub
पैकेज के समान निर्भरता पाथ को प्रमाणित नहीं करता। `npm-pack:` प्रबंधित पैकेज इंस्टॉल संरचना को प्रमाणित करता है; यह स्वयं में
इस बात का प्रमाण नहीं है कि Plugin कैटलॉग से लिंक की गई आधिकारिक सामग्री है।

जब व्यवहार बंडल किए गए Plugin या विश्वसनीय आधिकारिक Plugin की स्थिति पर निर्भर हो,
तो स्थानीय पैकेज प्रमाण को कैटलॉग-समर्थित आधिकारिक इंस्टॉल या ऐसे
प्रकाशित पैकेज पाथ के साथ जोड़ें जो आधिकारिक भरोसा रिकॉर्ड करता हो। विशेषाधिकार-प्राप्त हेल्पर एक्सेस
और विश्वसनीय-आधिकारिक स्कोप प्रबंधन को उसी विश्वसनीय
इंस्टॉल पाथ पर सत्यापित किया जाना चाहिए, न कि स्थानीय टारबॉल इंस्टॉल से अनुमानित किया जाना चाहिए।

यदि कोई Plugin रनटाइम पर इंपोर्ट न मिलने के कारण विफल होता है, तो प्रबंधित प्रोजेक्ट की
हाथ से मरम्मत करने के बजाय पैकेज मैनिफ़ेस्ट ठीक करें। रनटाइम इंपोर्ट
Plugin पैकेज के `dependencies` या `optionalDependencies` में होने चाहिए; `devDependencies`
प्रबंधित रनटाइम प्रोजेक्ट के लिए इंस्टॉल नहीं किए जाते। `~/.openclaw/npm/projects/<encoded-package>` के भीतर
स्थानीय `npm install` किसी अस्थायी
डायग्नोस्टिक को संभव बना सकता है, लेकिन यह पैकेज-स्वीकृति प्रमाण नहीं है क्योंकि अगला इंस्टॉल या
अपडेट पैकेज मेटाडेटा से प्रोजेक्ट फिर से बनाता है।

npm ट्रांज़िटिव निर्भरताओं को Plugin पैकेज के पास, प्रत्येक-Plugin प्रोजेक्ट के
`node_modules` में होइस्ट कर सकता है। OpenClaw इंस्टॉल पर भरोसा करने से पहले प्रबंधित प्रोजेक्ट
रूट को स्कैन करता है और अनइंस्टॉल करने पर उस प्रोजेक्ट को हटा देता है, इसलिए
होइस्ट की गई रनटाइम निर्भरताएँ उस Plugin की सफ़ाई सीमा के भीतर रहती हैं।

प्रकाशित npm Plugin पैकेज `npm-shrinkwrap.json` के साथ भेजे जा सकते हैं; npm इंस्टॉल के दौरान उस
प्रकाशन-योग्य लॉकफ़ाइल का उपयोग करता है और OpenClaw का प्रबंधित npm प्रोजेक्ट रूट
सामान्य इंस्टॉल पाथ के माध्यम से इसका समर्थन करता है। OpenClaw-स्वामित्व वाले प्रकाशन-योग्य
Plugin पैकेजों में उस पैकेज के प्रकाशित निर्भरता ग्राफ़ से जनरेट किया गया पैकेज-स्थानीय श्रिंकरैप
शामिल होना चाहिए:

```bash
pnpm deps:shrinkwrap:generate
pnpm deps:shrinkwrap:check
```

जनरेटर Plugin `devDependencies` को हटाता है, वर्कस्पेस ओवरराइड
नीति लागू करता है और `openclaw.release.publishToNpm: true` वाले प्रत्येक Plugin के लिए
`extensions/<id>/npm-shrinkwrap.json` लिखता है। तृतीय-पक्ष Plugin पैकेज भी
श्रिंकरैप के साथ भेजे जा सकते हैं; OpenClaw को समुदाय पैकेजों के लिए इसकी आवश्यकता नहीं है, लेकिन
मौजूद होने पर npm इसका पालन करता है।

किसी स्थानीय पैकेज को रिलीज़-कैंडिडेट प्रमाण मानने से पहले, उस
टारबॉल का निरीक्षण करें जिसे इंस्टॉल किया जाएगा:

```bash
npm pack --pack-destination /tmp
tar -xOf /tmp/<plugin-package>.tgz package/package.json
tar -tf /tmp/<plugin-package>.tgz | grep '^package/dist/'
```

निर्भरता परिवर्तनों के लिए यह भी सत्यापित करें कि कोई प्रोडक्शन इंस्टॉल
डेवलपमेंट निर्भरताओं के बिना रनटाइम पैकेजों को रिज़ॉल्व कर सकता है:

```bash
tmpdir=$(mktemp -d)
(
  cd "$tmpdir"
  npm init -y >/dev/null
  npm install --package-lock-only --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts /tmp/<plugin-package>.tgz
)
rm -rf "$tmpdir"
```

OpenClaw-स्वामित्व वाले npm Plugin पैकेज स्पष्ट
`bundledDependencies` के साथ भी प्रकाशित हो सकते हैं। npm प्रकाशन पाथ रनटाइम निर्भरता
नाम सूची को ओवरले करता है, प्रकाशित मैनिफ़ेस्ट से केवल-डेवलपमेंट वर्कस्पेस मेटाडेटा हटाता है,
पैकेज-स्थानीय रनटाइम निर्भरताओं के लिए स्क्रिप्ट-रहित npm इंस्टॉल चलाता है,
फिर उन निर्भरता फ़ाइलों को शामिल करके Plugin टारबॉल को पैक या प्रकाशित करता है।
नेटिव-भारी पैकेज (Codex, ACPX, Copilot, llama.cpp,
memory-lancedb, Tlon)
`openclaw.release.bundleRuntimeDependencies: false` के साथ इससे बाहर रहते हैं; वे फिर भी
श्रिंकरैप के साथ भेजे जाते हैं, लेकिन हर प्लेटफ़ॉर्म बाइनरी को Plugin टारबॉल में
एम्बेड करने के बजाय npm इंस्टॉल के दौरान रनटाइम निर्भरताएँ रिज़ॉल्व करता है। रूट `openclaw`
पैकेज अपना पूरा निर्भरता ट्री बंडल नहीं करता।

`openclaw/plugin-sdk/*` इंपोर्ट करने वाले Plugin, `openclaw` को पीयर
निर्भरता के रूप में घोषित करते हैं। OpenClaw npm को होस्ट पैकेज की अलग रजिस्ट्री प्रति
प्रबंधित प्रोजेक्ट में इंस्टॉल नहीं करने देता, क्योंकि पुराना होस्ट पैकेज उस Plugin के भीतर
npm के पीयर रिज़ॉल्यूशन को प्रभावित कर सकता है। प्रबंधित npm इंस्टॉल, npm पीयर
रिज़ॉल्यूशन/मैटेरियलाइज़ेशन को छोड़ देते हैं और OpenClaw इंस्टॉल या अपडेट के बाद,
होस्ट पीयर घोषित करने वाले इंस्टॉल किए गए पैकेजों के लिए Plugin-स्थानीय
`node_modules/openclaw` लिंक फिर से स्थापित करता है।

git इंस्टॉल रिपॉज़िटरी को क्लोन या रीफ़्रेश करते हैं, फिर यह चलाते हैं:

```bash
npm install --omit=dev --ignore-scripts --no-audit --no-fund
```

इसके बाद इंस्टॉल किया गया Plugin उसी पैकेज डायरेक्टरी से लोड होता है, इसलिए
पैकेज-स्थानीय और पैरेंट `node_modules` रिज़ॉल्यूशन उसी तरह काम करते हैं जैसे
किसी सामान्य Node पैकेज के लिए करते हैं।

## स्थानीय Plugin

स्थानीय Plugin डेवलपर-नियंत्रित डायरेक्टरी होते हैं। OpenClaw उनके लिए कभी भी
`npm install`, `pnpm install`, या निर्भरता मरम्मत नहीं चलाता; यदि किसी स्थानीय
Plugin की निर्भरताएँ हैं, तो उसे लोड करने से पहले उन्हें उसी Plugin में इंस्टॉल करें।

तृतीय-पक्ष TypeScript स्थानीय Plugin आपातकालीन पाथ के रूप में Jiti के माध्यम से लोड होते हैं।
पैकेज किए गए JavaScript Plugin और बंडल किए गए आंतरिक Plugin इसके बजाय नेटिव
import/require के माध्यम से लोड होते हैं।

## स्टार्टअप और रीलोड

Gateway स्टार्टअप और कॉन्फ़िग रीलोड कभी भी Plugin निर्भरताएँ इंस्टॉल नहीं करते। वे
Plugin इंस्टॉल रिकॉर्ड पढ़ते हैं, एंट्रीपॉइंट की गणना करते हैं और उसे लोड करते हैं।

रनटाइम पर कोई निर्भरता न मिलने पर Plugin लोड ऐसी त्रुटि के साथ विफल होता है जो
ऑपरेटर को स्पष्ट समाधान बताती है:

```bash
openclaw plugins update <id>
openclaw plugins install <source>
openclaw doctor --fix
```

`doctor --fix` पुराने OpenClaw-जनरेटेड निर्भरता स्टेट को साफ़ करता है और
जब कॉन्फ़िग अभी भी डाउनलोड किए जा सकने वाले Plugin का संदर्भ देता हो, तब स्थानीय इंस्टॉल रिकॉर्ड में
न मिलने वाले उन Plugin को पुनर्प्राप्त कर सकता है। Doctor पहले से इंस्टॉल किए गए स्थानीय Plugin की
निर्भरताओं की मरम्मत नहीं करता।

## बंडल किए गए Plugin

हल्के और कोर-महत्वपूर्ण बंडल किए गए Plugin, OpenClaw के हिस्से के रूप में भेजे जाते हैं। उनमें
या तो कोई भारी रनटाइम निर्भरता ट्री नहीं होना चाहिए, या उन्हें
ClawHub/npm पर डाउनलोड किए जा सकने वाले पैकेज में स्थानांतरित किया जाना चाहिए।

कोर पैकेज में भेजे जाने वाले, बाहरी रूप से इंस्टॉल होने वाले या केवल स्रोत के रूप में रहने वाले Plugin की
वर्तमान जनरेट की गई सूची के लिए,
[Plugin इन्वेंटरी](/hi/plugins/plugin-inventory) देखें।

बंडल किए गए Plugin मैनिफ़ेस्ट को निर्भरता स्टेजिंग का अनुरोध नहीं करना चाहिए। बड़ी या
वैकल्पिक Plugin कार्यक्षमता को सामान्य Plugin के रूप में पैकेज किया जाना चाहिए और
तृतीय-पक्ष Plugin के समान npm/git/ClawHub पाथ से इंस्टॉल किया जाना चाहिए।

स्रोत चेकआउट में OpenClaw रिपॉज़िटरी को pnpm मोनोरिपो मानता है।
`pnpm install` के बाद, बंडल किए गए Plugin `extensions/<id>` से लोड होते हैं ताकि
पैकेज-स्थानीय वर्कस्पेस निर्भरताएँ उपलब्ध हों और संपादन सीधे लागू हों।
स्रोत चेकआउट डेवलपमेंट केवल pnpm पर आधारित है; रिपॉज़िटरी रूट पर सामान्य `npm install`
बंडल किए गए Plugin की निर्भरताएँ तैयार नहीं करता।

| इंस्टॉल संरचना                    | बंडल किए गए Plugin का स्थान               | निर्भरता स्वामी                                                     |
| -------------------------------- | ------------------------------------- | -------------------------------------------------------------------- |
| `npm install -g openclaw`        | पैकेज के भीतर निर्मित रनटाइम ट्री | OpenClaw पैकेज और स्पष्ट Plugin इंस्टॉल/अपडेट/Doctor प्रवाह     |
| Git चेकआउट और `pnpm install` | `extensions/<id>` वर्कस्पेस पैकेज  | pnpm वर्कस्पेस, जिसमें प्रत्येक Plugin पैकेज की अपनी निर्भरताएँ शामिल हैं |
| `openclaw plugins install ...`   | प्रबंधित npm प्रोजेक्ट/git/ClawHub रूट  | Plugin इंस्टॉल/अपडेट प्रवाह                                       |

## पुराने अवशेषों की सफ़ाई

OpenClaw के पुराने संस्करण स्टार्टअप पर या Doctor मरम्मत के दौरान बंडल किए गए Plugin की
निर्भरता रूट जनरेट करते थे। वर्तमान Doctor सफ़ाई, `--fix` के साथ उन पुराने
डायरेक्टरी और सिमलिंक को हटाती है, जिनमें पुराने `plugin-runtime-deps`
रूट, हटाए गए `plugin-runtime-deps` लक्ष्यों की ओर संकेत करने वाले ग्लोबल Node-प्रीफ़िक्स पैकेज सिमलिंक,
`.openclaw-runtime-deps*` मैनिफ़ेस्ट, जनरेट किए गए
Plugin `node_modules`, इंस्टॉल स्टेज डायरेक्टरी और पैकेज-स्थानीय pnpm
स्टोर शामिल हैं। पैकेज्ड पोस्टइंस्टॉल पुराने लक्ष्य रूट हटाने से पहले उन ग्लोबल सिमलिंक को भी हटाता है,
ताकि अपग्रेड के बाद टूटे हुए ESM पैकेज इंपोर्ट न छूटें।

पुराने npm इंस्टॉल साझा `~/.openclaw/npm/node_modules` रूट का भी उपयोग करते थे।
वर्तमान इंस्टॉल, अपडेट, अनइंस्टॉल और Doctor प्रवाह अब भी उस
पुराने फ़्लैट रूट को केवल पुनर्प्राप्ति और सफ़ाई के लिए पहचानते हैं। नए npm इंस्टॉल
इसके बजाय प्रत्येक-Plugin प्रोजेक्ट रूट बनाते हैं।
