SSD Nodes Learn 🎉 VPS $5.50/माह से
गाइड Matt Connorलेखक: Matt Connor

VPS पर DeepSeek Harness कैसे सुरक्षित रूप से चलाएं

VPS पर DeepSeek Harness को सुरक्षित रूप से इंस्टॉल करने का तरीका जानें। npm वर्ज़न पिन करें, प्लगइन की कार्यक्षमता समझें और SSH टनल के जरिए पोर्ट 3080 पर वेब UI एक्सेस करें।

DeepSeek Harness क्या है

DeepSeek Harness (dsh) एक Node.js एजेंट रनटाइम है जिसे आप VPS (virtual private server) पर चला सकते हैं। इसे चलाने का सुरक्षित तरीका यह है कि इसे 127.0.0.1 से bind किया जाए और आपका ब्राउज़र SSH (secure shell) टनल के माध्यम से उस तक पहुँचे। यह टर्मिनल के बजाय पोर्ट 3080 पर एक वेब UI (user interface) प्रदान करता है। यह वेब सर्वर अपना कोई पासवर्ड नहीं मांगता है, इसलिए पोर्ट 3080 को public करने का अर्थ है कि कोई भी व्यक्ति जो इसे ढूँढ लेता है, उसे एक ऐसा एजेंट मिल जाएगा जो आपकी फाइलों को पढ़ सकता है और आपके Linux यूजर के रूप में कमांड चला सकता है।

DeepSeek ने इसे 13 अगस्त 2026 को MIT लाइसेंस के तहत npm पैकेज @deepseek-ai/dsh के रूप में जारी किया। यह प्रोजेक्ट खुद को डेवलपर प्रीव्यू बताता है और स्पष्ट करता है कि इसमें ऐसे बदलाव अपेक्षित हैं जो कम्पैटिबिलिटी को तोड़ सकते हैं। नीचे दिए गए सभी वर्ज़न नंबर अगस्त 2026 के स्नैपशॉट हैं, इसलिए किसी महत्वपूर्ण सर्वर पर कुछ भी कॉपी करने से पहले रिपॉजिटरी की जाँच अवश्य करें।

पूरे डिज़ाइन में एक ही विचार काम करता है: सब कुछ एक प्लगइन है। मॉडल एडाप्टर, टूल रजिस्ट्री, सेशन लॉग, सैंडबॉक्स, शेड्यूलर और स्वयं एजेंट लूप, ये सभी एक साझा संदर्भ (shared context) में लोड किए गए प्लगइन्स हैं और इनमें से किसी को भी बदला जा सकता है। इसमें कोई ऐसा विशेषाधिकार प्राप्त कोर (privileged core) नहीं है जिसे प्लगइन्स केवल सजाते हों। यही वह विशेषता है जो इस हार्नेस को आज़माने लायक बनाती है, और यही वह जगह है जहाँ एकमात्र वास्तविक जोखिम मौजूद है।

Harness एक model नहीं है

Harness, agent loop को चलाता है। Reasoning किसी अन्य स्थान पर स्थित model में होती है, इसलिए जब तक आप इसे API (application programming interface) key या अपने द्वारा host किए गए model endpoint का पता नहीं देते, तब तक कुछ भी काम नहीं करेगा।

आप इसे UI में Settings और फिर Models के अंतर्गत configure करते हैं। Catalog में बड़े API providers (DeepSeek, OpenAI, Anthropic) के लिए तैयार cards मौजूद हैं, जहाँ आप key paste करते हैं। "Add a custom provider" एक महत्वपूर्ण विकल्प है: यह एक provider ID, display name, base URL, API protocol और credential लेता है। यह OpenAI-compatible protocol का उपयोग करता है, इसलिए कोई भी gateway या local server जो इस protocol को implement करता है, वह काम करेगा। Custom providers आपके लिए model list भरने हेतु OpenAI-compatible GET /models endpoint को भी query कर सकते हैं।

