SSD Nodes Learn 🎉 VPS $5.50/माह से
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-21

Agent harness क्या है और यह कैसे काम करता है?

Agent harness वह प्रोग्राम है जो LLM के चारों ओर लूप, टूल्स और सेशन स्टेट को मैनेज करता है। जानें कि यह मॉडल से कैसे अलग है और क्यों यह AI को एक सक्रिय एजेंट बनाता है।

Agent harness क्या है

Agent harness वह प्रोग्राम है जो language model के चारों ओर चलता है और उसे एक agent में बदल देता है। इसमें वह loop होता है जो बार-बार model को call करता है, उन tools की परिभाषाएं जिन्हें model call कर सकता है, वे permission rules जो यह तय करते हैं कि कौन सी calls वास्तव में run होंगी, turns के बीच सुरक्षित रहने वाला session state, और वह working directory जहाँ काम होता है। इसके भीतर model को बदला जा सकता है।

अंतिम वाक्य सबसे महत्वपूर्ण है। एक model अपने आप में केवल एक प्रश्न का उत्तर देता है और आपको भूल जाता है। एक harness model से पूछता है कि आगे क्या करना है, model द्वारा मांगे गए command को run करता है, परिणाम वापस भेजता है, और फिर से पूछता है। जब लोग "agent" कहते हैं, तो उनका मतलब इसी पुनरावृत्ति (repetition) से होता है। यदि आसपास की शब्दावली अभी भी स्पष्ट नहीं है, तो AI agent, LLM और assistant के बीच का अंतर किसी tool को चुनने से पहले शब्दों को स्पष्ट कर देता है।

Harness और model एक नहीं हैं

विक्रेता इन्हें एक ही ब्रांड नाम के तहत जारी (ship) करते हैं, इसलिए अक्सर भ्रम पैदा होता है।

dsh और DeepSeek अलग-अलग उत्पाद हैं। DeepSeek Harness, जिसे 13 August 2026 को MIT licence के तहत github.com/deepseek-ai/deepseek-harness पर प्रकाशित किया गया था, एक Node प्रोग्राम है जिसे आप अपनी मशीन पर install करते हैं। DeepSeek models वे weights हैं जो एक API (application programming interface) के पीछे serve किए जाते हैं। यदि आप dsh को किसी अन्य विक्रेता के model पर point करते हैं, तो भी यह काम करता रहता है, क्योंकि harness को केवल ऐसी चीज़ चाहिए जो messages स्वीकार करे और tool calls वापस करे।

Claude Code और Claude इसी तरह की एक जोड़ी हैं। Claude Code एक harness है: यह एक terminal प्रोग्राम है जिसमें एक loop, एक permission system, और file व shell tools होते हैं। Claude वह model family है जिसे यह default रूप से call करता है। Codex और Gemini CLI भी इसी तरह विभाजित हैं।

यहाँ वह test है जो इस अंतर को स्पष्ट कर देता है। आप एक harness install करते हैं। आप एक model को call करते हैं। यदि उस चीज़ का कोई version आपकी disk पर है और एक config file आपके home directory में है, तो वह एक harness है। यदि वह उस config file के अंदर एक string है, जैसे कि deepseek-chat, तो वह model है।

लूप वास्तव में क्या करता है

हarness लूप का एक चक्कर कुछ इस तरह दिखता है। इसे ध्यान से पढ़ें, क्योंकि harnesses के बीच लगभग हर अंतर इन पाँच चरणों के भीतर ही होता है।

  1. Harness अब तक की बातचीत और tool definitions की एक सूची मॉडल को भेजता है।
  2. मॉडल टेक्स्ट के साथ या उन टूल्स में से किसी एक को कॉल करने के अनुरोध के साथ जवाब देता है।
  3. Harness उस अनुरोध की अपनी अनुमति नियमों (permission rules) के साथ जाँच करता है और या तो उसे चलाता है या आपसे पूछने के लिए रुक जाता है।
  4. Harness टूल को चलाता है, आउटपुट और exit code को कैप्चर करता है, और यदि आउटपुट बहुत लंबा हो तो उसे छोटा (truncate) कर देता है।
  5. Harness उस परिणाम को बातचीत में जोड़ देता है और चरण 1 पर वापस चला जाता है।

