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 উন্মুক্ত থাকলে যে কেউ আপনার ফাইল পড়তে এবং আপনার Linux ইউজার হিসেবে কমান্ড চালাতে সক্ষম এমন একটি এজেন্টের নিয়ন্ত্রণ পেয়ে যাবে।

DeepSeek 13 আগস্ট 2026 তারিখে MIT লাইসেন্সের অধীনে npm প্যাকেজ @deepseek-ai/dsh হিসেবে এটি প্রকাশ করে। প্রকল্পটি নিজেকে একটি ডেভেলপার প্রিভিউ হিসেবে বর্ণনা করে এবং জানায় যে এতে সামঞ্জস্যতা নষ্টকারী পরিবর্তন আসার সম্ভাবনা রয়েছে। নিচের প্রতিটি ভার্সন নম্বর আগস্ট 2026-এর একটি স্ন্যাপশট, তাই গুরুত্বপূর্ণ কোনো সার্ভারে এটি ব্যবহার করার আগে রিপোজিটরি যাচাই করে নিন।

পুরো ডিজাইনের মূল ভিত্তি হলো একটি ধারণা: সবকিছুই একটি প্লাগইন। মডেল অ্যাডাপ্টার, টুল রেজিস্ট্রি, সেশন লগ, স্যান্ডবক্স, শিডিউলার এবং এজেন্ট লুপ—সবই একটি শেয়ারড কনটেক্সটে লোড হওয়া প্লাগইন এবং এদের যেকোনোটি প্রতিস্থাপন করা সম্ভব। এখানে এমন কোনো প্রিভিলেজড কোর নেই যা কেবল প্লাগইন দ্বারা সজ্জিত। এই বৈশিষ্ট্যটিই Harness-কে ব্যবহারযোগ্য করে তোলে এবং এখানেই এর একমাত্র প্রকৃত ঝুঁকিটি নিহিত রয়েছে।

হ্যারনেস কোনো মডেল নয়

হ্যারনেস এজেন্ট লুপটি চালায়। মডেলের যুক্তি অন্য কোথাও কাজ করে, তাই আপনি API (application programming interface) কি (key) অথবা আপনার নিজের হোস্ট করা কোনো মডেল এন্ডপয়েন্টের ঠিকানা না দেওয়া পর্যন্ত কিছুই কাজ করবে না।

আপনি UI-এর Settings এবং তারপর Models-এ গিয়ে এটি কনফিগার করতে পারেন। ক্যাটালগে বড় API প্রোভাইডারদের (DeepSeek, OpenAI, Anthropic) জন্য তৈরি কার্ড রয়েছে, যেখানে আপনি কি (key) পেস্ট করতে পারেন। "Add a custom provider" অপশনটি বেশ কার্যকর: এটি একটি প্রোভাইডার ID, ডিসপ্লে নাম, বেস URL, API প্রোটোকল এবং ক্রেডেনশিয়াল গ্রহণ করে। এটি OpenAI-সামঞ্জস্যপূর্ণ প্রোটোকলে কাজ করে, তাই এই প্রোটোকল সমর্থন করে এমন যেকোনো গেটওয়ে বা লোকাল সার্ভার এখানে কাজ করবে। কাস্টম প্রোভাইডাররা আপনার জন্য মডেলের তালিকা পূরণ করতে OpenAI-সামঞ্জস্যপূর্ণ GET /models এন্ডপয়েন্টও কোয়েরি করতে পারে।