इसी तरह आप harness को उसी VPS पर मौजूद model की ओर point करते हैं। Ollama, http://127.0.0.1:11434/v1/ पर एक OpenAI-compatible API expose करता है। इसे API key field में किसी भी string की आवश्यकता होती है, जिसे convention के अनुसार ollama रखा जाता है, क्योंकि यह field अनिवार्य है लेकिन बाद में ignore कर दी जाती है। क्या आपके VPS पर fit होने वाला छोटा model एक agent को चलाने के लिए पर्याप्त है, यह एक कठिन प्रश्न है, और Ollama और vLLM के बीच एक local model server के रूप में अंतर यह तय करता है कि इसके लिए आपकी कितनी RAM खर्च होगी।

UI में type की गई keys write-only होती हैं। Harness उन्हें $DSH_HOME/.credentials.yaml में store करता है और केवल एक credential reference को settings.yaml में रखता है। $DSH_HOME का default मान ~/.dsh होता है। इस file को password file की तरह ही सुरक्षित रखें, क्योंकि यह वास्तव में वही है: जो कोई भी इसे पढ़ सकता है, वह आपके API budget का उपयोग कर सकता है।

इंस्टॉलेशन से पहले आपकी आवश्यकताएं

  • Ubuntu 24.04 या किसी अन्य वर्तमान Linux पर चलने वाला एक VPS, जिसमें SSH एक्सेस हो
  • Node.js 22.19 या 22.x लाइन का नया वर्ज़न, या Node.js 24 और उससे ऊपर का वर्ज़न, जिस पर यह प्रोजेक्ट बिल्ड और टेस्ट किया जाता है
  • एक सामान्य यूजर अकाउंट, न कि root, क्योंकि एजेंट उस यूजर के रूप में शेल कमांड चलाता है जिसने प्रोसेस शुरू की है
  • यदि आप प्लगइन्स इंस्टॉल करने की योजना बना रहे हैं तो PATH पर pnpm होना चाहिए, क्योंकि प्लगइन कमांड इसे शेल आउट करता है
  • आपके फायरवॉल और आपके प्रदाता के अलग नेटवर्क फायरवॉल पर पोर्ट 3080 बंद होना चाहिए

Ubuntu का अपना nodejs पैकेज उस वर्ज़न से पुराना है जिसकी इस हार्नेस को आवश्यकता है, इसलिए apt install nodejs का उपयोग करने के बजाय Node को NodeSource या nvm से इंस्टॉल करें। यदि VPS नया है, तो किसी भी अन्य काम से पहले SSH को हार्डन करना दस मिनट का समय देने लायक है, क्योंकि आप जिस टनल पर निर्भर होने वाले हैं, वह केवल उसके पीछे मौजूद SSH सर्वर जितनी ही सुरक्षित है।

VPS पर DeepSeek Harness इंस्टॉल करना, एक निश्चित version पर पिन करना

node --version
npx @deepseek-ai/dsh@0.1.0-rc.6 web

npx पैकेज को डाउनलोड करता है और इसके dsh बाइनरी को चलाता है। web, --profile web का एक उपनाम (alias) है, जो ब्राउज़र एप्लिकेशन को बूट करता है, और यह प्रक्रिया उस पते को प्रिंट करती है जिस पर यह लिसन (listen) कर रही है। डिफ़ॉल्ट पता http://127.0.0.1:3080 है।

वर्जन को पिन करें। npx @deepseek-ai/dsh web उस चीज़ को रिज़ॉल्व करता है जिस पर latest टैग आपके चलाने के समय पॉइंट कर रहा है, और प्रोजेक्ट ने पहले ही कई रिलीज़ कैंडिडेट जारी कर दिए हैं और कहा है कि ब्रेकिंग बदलाव आने वाले हैं। 0.1.0-rc.6 वह है जिस पर latest ने 13 अगस्त 2026 को पॉइंट किया था। एक पिन किए गए वर्जन का मतलब है कि जो बॉक्स आप आज सेट करते हैं, वह अगले महीने भी वैसा ही व्यवहार करेगा, इसलिए अपग्रेड करना एक ऐसा निर्णय बन जाता है जिसे आप खुद लेते हैं, न कि कोई ऐसी दुर्घटना जिसका पता आपको बाद में चलता है।