चरण 3 वह जगह है जहाँ दैनिक उपयोग में harnesses सबसे अधिक भिन्न होते हैं। जो harness हर कमांड से पहले पूछता है, वह सुरक्षित है लेकिन थकाऊ है। जो harness कभी नहीं पूछता, वह अंततः किसी गलत पाथ पर कोई विनाशकारी कमांड चला देगा। अब हर गंभीर harness में एक बीच का विकल्प होता है: उन कमांड्स की एक allowlist जो बिना पूछे चलती हैं, और बाकी सब के लिए एक प्रॉम्प्ट।

चरण 1 वह जगह है जहाँ बाकी अंतर निहित होते हैं। बातचीत हर टर्न के साथ बढ़ती है और मॉडल की एक निश्चित context window होती है, इसलिए harness को यह तय करना होता है कि क्या हटाना है, क्या सारांशित (summarise) करना है, और क्या फाइल में लिखकर बाद में वापस पढ़ना है। यही निर्णय मुख्य कारण है कि एक ही मॉडल को चलाने वाले दो harnesses अलग-अलग गुणवत्ता का काम करते हैं।

अधिकांश harnesses अब बाहरी टूल्स को MCP (model context protocol) के माध्यम से जोड़ते हैं। यह किसी भी टूल को किसी भी ऐसे harness के सामने लाने का एक मानक तरीका है जो इसे समझता है, इसलिए एक इंटीग्रेशन कई harnesses तक पहुँच जाता है। VPS पर MCP servers चलाना इस पहलू को कवर करता है।

Agent harness बनाम agent framework

यह प्रश्न हर बार तब उठता है जब कोई नया harness आता है, और इसके उत्तरों में असहमति होती है, जिसका आंशिक कारण वेंडर्स की अलग-अलग राय है। यहाँ वह संस्करण है जो सटीक बैठता है।

Framework एक ऐसी library है जिसे आप import करते हैं। आप loop लिखते हैं, आप तय करते हैं कि model को कब call करना है, और आप tool के परिणामों को स्वयं संभालते हैं। LangChain इसका एक प्रसिद्ध उदाहरण है: आपको building blocks मिलते हैं और आप code में agent को assemble करते हैं।

Harness एक ऐसा program है जिसे आप run करते हैं। loop पहले से लिखा होता है, tools पहले से मौजूद होते हैं, और permission model में पहले से ही एक default होता है। आपको पहली command पर ही एक working agent मिल जाता है और आप वहीं से उसे configure करते हैं।

Install test आमतौर पर इसका निर्णय करता है। यदि आप इसे install करने के बाद code लिखते हैं, तो यह एक framework है। यदि आप इसे install करने के बाद इससे बातचीत करते हैं, तो यह एक harness है।

यह सीमा वास्तव में विवादित है, और इसका सबसे स्पष्ट प्रमाण LangChain का अपना documentation है। अगस्त 2026 तक, यह Deep Agents को LangGraph पर निर्मित एक "opinionated, batteries-included" framework के रूप में वर्णित करता है, जबकि langchain-ai/deepagents repository खुद को "the batteries-included agent harness" कहती है। दोनों विवरण उचित हैं। Deep Agents एक Python SDK (software development kit) है जिसे आप import करते हैं, इसलिए install test इसे एक library कहता है, और यह इतना default behaviour प्रदान करता है कि लोग इसे harness की तरह इस्तेमाल करते हैं। Microsoft ने अगस्त 2026 में एक harness और hosted agents को general availability में release किया, जो दर्शाता है कि यह शब्द अब jargon के बजाय एक product category बन गया है।

इसलिए वह प्रश्न पूछें जो आपके workload का पूर्वानुमान लगा सके। यदि आप loop लिखते हैं, तो loop के मालिक आप हैं: retries, context trimming, permission prompts और जो कुछ हुआ उसका record, सब आपकी जिम्मेदारी है। यदि loop पहले से ही मिलता है, तो आप उन सभी के लिए किसी और के समाधान को अपनाते हैं, जिसे शुरू करना बहुत तेज है लेकिन बाद में बदलना कठिन है।