এভাবেই আপনি একই VPS-এ থাকা কোনো মডেলের দিকে হ্যারনেসকে নির্দেশ করতে পারেন। Ollama একটি OpenAI-সামঞ্জস্যপূর্ণ API প্রকাশ করে http://127.0.0.1:11434/v1/-এ, এবং এটি চায় যে API কি (key) ফিল্ডটি যেকোনো স্ট্রিং দিয়ে পূরণ করা হোক, সাধারণত ollama ব্যবহার করা হয়, কারণ ফিল্ডটি বাধ্যতামূলক কিন্তু পরে উপেক্ষা করা হয়। আপনার VPS-এ জায়গা হয় এমন ছোট কোনো মডেল একটি এজেন্ট চালানোর জন্য যথেষ্ট কি না, সেটিই বড় প্রশ্ন। আর Ollama এবং vLLM-এর মধ্যে পার্থক্য নির্ধারণ করে যে এই উত্তরের জন্য আপনার কতটুকু RAM খরচ হবে।

UI-তে টাইপ করা কি (key) গুলো রাইট-অনলি। হ্যারনেস এগুলোকে $DSH_HOME/.credentials.yaml-এ সংরক্ষণ করে এবং শুধুমাত্র একটি ক্রেডেনশিয়াল রেফারেন্স settings.yaml-এ রাখে। $DSH_HOME ডিফল্টভাবে ~/.dsh-এ থাকে। এই ফাইলটিকে পাসওয়ার্ড ফাইলের মতো বিবেচনা করুন, কারণ এটি আসলে তাই: যে কেউ এটি পড়তে পারলে আপনার API বাজেট খরচ করতে পারবে।

What you need before you install

  • a VPS running Ubuntu 24.04 or another current Linux, with SSH access
  • Node.js 22.19 or newer in the 22.x line, or Node.js 24 and above, which is what the project builds and tests against
  • a normal user account, not root, because the agent runs shell commands as whoever started the process
  • pnpm on the PATH if you plan to install plugins, since the plugin command shells out to it
  • port 3080 closed on your firewall and on your provider's separate network firewall

Ubuntu's own nodejs package is older than the harness needs, so install Node from NodeSource or nvm rather than reaching for apt install nodejs. If the VPS is fresh, hardening SSH before anything else is worth ten minutes, because the tunnel you are about to depend on is only as good as the SSH server behind it.

একটি VPS-এ DeepSeek Harness ইনস্টল করা এবং নির্দিষ্ট ভার্সনে পিন করা

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

npx প্যাকেজটি ডাউনলোড করে এবং এর dsh বাইনারিটি রান করে। web হলো --profile web-এর একটি alias, যা ব্রাউজার অ্যাপ্লিকেশনটি চালু করে এবং প্রসেসটি কোন ঠিকানায় লিসেন করছে তা প্রিন্ট করে। ডিফল্ট ঠিকানা হলো http://127.0.0.1:3080

ভার্সনটি পিন করুন। npx @deepseek-ai/dsh web কমান্ডটি রান করার মুহূর্তে latest ট্যাগটি যে ভার্সনকে নির্দেশ করে তা রেজলভ করে। প্রজেক্টটি ইতিমধ্যে বেশ কয়েকটি release candidate প্রকাশ করেছে এবং জানিয়েছে যে সামনে breaking changes আসতে পারে। 0.1.0-rc.6 হলো সেই ভার্সন যা 13 আগস্ট 2026 তারিখে latest নির্দেশ করছিল। ভার্সন পিন করার অর্থ হলো, আজ আপনি যে সার্ভারটি সেটআপ করছেন তা আগামী মাসেও একইভাবে কাজ করবে, ফলে আপগ্রেড করাটা আপনার সিদ্ধান্তের ওপর নির্ভর করবে, কোনো আকস্মিক ঘটনা হিসেবে ঘটবে না।

প্রতিদিনের ব্যবহারের জন্য, প্রতিবার স্টার্ট করার সময় নতুন করে রেজলভ না করে একবারই ইনস্টল করে নিন।

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 উন্মুক্ত রাখা উচিত নয়

এই ওয়েব সার্ভারে কোনো authentication স্তর নেই। এর কনফিগারেশনে একটি listen host এবং একটি listen port নির্ধারণ করা থাকে, এবং এটুকুই এর সম্পূর্ণ নিরাপত্তা ব্যবস্থা। loopback-এর বাইরের কোনো deployment-এর জন্য access control হিসেবে একটি আলাদা trusted-host সেটিং রয়েছে, যা কোনো লগইন স্ক্রিন নয়।