दैनिक उपयोग के लिए, इसे हर बार स्टार्ट करने पर फिर से रिज़ॉल्व करने के बजाय एक बार इंस्टॉल करें।

npm install -g @deepseek-ai/dsh@0.1.0-rc.6
dsh --profile web --help

वह दूसरी लाइन चलाना सार्थक है, क्योंकि लॉन्चर और वेब ऐप के फ्लैग सेट अलग-अलग होते हैं। dsh --help लॉन्चर के अपने विकल्प दिखाता है। dsh --profile web --help उन फ्लैग्स को दिखाता है जिन्हें वेब एप्लिकेशन स्वीकार करता है, जहाँ --port, --host और दोहराए जाने योग्य --trusted-host मौजूद होते हैं।

अब पुष्टि करें कि यह किस पर लिसन कर रहा है।

ss -tlnp | grep 3080

लोकल एड्रेस कॉलम में 127.0.0.1:3080 लिखा होना चाहिए। यदि इसमें 0.0.0.0:3080 लिखा है, तो UI इंटरनेट से एक्सेस किया जा सकता है, और आपको कुछ भी और करने से पहले इस प्रक्रिया को रोक देना चाहिए।

पोर्ट 3080 को कभी भी पब्लिक क्यों नहीं करना चाहिए

इस वेब सर्वर में कोई authentication layer नहीं है। इसका configuration केवल एक listen host और listen port को expose करता है, और यही इसका पूरा attack surface है। Non-loopback deployments के लिए access control एक अलग trusted-host सेटिंग है, जो कि login screen नहीं है।

अब विचार करें कि उस पोर्ट के पीछे क्या है। यह agent workspace में फाइलों को edit करता है और shell commands चलाता है, और आपके provider credentials इसके पास ही डिस्क पर मौजूद होते हैं। इसलिए, एक खुला पोर्ट 3080 वास्तव में एक chat interface के साथ एक remote shell है, जो उस user के रूप में चल रहा है जिसने इसे शुरू किया है, और इसमें आपकी API key भी जुड़ी हुई है। इसके लिए किसी exploit की आवश्यकता नहीं है। हमलावरों को केवल पोर्ट नंबर की जरूरत है, और scanners किसी host के ऑनलाइन आने के कुछ ही घंटों के भीतर पोर्ट नंबर ढूंढ लेते हैं।

CLI (command line interface) भी इस बात से सहमत है। 0.1.0-rc.6 के बाद से, यह जानबूझकर --host 0.0.0.0 को सपोर्ट नहीं करता है और शुरू होने के बजाय usage error के साथ बंद हो जाता है। यह इनकार एक फीचर है, इसलिए इसे हटाने के लिए किसी patch की तलाश न करें।

जब tunnel आपके लिए उपयुक्त न हो, तो दो अन्य deployments उचित हैं। सर्वर को एक private overlay network पर रखें ताकि उसके पास केवल ऐसा address हो जिस तक आपके अपने devices ही पहुँच सकें, जो कि एक self-hosted Headscale control server आपको प्रदान करता है। या फिर इसके सामने एक reverse proxy रखें जो पोर्ट 3080 तक पहुँचने से पहले request को authenticate करे, उदाहरण के लिए एक Authentik single sign-on server जो forward auth का उपयोग करता है। बिना authentication वाला reverse proxy कोई security control नहीं है। यह केवल एक लंबा URL है।

SSH tunnel के माध्यम से web UI तक पहुँचें