Harness और chat window में अंतर

Chat window और harness, दोनों ही model output दिखाते हैं। मुख्य अंतर यह है कि काम किस computer पर हो रहा है। Chat window में, model जो भी code run करता है, वह vendor के sandbox के भीतर, आपके द्वारा upload की गई files पर चलता है, और session समाप्त होते ही वह हट जाता है। Harness उन tools को उस machine पर run करता है जहाँ से आपने इसे शुरू किया है, उसी user के रूप में जिसने इसे शुरू किया है, आपकी वास्तविक files के विरुद्ध, और उसके environment में आपके वास्तविक credentials मौजूद होते हैं।

यही दो वाक्यों में इसका पूरा लाभ और पूरा जोखिम है। Agent अंततः काम कर सकता है। Agent काम को delete भी कर सकता है।

वे हार्नेस जिन्हें लोग वास्तव में चला रहे हैं

यह सूची जानबूझकर 19 August 2026 की तारीख वाली है। यह श्रेणी हर हफ्ते बदल रही है और कोई भी राउंडअप जल्दी पुराना हो जाता है।

  • Claude Code और Codex वेंडर हार्नेस हैं। ये टर्मिनल-फर्स्ट हैं, डिफ़ॉल्ट रूप से अपने वेंडर के मॉडल से जुड़े हैं, और इनमें सबसे बेहतरीन परमिशन हैंडलिंग है। Claude Code, Cursor, Codex और Copilot की तुलना कैसे करें में इनका विस्तार से विवरण दिया गया है।
  • DeepSeek Harness (dsh) MIT लाइसेंस प्राप्त है और एक ही विचार पर आधारित है: सब कुछ एक प्लगइन है, इसलिए मॉडल, टूल, सेशन, सैंडबॉक्स और यूजर इंटरफेस सभी को बदला जा सकता है। 19 August 2026 को, पब्लिश होने के छह दिन बाद, इसके लगभग 166,800 GitHub स्टार्स थे।
  • Hermes, Nous Research द्वारा बनाया गया, एक कोडिंग टूल के बजाय एक सामान्य ऑटोनॉमस एजेंट है। इसे February 2026 में MIT के तहत रिलीज किया गया था और यह अपनी यादों और कौशलों को आपकी अपनी मशीन पर एक लोकल SQLite डेटाबेस में रखता है। VPS पर Hermes को सेल्फ-होस्ट करना में इसकी प्रक्रिया समझाई गई है।
  • Omnigent एक मेटा-हार्नेस है: यह अन्य हार्नेस को नियंत्रित करता है, जिसमें Claude Code और Codex शामिल हैं। यह एक साझा API, सेशन, स्पेंड कैप और ऑपरेटिंग सिस्टम लेवल सैंडबॉक्स के पीछे काम करता है। मल्टी-एजेंट हार्नेस के रूप में Omnigent में बताया गया है कि इससे आपको क्या लाभ मिलता है।
  • OneCLI टीमों के लिए बनाया गया एक सैंडबॉक्स हार्नेस है। यह एक गेटवे के इर्द-गिर्द बना है जो आउटबाउंड रिक्वेस्ट में वास्तविक क्रेडेंशियल्स इंजेक्ट करता है, ताकि एजेंट को केवल प्लेसहोल्डर कीज़ ही दिखाई दें।

dsh क्विक स्टार्ट एक सिंगल कमांड है, और हार्नेस क्या है यह देखने का सबसे तेज़ तरीका इसे एक बार चलाना है। इसके लिए मशीन पर Node.js की आवश्यकता होती है।

npx @deepseek-ai/dsh web

यह http://127.0.0.1:3080 पर वेब UI (यूजर इंटरफेस) शुरू करता है। इस पर भरोसा करने से पहले README पढ़ें, क्योंकि dsh खुद को डेवलपर प्रीव्यू के रूप में वर्णित करता है और स्पष्ट रूप से कहता है कि इसमें ऐसे बदलाव होंगे जो कम्पैटिबिलिटी को तोड़ सकते हैं। VPS पर DeepSeek Harness चलाना में सर्वर इंस्टॉलेशन शामिल है, और वह एड्रेस 127.0.0.1 से क्यों शुरू होता है में लूपबैक डिफ़ॉल्ट के बारे में बताया गया है।