এখন চিন্তা করুন এই পোর্টের পেছনে কী থাকে। এজেন্টটি ওয়ার্কস্পেসের ফাইল এডিট করে এবং shell কমান্ড চালায়, আর আপনার প্রোভাইডার ক্রেডেনশিয়ালগুলো এর পাশেই ডিস্কে সংরক্ষিত থাকে। তাই একটি উন্মুক্ত port 3080 মানে হলো একটি চ্যাট ইন্টারফেসসহ রিমোট শেল, যা আপনার ব্যবহারকারী অ্যাকাউন্টেই চলছে এবং এর সাথে আপনার API key যুক্ত আছে। এর জন্য কোনো exploit-এর প্রয়োজন নেই। আক্রমণকারীদের শুধু পোর্ট নম্বরটি জানলেই চলে, আর হোস্ট অনলাইন হওয়ার কয়েক ঘণ্টার মধ্যেই স্ক্যানারগুলো পোর্ট নম্বর খুঁজে বের করে ফেলে।

CLI (command line interface) এই বিষয়ে একমত। 0.1.0-rc.6 সংস্করণ থেকে এটি ইচ্ছাকৃতভাবে --host 0.0.0.0 সমর্থন করে না এবং চালু হওয়ার পরিবর্তে একটি usage error প্রদর্শন করে বন্ধ হয়ে যায়। এই সীমাবদ্ধতা একটি ফিচার, তাই এটি সরানোর জন্য কোনো প্যাচ খোঁজার চেষ্টা করবেন না।

যদি tunnel আপনার জন্য উপযুক্ত না হয়, তবে অন্য দুটি deployment পদ্ধতি যুক্তিসঙ্গত। সার্ভারটিকে একটি private overlay network-এ রাখুন যাতে এটি এমন একটি ঠিকানায় থাকে যা শুধুমাত্র আপনার ডিভাইসগুলোই রাউট করতে পারে, যা একটি self-hosted Headscale control server আপনাকে প্রদান করে। অথবা এর সামনে একটি reverse proxy বসান যা port 3080-এ অনুরোধ পৌঁছানোর আগেই তা authenticate করবে, উদাহরণস্বরূপ একটি Authentik single sign-on server যা forward auth ব্যবহার করে। কোনো authentication ছাড়া একটি reverse proxy কোনো নিরাপত্তা ব্যবস্থা নয়। এটি কেবল একটি দীর্ঘ URL মাত্র।

SSH tunnel-এর মাধ্যমে web UI-তে প্রবেশ

এটি আপনার সার্ভারে নয়, বরং আপনার ল্যাপটপে চালান।

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

-L আপনার ল্যাপটপে 3080 port খুলে দেয় এবং এতে আসা যেকোনো সংযোগকে encrypted SSH session-এর মাধ্যমে পাঠিয়ে দেয়। 127.0.0.1:3080 অংশটি সার্ভারে resolve হয়, তাই সংযোগটি loopback থেকে harness-এ পৌঁছায়, ঠিক যেন আপনি সরাসরি সেই মেশিনের সামনে বসে আছেন। -N নির্দেশ দেয় যে কোনো remote shell শুরু করার প্রয়োজন নেই, কারণ আপনার শুধু port forwarding-ই দরকার।

এরপর আপনার লোকাল ব্রাউজারে http://127.0.0.1:3080 খুলুন। যদি আপনার ল্যাপটপে 3080 port আগে থেকেই ব্যবহৃত হয়ে থাকে, তবে বামদিকের সংখ্যাটি পরিবর্তন করুন: ssh -N -L 3180:127.0.0.1:3080 you@your-server, এবং তারপর http://127.0.0.1:3180-এ ব্রাউজ করুন। বামদিকের সংখ্যাটি লোকাল এবং ডানদিকের সংখ্যাটি সার্ভারের, তাই শুধুমাত্র বামদিকের সংখ্যাটিই পরিবর্তনযোগ্য।