इसे अपने laptop पर चलाएँ, server पर नहीं।

ssh -N -L 3080:127.0.0.1:3080 you@your-server

-L आपके laptop पर port 3080 खोलता है और जो कुछ भी इससे जुड़ता है, उसे encrypted SSH session के माध्यम से आगे भेजता है (forward करता है)। 127.0.0.1:3080 भाग server पर resolve होता है, इसलिए connection loopback से harness तक पहुँचता है, ठीक वैसे ही जैसे आप उस machine पर बैठे हों। -N का अर्थ है कि remote shell शुरू न करें, क्योंकि आपको केवल port forwarding की आवश्यकता है।

इसके बाद अपने local browser में http://127.0.0.1:3080 खोलें। यदि आपके laptop पर port 3080 पहले से ही व्यस्त है, तो बाईं ओर की संख्या बदलें: ssh -N -L 3180:127.0.0.1:3080 you@your-server, और फिर http://127.0.0.1:3180 पर जाएँ। बाईं ओर की संख्या local है और दाईं ओर की संख्या server से संबंधित है, इसलिए केवल बाईं ओर वाली संख्या ही बदलें।

इसे ~/.ssh/config में save करें ताकि आपको इसे बार-बार टाइप न करना पड़े।

Host dsh
  HostName 203.0.113.10
  User deploy
  IdentityFile ~/.ssh/id_ed25519
  LocalForward 3080 127.0.0.1:3080

उसके बाद, ssh -N dsh tunnel शुरू कर देता है। यदि browser यह रिपोर्ट करता है कि connection refused है, तो इसका सामान्य अर्थ यह है कि tunnel तो सक्रिय है लेकिन दूसरी तरफ कोई service listening मोड में नहीं है, क्योंकि SSH port को forward कर देता है चाहे harness चल रहा हो या नहीं। ऊपर दिए गए ss command के साथ server की जाँच करें।

लॉग आउट करने के बाद भी harness को चालू रखना

npx कमांड आपके शेल के बंद होते ही समाप्त हो जाती है। एक systemd user service बनी रहती है, और यह क्रैश या रीबूट के बाद harness को पुनः चालू कर देती है।

loginctl enable-linger $USER
mkdir -p ~/.config/systemd/user
command -v dsh

enable-linger इसलिए महत्वपूर्ण है क्योंकि user services सामान्यतः आपके अंतिम सत्र (session) के समाप्त होते ही रुक जाती हैं, इसलिए इसके बिना टनल बंद करते ही harness समाप्त हो जाएगा। command -v dsh द्वारा प्रिंट किए गए absolute path को unit में डालें, क्योंकि systemd उस PATH को नहीं खोजता है जिसे आपका लॉगिन शेल बनाता है।

[Unit]
Description=DeepSeek Harness web UI
After=network-online.target

[Service]
Type=simple
WorkingDirectory=%h/projects/site
ExecStart=/usr/local/bin/dsh web
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

WorkingDirectory केवल दिखावे के लिए नहीं है। dsh प्रक्रिया अपनी invoking directory का उपयोग डिफ़ॉल्ट फाइलसिस्टम लोकेशन के रूप में करती है, इसलिए गलत जगह पर शुरू की गई service एजेंट को गलत डिफ़ॉल्ट वर्कस्पेस दे देती है। आप अभी भी UI में वर्कस्पेस चुन सकते हैं।

systemctl --user daemon-reload
systemctl --user enable --now dsh
systemctl --user status dsh

जो unit शुरू होने से मना कर देती है, उसका कारण लगभग हमेशा गलत ExecStart पाथ या Node का वह वर्ज़न होता है जिसे बाइनरी अस्वीकार कर देती है, और journalctl --user -u dsh -n 50 यह बताता है कि कौन सा वर्ज़न है। यही पैटर्न VPS पर किसी भी कोडिंग एजेंट को चालू रखने के लिए भी लागू होता है, और विफलता के कारण (failure modes) समान ही होते हैं।