Routers harness के ऊपर स्थित होते हैं

एक model router, harness और provider API के बीच एक local proxy के रूप में कार्य करता है। Claude Code Router इसका एक सामान्य उदाहरण है: यह डिफ़ॉल्ट रूप से 127.0.0.1:3456 पर bind होता है, उन requests को स्वीकार करता है जिन्हें Claude Code अपने vendor को भेजता, और उन्हें उस provider को forward कर देता है जिसे आपने configure किया है। Harness को इस बदलाव की कोई जानकारी नहीं होती।

Routers इसलिए मौजूद होते हैं क्योंकि model को बदला जा सकता है, इसलिए वे इस पोस्ट के मुख्य बिंदु का एक अच्छा प्रमाण हैं। वे जोखिम को भी केंद्रित करते हैं, क्योंकि proxy हर prompt को देखता है और हर provider key को अपने पास रखता है। इसे एक सुविधा के बजाय infrastructure के रूप में देखें। Harness अपनी API keys और model settings को कहाँ रखता है यह समस्या एक स्तर नीचे भी वही है।

जब harness एक VPS पर चलता है तो क्या बदलता है

जब harness आपके लैपटॉप से हटकर आपके द्वारा किराए पर लिए गए सर्वर पर जाता है, तो चार चीजें बदल जाती हैं।

यह ढक्कन बंद करने पर भी चलता रहता है। एक लंबा कार्य आपके सफर और बैटरी खत्म होने के बाद भी जीवित रहता है। इसे tmux के अंदर शुरू करें और इससे detach हो जाएं:

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

ऐसी किसी भी चीज के लिए जिसे रीबूट के बाद वापस आना चाहिए, एक user service टर्मिनल सेशन से बेहतर होती है:

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger वह हिस्सा है जिसे लोग अक्सर भूल जाते हैं। इसके बिना, जैसे ही आपका आखिरी SSH (secure shell) सेशन बंद होता है, systemd आपके user की services को रोक देता है। इसलिए जब आप लॉग आउट करते हैं तो agent मर जाता है और कोई त्रुटि (error) भी प्रिंट नहीं होती। systemd के अंतर्गत dsh headless चलाना में unit file दी गई है। एक बार जब उस सर्वर पर एक सेशन चल रहा होता है, तो दूसरा सेशन आपको कोई अतिरिक्त खर्च नहीं देता, और एक ही बॉक्स पर दो Claude Code सेशन एक-दूसरे को संदेश भेज सकते हैं, इसलिए जिसे आपने आज सुबह शुरू किया था, वह बिना आपके मैन्युअल हस्तक्षेप के दूसरे को काम सौंप सकता है।

यह आपकी keys को सुरक्षित रखता है। provider key अब उस सर्वर पर एक config file में रहती है। जांचें कि इसे कौन पढ़ सकता है:

ls -l ~/.config

आपके user के रूप में चलने वाली कोई भी प्रक्रिया उस फाइल को पढ़ सकती है, जिसमें agent और वह सब कुछ शामिल है जिसे agent चलाने का विकल्प चुनता है।

यह आपकी अन्य मशीनों तक पहुँच सकता है। आपके अन्य बॉक्स के समान private network पर स्थित एक VPS, agent को उन तक पहुँचने का मार्ग देता है। यही इसका मुख्य उद्देश्य है, और यही इसका blast radius भी है।

यह आप जहाँ भी हों, वहाँ से पहुँच योग्य है। अधिकांश harnesses एक web UI expose करते हैं, और अधिकांश इसे loopback पर bind करते हैं, जिसका एक कारण है। अपना चेक करें:

ss -tlnp | grep 3080

127.0.0.1:3080 का मतलब है कि केवल सर्वर ही कनेक्ट हो सकता है। 0.0.0.0:3080 का मतलब है कि कोई भी व्यक्ति जिसे पता मिल जाए, वह कनेक्ट हो सकता है। bind address बदलने के बजाय SSH tunnel के माध्यम से loopback UI तक पहुँचें:

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