এটি ~/.ssh/config-এ সংরক্ষণ করুন যাতে বারবার টাইপ করতে না হয়।

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

এরপরে, ssh -N dsh tunnel-টি চালু করে। ব্রাউজারে যদি "connection was refused" দেখায়, তবে সাধারণত এর অর্থ হলো tunnel চালু আছে কিন্তু অপর প্রান্তে কোনো কিছু listening অবস্থায় নেই, কারণ harness চলুক বা না চলুক, SSH port forward করে রাখে। উপরের ss কমান্ড দিয়ে সার্ভারটি পরীক্ষা করুন।

লগ আউট করার পরেও হারনেস চালু রাখা

একটি npx কমান্ড আপনার শেলের সাথে বন্ধ হয়ে যায়। একটি systemd user service লগ আউটের পরেও সচল থাকে এবং কোনো ক্র্যাশ বা রিবুটের পরে এটি হারনেসকে পুনরায় চালু করে।

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

enable-linger গুরুত্বপূর্ণ কারণ আপনার শেষ সেশনটি শেষ হওয়ার সাথে সাথে সাধারণত ইউজার সার্ভিসগুলো বন্ধ হয়ে যায়, তাই এটি ছাড়া আপনি টানেল বন্ধ করার সাথে সাথেই হারনেসটি বন্ধ হয়ে যাবে। command -v dsh কমান্ডটি যে absolute path প্রদান করে তা ইউনিটে ব্যবহার করুন, কারণ 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 প্রসেসটি তার বর্তমান ডিরেক্টরিকে ডিফল্ট ফাইলসিস্টেম লোকেশন হিসেবে ব্যবহার করে, তাই ভুল জায়গা থেকে সার্ভিস চালু করলে এজেন্ট ভুল ডিফল্ট ওয়ার্কস্পেস পায়। আপনি অবশ্য UI থেকে ওয়ার্কস্পেস পরিবর্তন করতে পারবেন।

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

একটি ইউনিট চালু হতে ব্যর্থ হলে সাধারণত এর কারণ হয় ভুল ExecStart পাথ অথবা এমন কোনো Node ভার্সন যা বাইনারিটি গ্রহণ করে না, এবং journalctl --user -u dsh -n 50 কমান্ডটি সেই ত্রুটি নির্দেশ করে। একই পদ্ধতি যেকোনো কোডিং এজেন্টকে VPS-এ সচল রাখা-এর ক্ষেত্রেও প্রযোজ্য এবং ব্যর্থতার কারণগুলোও একই।

একটি প্লাগইন যা যা করতে পারে