प्लगइन क्या कर सकता है

प्लगइन एक ऐसा मॉड्यूल है जो साझा संदर्भ (shared context) में सेवाएं, टाइप किए गए इवेंट और प्रतिवर्ती प्रभाव (reversible effects) जोड़ता है। इसके एक्सटेंशन पॉइंट्स को ध्यान से पढ़ना आवश्यक है:

  • ctx.llm पर एक मॉडल प्रदाता (model provider) रजिस्टर करें
  • ctx.tools पर मॉडल-फेसिंग टूल्स जोड़ें
  • ctx.shell के पीछे शेल बैकएंड प्रदान करें
  • ctx.fs के पीछे फाइलसिस्टम एक्सेस या पॉलिसी प्रदान करें
  • ctx.commands पर मानवीय कमांड रजिस्टर करें
  • ctx.jobs के माध्यम से बैकग्राउंड कार्य चलाएं
  • ctx.sandbox बैकएंड के साथ स्पॉन की गई प्रक्रियाओं (spawned processes) को रैप करें
  • agent/* और tools/* इवेंट्स के माध्यम से अनुरोधों और टूल कॉल्स को इंटरसेप्ट करें
  • टिकाऊ सत्र स्थिति (durable session state) का विस्तार करें
  • ctx.agents के माध्यम से UI को संचालित करें

इस सूची को उस नजरिए से पढ़ें जैसे एक हमलावर पढ़ता है। एक प्लगइन फाइलसिस्टम लेयर और शेल लेयर की आपूर्ति कर सकता है, और यह मॉडल द्वारा की जाने वाली हर टूल कॉल के बीच में बैठ सकता है। प्लगइन और इन सीम्स (seams) के बीच कोई अनुमति संवाद (permission dialog) नहीं होता है, क्योंकि एक प्लगइन सामान्य Node कोड होता है जिसे बाकी सब चीजों की तरह ही उसी प्रोसेस में लोड किया जाता है। प्लगइन इंस्टॉल करना किसी अजनबी के कोड को आपके एजेंट की अनुमतियों के साथ चलाना है, और आपके एजेंट की अनुमतियाँ आपके Unix यूजर की अनुमतियाँ होती हैं।

यह वही विश्वास का निर्णय है जो आप VPS पर एजेंट से MCP सर्वर को जोड़ते समय लेते हैं, जहाँ MCP का अर्थ मॉडल कॉन्टेक्स्ट प्रोटोकॉल है। यही कारण है कि VPS पर कोडिंग एजेंट को सुरक्षित रूप से चलाना मॉडल के बजाय उस अकाउंट से शुरू होता है जिसके तहत वह चलता है, और यही कारण है कि npm सप्लाई चेन हमले सर्वर पर इतने गंभीर होते हैं: इंस्टॉल स्टेप ही समझौता (compromise) है, और आपको कोई चेतावनी नहीं मिलती है।

प्लगइन्स कहाँ से आते हैं

प्लगइन्स प्रोफाइल्स में रहते हैं। प्रोफाइल एक नामित संरचना है जो $DSH_HOME के अंतर्गत संग्रहीत होती है, जिसका डिफ़ॉल्ट मान ~/.dsh है, और प्रत्येक प्रोफाइल डायरेक्टरी उन आउट-ऑफ-ट्री प्लगइन्स को रखती है जिन्हें वह इंस्टॉल करती है। CLI आपके तर्कों (arguments) को सीधे pnpm पर फॉरवर्ड करके उन्हें प्रबंधित करता है, जिसमें प्रोफाइल डायरेक्टरी का उपयोग वर्किंग डायरेक्टरी के रूप में किया जाता है।

dsh plugin --profile web add github:deepseek-harness/turtle-ui
dsh plugin --profile web remove turtle-ui

चूंकि तर्क pnpm तक बिना किसी बदलाव के पहुँचते हैं, इसलिए add, remove, update और why वैसे ही व्यवहार करते हैं जैसे वे किसी भी pnpm प्रोजेक्ट में करते हैं, और एक प्लगइन npm पैकेज या GitHub रेफरेंस हो सकता है। pnpm का पहले PATH पर मौजूद होना आवश्यक है। Node 22 और उसके बाद के वर्ज़न पर, corepack enable pnpm इसे वहाँ डाल देता है।

डिस्कवरी एक GitHub टॉपिक के माध्यम से काम करती है। प्लगइन लेखक अपने रिपॉजिटरी में dsh-plugin टॉपिक जोड़ते हैं, और उस टॉपिक को ब्राउज़ करके ही आप यह पता लगाते हैं कि क्या उपलब्ध है। टॉपिक एक लेबल है जिसे लेखक अपनी रिपॉजिटरी पर लागू करता है। कोई भी इसकी समीक्षा नहीं करता और कोई भी इसे साइन नहीं करता है, और टॉपिक पेज स्टार्स के आधार पर रैंक करता है, जो सुरक्षा के बजाय लोकप्रियता को मापता है।

चार आदतें इसे प्रबंधनीय बनाए रखती हैं। इंस्टॉल करने से पहले सोर्स कोड पढ़ें, क्योंकि अधिकांश प्लगइन्स इतने छोटे होते हैं कि उन्हें दस मिनट में पढ़ा जा सकता है। किसी ब्रांच को ट्रैक करने के बजाय सटीक वर्ज़न या कमिट को पिन करें। हार्नेस को ऐसे यूजर के तहत चलाएं जिसके पास कुछ और न हो, और ऐसे VPS पर जिसे आप दोबारा बनाने के लिए तैयार हों। एजेंट को उसकी अपनी API की (key) दें जिसकी अपनी खर्च सीमा हो, जो आपकी प्रोडक्शन सेवाओं द्वारा उपयोग की जाने वाली की (key) से अलग हो।

यदि आप किसी एक को चुनने से पहले डिजाइनों की तुलना करना चाहते हैं, तो the Omnigent multi-agent harness एक अलग संरचना के साथ उसी समस्या का समाधान देता है, और प्लगइन्स के उपयोग में आने पर इसके फायदे और नुकसान स्पष्ट हो जाते हैं।

सबसे पहले क्या खराब होता है

Node बहुत पुराना है। यह प्रोजेक्ट Node 22.19 और 22.x लाइन के नए वर्ज़न, या Node 24 और उससे ऊपर के वर्ज़न को टारगेट करता है, और CI इन्हीं पर टेस्ट होता है। पुराना रनटाइम स्टार्टअप पर विफल हो जाता है क्योंकि कोड ऐसी सिंटैक्स और API का उपयोग करता है जो उसमें मौजूद नहीं हैं। किसी भी अन्य कार्य से पहले node --version चलाएं।

Port 3080 पहले से ही उपयोग में है। हो सकता है कि कोई दूसरा harness, कोई पुराना process, या कोई असंबंधित एप्लिकेशन 3080 का उपयोग कर रहा हो। इसे ss -tlnp | grep 3080 के साथ खोजें, फिर उसे बंद करें या dsh web --port 3180 के साथ harness को कहीं और शुरू करें। --port वेब ऐप का है, इसलिए यह web के बाद आता है।

ब्राउज़र टनल के माध्यम से कनेक्ट नहीं हो पा रहा है। पुष्टि करें कि आपने 127.0.0.1 पर ब्राउज़ किया है, न कि सर्वर के पब्लिक एड्रेस पर, क्योंकि फॉरवर्ड किया गया पोर्ट केवल आपके लैपटॉप पर मौजूद होता है। फिर पुष्टि करें कि harness सर्वर पर लिसन कर रहा है, क्योंकि SSH फॉरवर्ड को सेटअप कर देता है, चाहे दूर के छोर पर कोई जवाब दे रहा हो या नहीं।

dsh plugin तुरंत विफल हो जाता है। यह कमांड pnpm के चारों ओर एक रैपर है, इसलिए कोई भी प्लगइन कार्य शुरू होने से पहले ही एक गायब pnpm बाइनरी इसे रोक देती है।

एजेंट आपके प्रोजेक्ट को नहीं देख पा रहा है। वर्कस्पेस डिफ़ॉल्ट रूप से उस डायरेक्टरी में होता है जहाँ से प्रोसेस शुरू हुई थी, इसलिए जिस यूनिट का WorkingDirectory आपकी होम डायरेक्टरी है, वह एजेंट को आपकी होम डायरेक्टरी ही देगी। UI में वर्कस्पेस चुनें, या यूनिट को ठीक करके उसे रिलोड करें।

FAQ

क्या DeepSeek Harness web UI को port 3080 पर expose करना सुरक्षित है?

नहीं। वेब सर्वर में अपना कोई login नहीं होता है, और इसके पीछे काम करने वाला agent उस user के रूप में फाइलें edit करता है और shell commands चलाता है जिसने process शुरू की है, साथ ही आपका provider API key भी उसी disk पर store होता है। listener को 127.0.0.1 पर रखें और इसे SSH tunnel के माध्यम से access करें। एक private overlay network, या एक reverse proxy जो port तक पहुँचने से पहले हर request को authenticate करता है, वह भी काम करेगा। version 0.1.0-rc.6 से, CLI --host 0.0.0.0 को अस्वीकार कर देता है और usage error के साथ बंद हो जाता है, जो आपको बताता है कि लेखक इस विचार के बारे में क्या सोचते हैं।

क्या मुझे DeepSeek API key की आवश्यकता है, या मैं local model का उपयोग कर सकता हूँ?

दोनों काम करते हैं, क्योंकि harness एक runtime है, model नहीं। Settings और फिर Models के अंतर्गत आप एक catalog provider card में key paste कर सकते हैं, या "Add a custom provider" चुनकर उसे एक base URL दे सकते हैं जो OpenAI-compatible protocol पर बात करता हो। एक local Ollama server http://127.0.0.1:11434/v1/ पर जवाब देता है और API key field में कोई भी string स्वीकार कर लेता है। Keys $DSH_HOME/.credentials.yaml में जाती हैं, जो default रूप से ~/.dsh/.credentials.yaml पर होती है।

DeepSeek Harness plugin install करने से plugin को वास्तव में क्या मिलता है?

harness चलाने वाले account की अनुमतियाँ (permissions)। plugin एक Node code है जिसे उसी process में load किया जाता है, और extension points में shell backend, filesystem layer, tool registry और हर tool call को wrap करने वाले events शामिल हैं। जब तक कोई plugin खुद sandbox प्रदान न करे, तब तक उसे उन seams से दूर रखने के लिए कोई sandbox नहीं होता है। install करने से पहले source code पढ़ें, और harness को ऐसे user के रूप में चलाएं जिसके पास ऐसी कोई भी चीज़ न हो जिसकी आपको परवाह हो।

मुझे कौन सा version install करना चाहिए, और क्या यह काम करता रहेगा?

एक सटीक version install करें, उदाहरण के लिए npx @deepseek-ai/dsh@0.1.0-rc.6 web। यह वही है जिस पर 13 August 2026 को latest tag point कर रहा था। यह project खुद को developer preview कहता है और इसमें compatibility तोड़ने वाले बदलावों की उम्मीद है, इसलिए एक unpinned command एक दिन से दूसरे दिन अलग तरह से व्यवहार कर सकती है। upgrade करने से पहले repository की जाँच करें, और उम्मीद रखें कि config keys और plugin interfaces बदलते रहेंगे जब तक version 0 से शुरू होता है।