फिर अपने लैपटॉप के ब्राउज़र में http://127.0.0.1:3080 खोलें। traffic SSH सेशन के अंदर चलता है, इसलिए इंटरनेट पर कुछ भी नया expose नहीं होता है।

इनमें से प्रत्येक सुरक्षा का एक तर्क भी है

हमलावर के नजरिए से इन चार गुणों को फिर से पढ़ें।

यह बिना निगरानी के चलता है, इसलिए कोई भी उस मोड़ पर ध्यान नहीं दे रहा होता जहाँ मॉडल किसी path को गलत पढ़ लेता है। यह आपकी keys को रखता है, इसलिए एक readable config file का मतलब आपका पूरा provider account हो सकता है। यह आपकी अन्य मशीनों तक पहुँच सकता है, इसलिए एक prompt injection, यानी किसी वेब पेज या फाइल में छिपे निर्देश जिन्हें agent पढ़ता है, अब आपके database host तक पहुँच बना सकता है। यह कहीं से भी पहुँच योग्य है, इसलिए बिना password के 0.0.0.0 पर bound वेब UI सार्वजनिक इंटरनेट पर एक shell के समान है।

हर मामले में इसका समाधान नीरस है, और हर बार एक ही समाधान काम आता है। Agent को आपके बजाय अपना स्वयं का unprivileged user account दें:

sudo adduser --disabled-password --gecos "" agent

वेब UI को loopback पर रखें और SSH के माध्यम से उस तक पहुँचें। Agent को केवल वे न्यूनतम credentials दें जो उसका काम पूरा करने के लिए आवश्यक हों, AI agents से secrets को दूर रखना में इसे विस्तार से समझाया गया है। जो कुछ भी आपकी अनुपस्थिति में चलता है, उसके लिए एक सावधानीपूर्वक तैयार की गई मशीन के बजाय एक disposable machine का उपयोग करना बेहतर है: disposable VM में coding agents चलाना और Claude Code को सुरक्षित रूप से VPS पर चलाना दोनों ही इसी तरीके का पालन करते हैं।

क्या आपको agent harness की आवश्यकता है?

यदि आपका काम एक बार में एक प्रश्न पूछने तक सीमित है, तो एक chat window पर्याप्त है। एक harness केवल एक ऐसा loop जोड़ता है जिसकी आपको निगरानी करनी पड़ती है। एक harness तब उपयोगी साबित होता है जब किसी कार्य में वास्तविक files के साथ कई चरण शामिल हों, या जब आपको अपने सो जाने के बाद भी काम जारी रखना हो।

इस श्रेणी के अधिकांश उपकरण अभी नए हैं। dsh के README में अगस्त 2026 तक developer preview लिखा है, और बाकी उपकरण इतनी तेज़ी से बदल रहे हैं कि आज लिखी गई configuration file को अगले महीने संपादित करने की आवश्यकता पड़ सकती है। यही कारण है कि अपने setup को छोटा और reproducible रखें, और जो भी बदलाव करें उसे लिख लें। यही संयम loop के भीतर भी काम आता है, जहाँ एक कौशल जो agent को सबसे छोटे सफल बदलाव की ओर ले जाता है आपको अंत में एक ऐसा diff देता है जिसे आप unattended run के बाद वास्तव में पढ़ सकते हैं। एक server पर एक harness के साथ शुरुआत करें, उसे एक कार्य और एक सीमित key दें, और उस पहले कार्य के एक सप्ताह तक सुचारू रूप से चलने के बाद ही उसकी पहुँच बढ़ाएं। आज चलाने योग्य self-hosted agents पहला विकल्प चुनने के लिए एक उचित स्थान है।

FAQ

Agent harness क्या है, सरल शब्दों में?

