SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-28

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

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

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 के स्नैपशॉट हैं, इसलिए किसी महत्वपूर्ण सर्वर पर इसे कॉपी करने से पहले रिपॉजिटरी की जाँच अवश्य करें।

पूरे design में एक ही विचार लागू होता है: हर चीज़ एक plugin है। Model adapter, tool registry, session log, sandbox, scheduler और agent loop स्वयं shared context में load किए गए plugins हैं, और इनमें से किसी को भी बदला जा सकता है। कोई privileged core नहीं है जिसे plugins केवल सजाते हों। यही बात इस harness को आज़माने लायक बनाती है, और वास्तविक risk भी यहीं है। यह trade-off सही है या नहीं, यह इस बात पर निर्भर करता है कि आप इसकी तुलना किससे कर रहे हैं। यह Claude Code और Omnigent की तुलना में कैसा है plugin-everything design को model coupling, licence और प्रत्येक विकल्प द्वारा VPS से मांगे जाने वाले resources के बारे में दो अन्य उत्तरों के साथ रखता है।

Harness एक model नहीं है

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

आप इसे 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 को लागू करता है, वह काम करेगा। Custom providers आपके लिए model list भरने हेतु OpenAI-compatible GET /models endpoint को भी query कर सकते हैं।

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

UI में टाइप की गई keys write-only होती हैं। Harness उन्हें $DSH_HOME/.credentials.yaml में store करता है और केवल एक credential reference को settings.yaml में रखता है। $DSH_HOME का default मान ~/.dsh होता है। इस file को password file की तरह ही सुरक्षित रखें, क्योंकि यह वास्तव में वही है: जो भी इसे पढ़ सकता है, वह आपका API budget खर्च कर सकता है। यदि आप Settings में क्लिक करने के बजाय सीधे इन files को edit करना चाहते हैं, तो dsh config files, keys और model endpoints का walkthrough यह दिखाता है कि प्रत्येक key क्या करती है और प्रत्येक mode में आपके box से क्या बाहर जाता है।

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

  • 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 सर्वर पर ही निर्भर करती है।

DeepSeek Harness को एक VPS पर इंस्टॉल करना, एक विशिष्ट वर्ज़न पर पिन करना

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 है। ये नंबर केवल दिखावटी डिफ़ॉल्ट नहीं बल्कि एक बाइंडिंग निर्णय हैं, और dsh लूपबैक एड्रेस क्यों प्रिंट करता है यह बताता है कि आपके लैपटॉप से इसे एक्सेस करने से पहले हार्नेस किन अनुरोधों का उत्तर देगा और किनका नहीं।

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

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

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 इंटरनेट से एक्सेस किया जा सकता है, और आपको कुछ भी और करने से पहले इस प्रक्रिया को तुरंत रोक देना चाहिए।

आपको port 3080 को कभी भी public क्यों नहीं करना चाहिए

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

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

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

यदि tunnel आपके लिए उपयुक्त नहीं है, तो दो अन्य deployments उचित हैं। Box को एक private overlay network पर रखें ताकि उसे केवल वही address मिले जिसे आपके अपने devices route कर सकें, जो कि एक self-hosted Headscale control server आपको प्रदान करता है। या फिर इसके आगे एक reverse proxy लगाएँ जो port 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 शुरू न करें, क्योंकि आपको केवल 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 अस्वीकार कर दिया गया है, तो इसका मतलब आमतौर पर यह है कि tunnel तो सक्रिय है लेकिन दूसरी तरफ कोई service listening मोड में नहीं है, क्योंकि SSH port को forward कर देता है चाहे harness चल रहा हो या नहीं। ऊपर दिए गए ss command के साथ server की जाँच करें।

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

एक npx कमांड आपके शेल के साथ ही समाप्त हो जाती है। एक systemd user service बनी रहती है, और यह क्रैश या रीबूट के बाद harness को वापस चालू कर देती है। यहाँ दी गई unit जानबूझकर न्यूनतम रखी गई है; यदि आप चाहते हैं कि harness अपने स्वयं के सुरक्षित अकाउंट के अंतर्गत चले, जिसमें version unit के अंदर पिन हो और आप logs को आसानी से खोज सकें, तो the headless systemd setup for dsh में इसकी पूरी जानकारी दी गई है।

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

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

[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 का उपयोग default filesystem location के रूप में करती है, इसलिए गलत स्थान पर शुरू की गई service agent को गलत default workspace देती है। आप अभी भी UI में workspace चुन सकते हैं।

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

जो unit शुरू होने से मना कर देती है, उसका कारण लगभग हमेशा गलत ExecStart पाथ या Node का वह version होता है जिसे binary अस्वीकार कर देती है, और journalctl --user -u dsh -n 50 यह बताता है कि कौन सा है। यही पैटर्न keeping any coding agent alive on a 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) से अलग हो। जब आप कोई प्लगइन पढ़ने बैठते हैं और यह जानना चाहते हैं कि कौन सी फाइलें जोखिम पैदा करती हैं, तो dsh प्लगइन की जाँच करने का वॉकथ्रू मैनिफेस्ट, एंट्री पॉइंट और उन एक्सटेंशन पॉइंट्स से गुजरता है जिन्हें एक प्लगइन रजिस्टर करता है।

यदि आप किसी एक design पर commit करने से पहले उसकी तुलना करना चाहते हैं, तो Omnigent multi-agent harness इसी समस्या का समाधान अलग structure के साथ करता है। Plugins शामिल होने पर इनके trade-offs स्पष्ट हो जाते हैं। यदि आप किसी एक को चुनने के बजाय उसी host पर दो या तीन harness चलाते हैं, तो हर harness को एक self-hosted API के पीछे रखना प्रत्येक port के लिए अलग tunnel की आवश्यकता समाप्त करता है। इसके बदले एक अतिरिक्त service संभालनी होगी, जिसे पहले दिन से loopback पर bind करना और एक वास्तविक password देना जरूरी है।

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

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

Port 3080 पहले से ही उपयोग में है। एक दूसरा harness, कोई पुरानी प्रक्रिया (stale 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 करना सुरक्षित है?

नहीं। इस web server में अपना कोई login नहीं है। इसके पीछे काम करने वाला agent उसी user के रूप में files 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 के साथ exit हो जाता है, जो यह दर्शाता है कि लेखक इस विचार के बारे में क्या सोचते हैं।

क्या मुझे 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 में save होती हैं, जो 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 प्रदान न करे, तब तक उसे इन परतों से अलग रखने के लिए कोई 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 देखें, और उम्मीद रखें कि जब तक version 0 से शुरू हो रहा है, तब तक config keys और plugin interfaces बदलते रहेंगे।