একটি প্লাগইন হলো এমন একটি মডিউল যা একটি শেয়ার্ড কনটেক্সটে সার্ভিস, টাইপ করা ইভেন্ট এবং রিভার্সিবল ইফেক্ট যুক্ত করে। এর এক্সটেনশন পয়েন্টগুলো মনোযোগ দিয়ে পড়া প্রয়োজন:

  • ctx.llm-এ একটি মডেল প্রোভাইডার রেজিস্টার করা
  • ctx.tools-এ মডেল-ফেসিং টুল যুক্ত করা
  • ctx.shell-এর মাধ্যমে শেল ব্যাকএন্ড প্রদান করা
  • ctx.fs-এর মাধ্যমে ফাইলসিস্টেম অ্যাক্সেস বা পলিসি প্রদান করা
  • ctx.commands-এ হিউম্যান কমান্ড রেজিস্টার করা
  • ctx.jobs-এর মাধ্যমে ব্যাকগ্রাউন্ড কাজ চালানো
  • ctx.sandbox ব্যাকএন্ড দিয়ে স্পন করা প্রসেসগুলোকে র‍্যাপ করা
  • agent/* এবং tools/* ইভেন্টের মাধ্যমে রিকোয়েস্ট ও টুল কল ইন্টারসেপ্ট করা
  • ডিউরেবল সেশন স্টেট এক্সটেন্ড করা
  • ctx.agents-এর মাধ্যমে UI নিয়ন্ত্রণ করা

একজন আক্রমণকারীর দৃষ্টিভঙ্গি থেকে এই তালিকাটি দেখুন। একটি প্লাগইন ফাইলসিস্টেম লেয়ার এবং শেল লেয়ার সরবরাহ করতে পারে এবং মডেলের প্রতিটি টুল কলের মাঝখানে অবস্থান নিতে পারে। এই সংযোগস্থলগুলোর মাঝে কোনো পারমিশন ডায়ালগ থাকে না, কারণ একটি প্লাগইন হলো সাধারণ Node কোড যা অন্য সবকিছুর মতোই একই প্রসেসে লোড হয়। একটি প্লাগইন ইনস্টল করা মানে হলো আপনার এজেন্টের পারমিশন ব্যবহার করে একজন অপরিচিত ব্যক্তির কোড চালানো, আর আপনার এজেন্টের পারমিশন মানেই হলো আপনার Unix ইউজারের পারমিশন।

এটি সেই একই বিশ্বাসের সিদ্ধান্ত যা আপনি একটি VPS-এ এজেন্টের সাথে MCP সার্ভার সংযুক্ত করার সময় নেন, যেখানে MCP হলো মডেল কনটেক্সট প্রোটোকল। এই কারণেই VPS-এ নিরাপদে কোডিং এজেন্ট চালানো মডেল দিয়ে নয়, বরং যে অ্যাকাউন্টের অধীনে এটি চলে তা দিয়ে শুরু করতে হয়। এবং এই কারণেই npm সাপ্লাই চেইন অ্যাটাক সার্ভারে এত বড় প্রভাব ফেলে: ইনস্টল করার ধাপটিই হলো আপস (compromise), এবং কোনো কিছুই আপনাকে সতর্ক করে না।

প্লাগিনগুলো কোথা থেকে আসে

প্লাগিনগুলো প্রোফাইলের মধ্যে থাকে। একটি প্রোফাইল হলো $DSH_HOME-এর অধীনে সংরক্ষিত একটি নামযুক্ত কম্পোজিশন, যার ডিফল্ট অবস্থান হলো ~/.dsh। প্রতিটি প্রোফাইল ডিরেক্টরি তার ইনস্টল করা আউট-অফ-ট্রি প্লাগিনগুলো ধারণ করে। CLI এই প্রোফাইল ডিরেক্টরিকে ওয়ার্কিং ডিরেক্টরি হিসেবে ব্যবহার করে আপনার আর্গুমেন্টগুলোকে সরাসরি 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 port ব্যবহার করছে। ss -tlnp | grep 3080 দিয়ে সেটি খুঁজে বের করুন, তারপর সেটি বন্ধ করুন অথবা dsh web --port 3180 ব্যবহার করে অন্য কোথাও harness চালু করুন। --port ওয়েব অ্যাপের সাথে সম্পর্কিত, তাই এটি web-এর পরে আসে।

ব্রাউজার টানেলের মাধ্যমে সংযোগ করতে পারছে না। নিশ্চিত করুন যে আপনি 127.0.0.1-এ ব্রাউজ করছেন, সার্ভারের পাবলিক ঠিকানায় নয়, কারণ ফরওয়ার্ড করা port শুধুমাত্র আপনার ল্যাপটপেই বিদ্যমান। এরপর নিশ্চিত করুন যে harness সার্ভারে লিসেন করছে, কারণ দূরপ্রান্তের সার্ভারে কোনো অ্যাপ্লিকেশন সাড়া দিক বা না দিক, SSH ফরওয়ার্ডিং সেটআপ করে ফেলে।

dsh plugin সাথে সাথে ব্যর্থ হচ্ছে। এই কমান্ডটি pnpm-এর একটি র‍্যাপার, তাই কোনো pnpm বাইনারি অনুপস্থিত থাকলে কোনো প্লাগইন কাজ শুরু করার আগেই এটি থেমে যায়।

এজেন্ট আপনার প্রজেক্ট দেখতে পাচ্ছে না। ওয়ার্কস্পেস ডিফল্টভাবে সেই ডিরেক্টরিকে ধরে নেয় যেখান থেকে প্রসেসটি শুরু হয়েছে, তাই যে ইউনিটের WorkingDirectory আপনার হোম ডিরেক্টরি, সেটি এজেন্টকে আপনার হোম ডিরেক্টরিই দেখাবে। UI থেকে ওয়ার্কস্পেস নির্বাচন করুন অথবা ইউনিটটি ঠিক করে পুনরায় লোড করুন।

FAQ

DeepSeek Harness web UI-কে port 3080-এ উন্মুক্ত রাখা কি নিরাপদ?

না। এই web server-এর নিজস্ব কোনো login ব্যবস্থা নেই। এর পেছনে থাকা agent যে user-এর অধীনে process শুরু হয়, সেই user-এর পরিচয়েই ফাইল এডিট করে এবং shell command চালায়। এছাড়া আপনার provider API key একই ডিস্কে সংরক্ষিত থাকে। listener-কে 127.0.0.1-এ রাখুন এবং SSH tunnel-এর মাধ্যমে এটি ব্যবহার করুন। একটি private overlay network অথবা এমন একটি reverse proxy ব্যবহার করা যেতে পারে যা port-এ পৌঁছানোর আগেই প্রতিটি অনুরোধকে 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 ফিল্ডে যেকোনো string গ্রহণ করে। Key-গুলো $DSH_HOME/.credentials.yaml-এ জমা হয়, যার default অবস্থান হলো ~/.dsh/.credentials.yaml

DeepSeek Harness plugin ইনস্টল করলে plugin-টি আসলে কী কী সুবিধা পায়?

harness যে account-এর অধীনে চলছে, সেই account-এর সমস্ত permission plugin-টি পেয়ে যায়। plugin হলো Node code যা একই process-এর ভেতর load হয়। এর extension point-গুলোর মধ্যে রয়েছে shell backend, filesystem layer, tool registry এবং প্রতিটি tool call-কে ঘিরে থাকা event। plugin নিজে sandbox সরবরাহ না করলে, এই জায়গাগুলো থেকে তাকে আলাদা করার কোনো ব্যবস্থা নেই। ইনস্টল করার আগে source code পড়ে নিন এবং এমন একটি user-এর অধীনে harness চালান যার কোনো গুরুত্বপূর্ণ তথ্যের ওপর মালিকানা নেই।

আমার কোন version ইনস্টল করা উচিত এবং এটি কি কাজ চালিয়ে যাবে?

একটি নির্দিষ্ট version ইনস্টল করুন, উদাহরণস্বরূপ npx @deepseek-ai/dsh@0.1.0-rc.6 web। 13 আগস্ট 2026 তারিখে latest tag-টি এই version-কেই নির্দেশ করছিল। প্রকল্পটি নিজেকে developer preview হিসেবে দাবি করে এবং এতে compatibility নষ্ট করতে পারে এমন পরিবর্তন আসার সম্ভাবনা রয়েছে। তাই version pin না করা থাকলে command-এর আচরণ প্রতিদিন পরিবর্তিত হতে পারে। upgrade করার আগে repository পরীক্ষা করুন এবং মনে রাখবেন, version 0 দিয়ে শুরু হওয়া পর্যন্ত config key এবং plugin interface পরিবর্তিত হতে পারে।

#deepseek#agent-harness#self-hosting#nodejs#plugins