यह मॉडल के चारों ओर का प्रोग्राम है। मॉडल टेक्स्ट बनाता है और टूल्स का उपयोग करने का अनुरोध करता है। Harness वह लूप चलाता है जो लगातार पूछता रहता है, मॉडल द्वारा अनुरोधित टूल्स को निष्पादित करता है, उन नियमों को लागू करता है कि कौन से टूल्स बिना अनुमति के चल सकते हैं, और टर्न के बीच सेशन स्टेट और फाइल्स को सुरक्षित रखता है। आप मॉडल को बदल सकते हैं और harness फिर भी काम करता है, जो इस बात का स्पष्ट संकेत है कि ये दोनों अलग-अलग चीजें हैं।

क्या Claude Code एक मॉडल है या harness?

Claude Code एक harness है। यह एक टर्मिनल प्रोग्राम है जिसमें एक लूप, एक अनुमति प्रणाली और इन-बिल्ट फाइल और शेल टूल्स हैं। Claude वह मॉडल फैमिली है जिसे यह डिफ़ॉल्ट रूप से कॉल करता है। यही विभाजन DeepSeek Harness (dsh) पर भी लागू होता है, जो एक Node प्रोग्राम है जिसे आप इंस्टॉल करते हैं, और DeepSeek मॉडल्स, जिन्हें API के माध्यम से सर्व किया जाता है। आप एक मशीन पर harness इंस्टॉल करते हैं। आप नेटवर्क के माध्यम से मॉडल को कॉल करते हैं।

Agent harness और agent framework में क्या अंतर है?

Framework एक लाइब्रेरी है जिसे आप इम्पोर्ट करते हैं और जिसके विरुद्ध कोड लिखते हैं, इसलिए लूप, रिट्राय और कॉन्टेक्स्ट हैंडलिंग का नियंत्रण आपके पास होता है। Harness एक प्रोग्राम है जिसे आप चलाते हैं, इसलिए वह सब कुछ डिफ़ॉल्ट सेटिंग्स के साथ आता है जिन्हें आप लिखने के बजाय कॉन्फ़िगर करते हैं। व्यवहार में यह रेखा धुंधली है: अगस्त 2026 तक, LangChain का Deep Agents एक इम्पोर्ट करने योग्य SDK है जिसे इसकी अपनी रिपॉजिटरी एक 'बैटरियों-सहित' (batteries-included) agent harness कहती है। खुद से पूछें कि क्या आप लूप खुद लिख रहे होंगे। वह उत्तर तय करेगा कि कौन सा शब्द आपकी स्थिति के लिए उपयुक्त है।

क्या मुझे agent harness चलाने के लिए VPS की आवश्यकता है?

नहीं। यहाँ वर्णित प्रत्येक harness लैपटॉप पर चलता है। एक सर्वर चार चीजें बदलता है: जब आप लैपटॉप बंद करते हैं तो एजेंट चलता रहता है, यह आपकी कीज़ (keys) को एक ऐसी मशीन पर रखता है जो हमेशा चालू रहती है, यह आपके अन्य सर्वर्स तक पहुँच सकता है, और आप किसी भी डिवाइस से उसी सेशन पर वापस आ सकते हैं। इनमें से प्रत्येक एक सुरक्षा विचार भी है, इसलिए एजेंट को अपना एक अलग यूजर अकाउंट दें और किसी भी वेब UI को 127.0.0.1 पर बाइंड रखें।

क्या मैं एक ही harness के अंदर किसी अलग मॉडल का उपयोग कर सकता हूँ?

आमतौर पर हाँ, और यही एक harness की परिभाषित विशेषता है। उनमें से अधिकांश अपने कॉन्फ़िगरेशन में एक मॉडल नाम और एक बेस URL लेते हैं, इसलिए किसी एक को दूसरे प्रदाता की ओर निर्देशित करना एक संपादन (edit) है, न कि रीराइट। जहाँ एक harness विरोध करता है, वहाँ Claude Code Router जैसा एक लोकल राउटर harness और प्रदाता के बीच बैठता है और अनुरोधों का अनुवाद करता है, जो डिफ़ॉल्ट रूप से 127.0.0.1:3456 पर बाइंड होता है। उस प्रॉक्सी के साथ सावधान रहें, क्योंकि वह हर प्रॉम्प्ट को देखता है और हर की (key) को रखता है।