needhelp
← Back to blog

DeepSeek Harness: একটি ওপেন-সোর্স এজেন্ট ফ্রেমওয়ার্ক যেখানে আক্ষরিক অর্থে সবকিছুই প্লাগইন

by needhelp
DeepSeek
AI Agents
Open Source
Cordis
Plugin Architecture

একটি সম্পূর্ণ এজেন্ট স্ট্যাক, GitHub-এ ছেড়ে দেওয়া হয়েছে

DeepSeek 13 আগস্ট 2026-এ DeepSeek Harness (dsh) এর developer preview প্রকাশ করে। রিপোজিটরিটি deepseek-ai/deepseek-harness এ অবস্থিত। দিনের শেষে এটির ছিল 1.6k স্টার, 12,293 কমিট এবং 19 অবদানকারী — এই সংখ্যাগুলো বোঝায় এটি কোনো সপ্তাহান্তের হ্যাক নয়। কোডবেস 97.1% TypeScript, 1.6% CSS এবং 0.7% Python। প্রকাশের সময় প্যাকেজ সংস্করণ: 0.1.0-rc.5

ল্যান্ডিং পেজটি deepseek.com/harness এবং ডেভেলপার ডক্স deepseek-harness.github.io/deepseek-harness এ রয়েছে।

লাইসেন্স MIT

এক লাইনের পিচ

README থেকে: «এজেন্ট = মডেল + Harness»।

মডেলটিই আত্মা। একটি Harness এজেন্টকে তার পরিবেশ বোঝতে, টুল ব্যবহার করতে এবং বাস্তব সেটিংসে কাজ চালিয়ে যেতে সাহায্য করে। DeepSeek-এর দৃষ্টিভঙ্গি: প্রতিটি ক্ষমতা — মডেল, টুল, স্কিল, সেশন, স্যান্ডবক্স, স্টোরেজ, লুপ, শেডুলিং এবং UI — একটি অদলবদলযোগ্য প্লাগইন।

এটি কোনো স্লোগান না। আর্কিটেকচার এটি প্রয়োগ করে।

Cordis: সবকিছুর নিচের কর্নেল

DeepSeek Harness Cordis এর উপর নির্মিত, একটি ভেন্ডর্ড প্লাগইন ফ্রেমওয়ার্ক। Cordis-এর ডিজাইন A Programming Paradigm for Spatiotemporal Composability নামের একটি গবেষণাপত্রে বর্ণিত হয়েছে।

সম্পূর্ণ ফ্রেমওয়ার্ক পাঁচটি ধারণায় হ্রাস পায়:

  1. একটি প্লাগইন হলো এমন একটি অবজেক্ট যা Service বাস্তবায়ন করে। এটি inject এবং apply(ctx) সহ একটি ফাংশন, অথবা একটি Service সাবক্লাস হতে পারে।
  2. একটি কন্টেক্সট হলো সার্ভিসগুলোর একটি রিপোজিটরি। একটি প্লাগইন ctx.tools, ctx.llm বা ctx.sessions এর মতো একটি স্থির কী দাবি করে। অন্য প্লাগইনগুলো কংক্রিট ইমপ্লিমেন্টেশন আমদানি করার পরিবর্তে কী দ্বারা সার্ভিসগুলো খুঁজে পায়।
  3. inject এর মাধ্যমে সার্ভিস নির্ভরতা ঘোষণা করুন। প্রয়োজনীয় সার্ভিসগুলোর নাম দেওয়া একটি প্লাগইন সেই সার্ভিসগুলো বিদ্যমান না হওয়া পর্যন্ত অপেক্ষা করে। কোনো ম্যানুয়াল বুট সিকোয়েন্সিং নেই।
  4. যোগাযোগের জন্য টাইপড ইভেন্টস। চারটি ডিসপ্যাচ মোড: emit (ফায়ার-এন্ড-ফরগেট), waterfall (middleware-স্টাইল যেখানে next()), parallel (সব শ্রোতা একসাথে চলে) এবং serial (শ্রোতাগুলো রিটার্ন ভ্যালুসহ ক্রমানুসারে চলে)।
  5. রেজিস্ট্রেশনগুলো হলো বিপরীতযোগ্য ইফেক্টস। প্রম্পট সেকশন, টুল স্কিমা, অ্যাডাপ্টার, শ্রোতা — সবকিছু ctx.effect() এর মাধ্যমে ইনস্টল হয় তাই রিলোড এবং টিয়ারডাউন সেগুলোকে পূর্বাভাসযোগ্যভাবে আনরোল করে।

Cordis waterfall মডেলটি around-middleware। একজন শ্রোতা (...args, next) পায়। পরবর্তী সার্ভিসে প্রত্যর্পণ করতে next() কল করুন; শর্ট-সার্কিট করতে next() ছাড়াই রিটার্ন করুন। একক-সিদ্ধান্ত ইভেন্টের জন্য, শর্ট-সার্কিটিংই ডিজাইন — একটি পলিসি শ্রোতা সরাসরি একটি সিদ্ধান্তের মালিক হতে পারে।

সবকিছুই প্লাগইন (সত্যিই)

deepseek.com/harness এ প্লাগইন তালিকাটি সম্পূর্ণ ক্ষমতার পৃষ্ঠকে স্পষ্ট করে:

  • Models — LLM ব্যাকএন্ড (DeepSeek, OpenAI, Anthropic, Bedrock, Vertex, Azure, Codex, এবং যেকোনো OpenAI-সামঞ্জস্যপূর্ণ endpoint)
  • Tools — মডেল কী কল করতে পারে
  • Skills — পুনর্ব্যবহারযোগ্য প্রম্পট এবং টুল বান্ডল
  • Sessions — কথোপকথনের স্টেট ম্যানেজমেন্ট
  • Sandboxes — কোথায় কোড চলে (PTY bash, danger-full-access লোকাল ব্যাকএন্ড, landlock-ভিত্তিক নেটিভ স্যান্ডবক্স)
  • Storage — সেশন স্থায়ীকরণ
  • Loops — এজেন্ট টার্ন লজিক
  • Scheduling — সাব-এজেন্ট এবং টাস্ক ডিসপ্যাচ
  • UI — Web UI যা ডিফল্টরূপে পোর্ট 3080 এ সার্ভ হয়

একজন ডেভেলপার কনফিগারেশনের মাধ্যমে এর যেকোনোটি বেছে নিতে, অদলবদল করতে বা প্রসারিত করতে পারে — DeepSeek Harness নিজের সোর্সে কোনো পরিবর্তন ছাড়াই। Plugin Config Catalog সোর্স থেকে অটো-জেনারেট হয় (scripts/gen-config-catalog.ts) এবং CI দ্বারা নতুন করে যাচাই করা হয়, তাই cordis.yml এর config: ব্লকের প্রতিটি ফিল্ড প্লাগইনের ঘোষিত কনফিগ টাইপের সাথে পুরোপুরি মেলে।

চারটি রানটাইম মোড

ডক্স চারটি প্রিসেট পাঠায়। প্রতিটি একটি ভিন্ন ব্যবহারের ক্ষেত্রে লক্ষ্য করে।

Standard Mode — সম্পূর্ণ কোডিং এজেন্ট: ফাইল এডিটিং, shell, ফাইল এবং ওয়েব সার্চ, স্কিল, প্ল্যানিং, গোল, সাব-এজেন্ট এবং ওয়ার্কফ্লো। এটি ডিফল্ট Web UI অভিজ্ঞতা।

Code Mode — Standard-এর সবকিছু, কিন্তু টুলগুলো Code Mode SDK-এর মাধ্যমে এক্সপোজ হয় যাতে মডেল একটি TypeScript প্রোগ্রামে মাল্টি-স্টেপ অপারেশনগুলোকে একত্রিত করতে পারে। একটি মডেল-জেনারেটেড প্রোগ্রাম বেশ কয়েকটি টুল-কল রাউন্ডের বদলে নেয়।

Minimal Mode — মাত্র দুটি টুল: একটি স্থায়ী bash shell এবং str_replace_editor। এটি একটি ছাঁটাই করা পরিবেশে মডেল বেঞ্চমার্ক করার জন্য। কোনো স্কিল নেই, কোনো প্ল্যানিং নেই, কোনো সাব-এজেন্ট নেই — বাস্তব কোডবেসের বিরুদ্ধে কাঁচা মডেল ক্ষমতা।

Creator Mode — কাস্টম এজেন্ট প্রিসেট লেখার জন্য নির্মিত। Standard মোডের সব ক্ষমতা ছাড়াও রানটাইম ইনস্পেকশন, ইন-মেমরি Cordis প্লাগইন পরীক্ষা এবং প্রিসেট-লেখন গাইডেন্স অন্তর্ভুক্ত। এভাবেই আপনি পঞ্চম, ষষ্ঠ, সপ্তম মোড তৈরি করেন।

প্রতিটি রান ট্রেসেবল

এখানেই Harness বেশিরভাগ এজেন্ট টুলিং থেকে আলাদা হয়। মডেল যা সব কিছু দেখে তা একটি append-only সেশন লগে রেকর্ড করা হয়:

  • সিস্টেম প্রম্পট
  • রিজনিং আউটপুট
  • টুল কল এবং তাদের ফলাফল
  • সাব-এজেন্ট শেডুলিং সিদ্ধান্ত
  • প্রতিটি কন্টেক্সট ইনজেকশন

Web UI-তে একটি Trajectory view আছে যেখানে আপনি সোর্স অনুযায়ী ফিল্টার করে এই রেকর্ডগুলো পরীক্ষা করতে পারেন। পুনরায় শুরু, ফোর্ক, সার্চ এবং রিপ্লে — এই চারটি অপারেশনই একই ইভেন্ট স্ট্রিমের বিরুদ্ধে কাজ করে। কোনো পৃথক ট্রেস ডাটাবেস নেই, কোনো এক্সপোর্ট স্টেপ নেই। সেশন JSONL সত্যের উৎস।

Python SDK-এর জন্য, সেশন ডিরেক্টরিটি অসংকুচিত JSONL সংরক্ষণ করে যেখানে অ্যাসেম্বল্ড মডেল অনুরোধ এবং টুল কল থাকে। examples/jsonrpc-agent/minimal.py এর উদাহরণটি এটিকে শুরু থেকে শেষ দেখায়।

মডেল কনফিগারেশন: DeepSeek + সবকিছু

মডেল কনফিগারেশন পেজ (Configure models) এর তিনটি স্তর রয়েছে।

DeepSeek Official। সেটিংস → মডেল খুলুন, একটি DeepSeek API কি পেস্ট করুন, সংরক্ষণ করুন। কীটি শুধুমাত্র লেখার যোগ্য। সংরক্ষণ করার পর, UI একটি রিড্যাক্টেড ডিস্ক্রিপ্টর পায়, কখনোই প্লেইনটেক্সট না। কীগুলো \$DSH_HOME/.credentials.yaml এ থাকে; সেটিংস পেজটি শুধুমাত্র একটি ক্রেডেনশিয়াল রেফারেন্স রাখে।

Catalog providers। «Add provider» ক্লিক করুন, Anthropic বা OpenAI বেছে নিন, কী পেস্ট করুন। নেটিভ অথ ব্যবহারকারী প্রোভাইডাররা (Bedrock AWS creds + অঞ্চলের মাধ্যমে, Vertex ADC প্রজেক্টের মাধ্যমে, Azure api-version এর মাধ্যমে, Codex OAuth-এর মাধ্যমে) শুধুমাত্র একটি API কি ফিল্ড দিয়ে কাজ করে না — প্রত্যেকের নিজস্ব অথ পাথ প্রয়োজন।

Custom providers। একটি কোম্পানি gateway, সেলফ-হোস্টেড সার্ভার, বা ক্যাটালগে না থাকা কোনো প্রোভাইডারের জন্য। একটি লোয়ারকেস Provider ID সেট করুন (স্থায়ী — অনুরোধ, সংরক্ষিত সেশন, মডেল ডিফল্ট এবং ক্রেডেনশিয়াল রেফ সব এটি ব্যবহার করে), বেস URL, API প্রোটোকল, ক্রেডেনশিয়াল এবং অন্তত একটি মডেল।

ভিজুয়াল মডেলের একটি অতিরিক্ত ধাপ প্রয়োজন। যেহেতু একটি কাস্টম endpoint-এর সমর্থিত মোডালিটি গুলো ঘোষণা করার কোনো উপায় নেই, ফর্মটি ভিশন সাপোর্ট স্বয়ংক্রিয়ভাবে সনাক্ত করতে পারে না। আপনি \$DSH_HOME/settings.yaml এ মডেলে input: [text, image] যোগ করুন। যদি আপনার সমস্ত কাস্টম মডেল ছবি গ্রহণ করে, তাহলে প্রতি-মডেলের পরিবর্তে একবার প্রোভাইডার লেভেলে defaultInput: [text, image] সেট করুন। input ফিল্ডটি একটি দাবি, কোনো পরীক্ষা নয় — আপনি যদি দাবি করেন যে একটি মডেল ভিশন করে কিন্তু endpoint আসলে করে না, তাহলে প্রোভাইডার Harness-এর পরিবর্তে অনুরোধ প্রত্যাখ্যান করবে।

ট্রাবলশুটিং ডক্সে সরাসরি লেখা হয়েছে:

  • MISSING_CREDENTIAL → মডেল পেজের মাধ্যমে প্রোভাইডার কি সংরক্ষণ করুন বা উল্লিখিত env var এক্সপোর্ট করুন
  • UNKNOWN_MODEL → একটি কনফিগার করা মডেল বেছে নিন, বা কাস্টম প্রোভাইডারে অনুপস্থিত মডেলটি যোগ করুন
  • «Get available models returns 401» → কীটি চেক করুন। মডেল আবিষ্কার OpenAI-সামঞ্জস্যপূর্ণ GET /models endpoint কল করে। যদি আপনার সার্ভিসটি এটি এক্সপোজ না করে, মডেলগুলো ম্যানুয়ালি লিখুন।
  • «Image rejected before send» → মডেলটি image মোডালিটি ঘোষণা করেনি। input: [text, image] যোগ করুন।
  • «Provider rejects a request with an image» → মডেলটি ভিশন ক্ষমতার দাবি করেছে যা এর endpoint-এর আসলে নেই। লিস্ট থেকে image সরিয়ে নিন এবং একটি নতুন সেশন শুরু করুন (পুরানো ছবিটি সেশন লগে থাকে এবং একই অনুরোধটি পুনরাবৃত্তি করতে থাকে)।

শুরু করা: তিনটি পথ

পথ 1: npx @deepseek-ai/dsh web

Node.js ইনস্টল করুন, একটি কমান্ড চালান। Web UI http://127.0.0.1:3080 এ শুরু হয়। এটুকুই। কোনো ক্লোন নেই, কোনো বিল্ড নেই, কোনো pnpm নেই।

Terminal window
npx @deepseek-ai/dsh web

তারপর: সেটিংস → মডেল → DeepSeek API কি পেস্ট করুন। ওয়ার্কস্পেস বেছে নিন (dsh যে ডিরেক্টরি থেকে ডাকা হয়েছিল সেটি কাজ করে)। একটি সেশন শুরু করুন:

এই রিপোজিটরিটি সারাংশ করুন এবং এর প্রধান প্যাকেজগুলো চিহ্নিত করুন।

এজেন্ট ওয়ার্কস্পেস ফাইল পড়ে এবং এডিট করে, কমান্ড চালায়, কাজ প্রত্যর্পণ করে এবং একটি পরিকল্পনা বজায় রাখে। সক্রিয় পারমিশন পলিসির অধীনে যে কোনো অপারেশন অনুমোদন প্রয়োজন সেটি কার্যকর করার আগে Web UI-তে একটি ডায়ালগ পপ করে।

পথ 2: ক্লোন করুন এবং সোর্স থেকে বিল্ড করুন

Terminal window
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

পথ 3: Python SDK

প্রয়োজনীয়তা: Python 3.10+, Linux x64 / Linux arm64 / macOS 14+ arm64 এ, একটি DeepSeek-সামঞ্জস্যপূর্ণ endpoint।

Terminal window
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
python -m venv .venv
. .venv/bin/activate
python -m pip install deepseek-harness-sdk

ক্রেডেনশিয়াল সেট করুন:

8000/v1
export DEEPSEEK_API_KEY=sk-your-key-here
# Optional:
# export DSH_MODEL=deepseek-v4-flash
# export DSH_SYSTEM_PROMPT='You are a helpful software engineer assistant.'

একটি বিচ্ছিন্ন ওয়ার্কস্পেসের বিরুদ্ধে একটি টাস্ক চালান:

Terminal window
python examples/jsonrpc-agent/minimal.py \
--workspace /absolute/path/to/workspace \
--session-root /absolute/path/to/sessions \
--session-id example-001 \
"Inspect the repository and fix the failing tests."

আপনার নিজের কোডের জন্য, SDK এন্ট্রিপয়েন্ট হলো DeepSeekHarness একটি কনটেক্সট ম্যানেজার হিসেবে:

from pathlib import Path
from deepseek_harness import DeepSeekHarness
config = Path("examples/jsonrpc-agent/minimal.cordis.yml").resolve()
workspace = Path("/absolute/path/to/workspace").resolve()
sessions = Path("/absolute/path/to/sessions").resolve()
with DeepSeekHarness(
provider="deepseek-official",
model="deepseek-v4-flash",
max_tokens=49_152,
cwd=str(workspace),
session_root=str(sessions),
cordis=str(config),
) as harness:
result = harness.run(
"Inspect the repository and fix the failing tests.",
session_id="example-001",
)
print(result.final_response)

DeepSeekHarness অলসভাবে বান্ডেল করা রানটাইম শুরু করে এবং with ব্লক থেকে বের না হওয়া পর্যন্ত এটি পুনর্ব্যবহার করে। Bash প্রসেস (ওয়ার্কিং ডিরেক্টরি, env vars, shell ফাংশন) সংরক্ষণ করতে একই session ID পুনর্ব্যবহার করুন। একটি স্বাধীন টাস্কের জন্য একটি নতুন session ID ব্যবহার করুন।

jsonrpc-agent মিনিমাল কম্পোজিশন ইচ্ছাকৃতভাবে বিরল: শুধুমাত্র স্থায়ী bash এবং str_replace_editor মডেল-ফেসিং টুল হিসেবে। Bash টাইমআউট 300 সেকেন্ড। এডিটর আউটপুট সীমা 16,000 অক্ষর। কন্টেক্সট কম্প্যাকশন নিষ্ক্রিয়। ফাইলসিস্টেম খাঁটি লোকাল ব্যাকএন্ড ব্যবহার করে — এডিটর পাথ রানটাইম প্রসেস যা কিছু দেখতে পায় তা অ্যাড্রেস করতে পারে। ডক্স স্পষ্টভাবে সতর্ক করছে: «এটি শুধুমাত্র একটি ডিসপোজেবল চেকআউট বা কনটেইনারের ভিতরে চালান»। স্থায়ী PTY ব্যাকএন্ডের জন্য একটি POSIX টার্মিনাল সাবস্ট্রেটও প্রয়োজন — এই কম্পোজিশনের জন্য কোনো Windows সাপোর্ট নেই।

আপনার প্রথম প্লাগইন লিখুন

টিউটোরিয়াল: Your first plugin। একটি প্লাগইন হলো একটি TypeScript মডিউল যা একটি apply ফাংশন এক্সপোর্ট করে:

import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply(ctx: Context) {
console.log('[hello-plugin] plugin loaded!')
}

এটি একটি cordis.yml প্যাচে রেজিস্টার করুন:

- insert:
- id: hello
name: '/absolute/path/to/deepseek-harness/scratch-plugin/src/my-plugin.ts'

ওভারলে সহ বুট করুন:

Terminal window
pnpm dsh web --patch ./scratch-plugin/cordis.yml

অটোম্যাটিক ক্লিনআপটিই কিলার ফিচার। ctx-এর মাধ্যমে যা কিছু রেজিস্টার হয় — ইভেন্ট লিসেনার, টুল, টাইমার — প্লাগইন আনলোড হলে ক্লিনআপ হয়। কোনো ম্যানুয়াল removeListener বা clearInterval নেই। স্পষ্ট ক্লিনআপের (নেটওয়ার্ক কানেকশন) জন্য, ctx.effect() থেকে একটি ডিসপোজার রিটার্ন করুন।

নির্ভরতা inject দিয়ে ঘোষণা করা হয়:

export const name = 'my-tool-plugin'
export const inject = ['tools']
export function apply(ctx: Context) {
// ctx.tools is ready here
}

Cordis প্লাগইন লোড করার আগে প্রতিটি প্রয়োজনীয় সার্ভিসের জন্য অপেক্ষা করে।

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

আপনার প্রথম টুল লিখুন

টিউটোরিয়াল: Build a tool@deepseek-ai/dsh-tools থেকে defineTool ব্যবহার করুন:

import type { Context } from '@deepseek-ai/cordis'
import { defineTool } from '@deepseek-ai/dsh-tools'
export const name = 'greet-tool'
export const inject = ['tools']
export function apply(ctx: Context) {
ctx.tools.register(defineTool({
name: 'greet',
description: 'Greet someone by name.',
parameters: {
name: {
type: 'string',
required: true,
description: 'The name to greet',
},
},
output: {
schema: { type: 'string' },
render: (_args, value) => [{ type: 'text', text: value }],
},
async execute(args) {
return `Hello, ${args.name}!`
},
}))
}

defineTool parameters থেকে args কে infer এবং validate করে। execute output.schema দ্বারা ঘোষিত ক্যানোনিকাল ভ্যালু রিটার্ন করে। output.render সেই ক্যানোনিকাল ভ্যালুকে মডেল-ফেসিং কনটেন্টে রূপান্তর করে। প্যাচ সহ রিস্টার্ট করার পর, Web UI-তে জিজ্ঞাসা করুন: «Use the greet tool to greet Ada»। মডেল greet কল করে এবং Hello, Ada! পায়।

টিউটোরিয়ালের পরবর্তী ধাপগুলো হলো plugin configuration, টুল লেখন রেফারেন্স (নেস্টেড স্কিমা, ক্যানোনিকাল ভ্যালু, ব্যাকগ্রাউন্ড ওয়ার্ক, পলিসি হুক, Code Mode, UI cards) এবং capability layering (Service Definition → Service Provider → Consumer package স্প্লিট)।

CLI এন্ট্রি মোড

@deepseek-ai/dsh কমান্ডটি প্রোডাক্ট লঞ্চার। চারটি এন্ট্রি পয়েন্ট:

Command Purpose
dsh --profile <name> \$DSH_HOME/profiles/<name> এর অধীনে নামযুক্ত প্রোফাইল বুট করুন
dsh --profile headless "job" একটি নতুন স্থায়ী সেশন চালান, চূড়ান্ত উত্তর প্রিন্ট করুন, প্রস্থান করুন
dsh web --profile web এর উপনাম
dsh plugin --profile <name> <pnpm args> pnpm-এ ফরওয়ার্ড করে প্রোফাইলের প্লাগইনগুলো পরিচালনা করুন

আহ্বানকারী ডিরেক্টরিটিই ডিফল্ট ওয়ার্কস্পেস রুট। web এবং headless প্রোফাইল প্রথম ব্যবহারে শিপড টেমপ্লেট থেকে অটো-ইনিশিয়ালাইজ হয়। অন্য যেকোনো প্রোফাইল অবশ্যই dsh plugin এর মাধ্যমে তৈরি করতে হবে।

লঞ্চার ফ্ল্যাগগুলো প্রথমে আসে। লঞ্চার যে প্রথম টোকেনটি চিনতে পারে না সেটি অ্যাপের আর্গুমেন্ট হয়ে যায়। উদাহরণ: dsh --profile web --port 8080 --port 8080 কে লঞ্চারের নয়, ওয়েব অ্যাপটির কাছে হস্তান্তর করে।

একটি প্রোফাইল ডিরেক্টরিতে একটি package.json (আউট-অফ-ট্রি প্লাগইন ডিপেন্ডেন্সি, প্লাস প্রোফাইল ম্যানিফেস্ট dsh.profile যার ক্রমানুসার bundles লিস্ট আছে) এবং একটি cordis.patch.yml (ব্যবহারকারীর নিজস্ব প্যাচ লেয়ার) থাকে। একটি খালি রুটের উপর কম্পোজিশনের ক্রম হলো: dsh.profile.bundles ক্রমে প্রতিটি বান্ডেলের প্যাচ → প্রোফাইলের cordis.patch.yml → হোম-লেভেল \$DSH_HOME/cordis.patch.yml--patch ওভারলে। বুট না করেই কম্পোজড ট্রি পরীক্ষা করতে --dump-default-config এবং --dump-config ব্যবহার করুন।

কমিউনিটি প্লাগইন এবং ইকোসিস্টেম

আবিষ্কারযোগ্যতার জন্য GitHub-এ আপনার প্লাগইন রিপোজিটরিকে dsh-plugin দিয়ে ট্যাগ করুন। অফিসিয়াল সাইটটি সরাসরি সেই টপিক পেজটির সাথে লিঙ্ক করে। আলোচনার জন্য একটি DeepSeek Harness Discord কমিউনিটিও আছে।

প্রজেক্টটি ফিডব্যাক এবং বাগ রিপোর্টের জন্য GitHub Discussions ব্যবহার করে। ডক্সে ডেভেলপমেন্ট ওয়ার্কফ্লোর জন্য CONTRIBUTING.md, সিস্টেম ডিজাইনের জন্য architecture.md এবং এজেন্ট-নির্দিষ্ট কোডিং কনভেনশনের জন্য AGENTS.md এর সাথে লিঙ্ক রয়েছে।

Developer Preview — হ্যাঁ, এটি ভাঙবে

README-তে এটি বড় অক্ষরে লেখা আছে: «THERE WILL BE COMPATIBILITY-BREAKING CHANGES.»

কোর প্লাগইন এবং API-এরা এখনও বিবর্তিত হচ্ছে। ল্যান্ডিং পেজটি সেটা সরাসরি বলেছে: «DeepSeek Harness developer preview-এ রয়েছে এবং এখনও এজেন্ট হার্নেস তৈরি করা ডেভেলপাররা এটি পরীক্ষা করছেন।»

আপনি যদি এটির উপরে বিল্ড করছেন, তাহলে একটি কমিট হ্যাশ পিন করুন, কনফিগ ক্যাটালগের বিরুদ্ধে আপনার প্লাগইনগুলোকে পাতলা রাখুন, এবং প্রতিটি rc বাম্পে পুনরায় পরীক্ষা করার আশা রাখুন। প্লাগইন অটো-ক্লিনআপ এবং ডিপেন্ডেন্সি ইনজেকশন পুনরায় পরীক্ষাকে মনোলিথিক ফ্রেমওয়ার্কের চেয়ে কম যন্ত্রণাদায়ক করে, কিন্তু «developer preview» মানেই ঠিক যা লেখা আছে।

এটি আলাদা কি করে তোলে

আজকের বেশিরভাগ এজেন্ট ফ্রেমওয়ার্ক একটি টার্ন লুপ দিয়ে শুরু করে এবং পরবর্তী চিন্তা হিসেবে এক্সটেনসিবিলিটি যুক্ত করে। Harness এটি উল্টে দেয়: এক্সটেনসিবিলিটি ফ্রেমওয়ার্ক, এবং টার্ন লুপটি মাত্র আরেকটি প্লাগইন। পর্যবেক্ষণযোগ্য ফলাফল হলো তিনটি জিনিস যা সাধারণত একটি প্যাকেজে পাওয়া যায় না:

  • ফোর্ক ছাড়াই যেকিছু বদলান। বিল্ট-ইন টুল সিস্টেম পছন্দ নেই? এটি প্রতিস্থাপন করুন। একটি ভিন্ন LLM রাউটিং লেয়ার চান? প্রোভাইডারটি বদলান। সবকিছু Cordis সার্ভিস কী দিয়ে resolve হয়।
  • ডিফল্টরূপে ট্রেসেবিলিটি। Append-only লগটি কোনো অবজারভেবিলিটি অ্যাড-অন নয়। এটিই কিভাবে সেশনগুলো কাজ করে। পুনরায় শুরু, ফোর্ক, সার্চ এবং রিপ্লে সবকিছু একই স্ট্রিম ব্যবহার করে।
  • কম্পোজেবল প্রিসেট, ফিচার ফ্ল্যাগ নয়। চারটি মোড (Standard / Code / Minimal / Creator) কেবল ক্রমানুসার প্লাগইন-বান্ডল প্যাচ লেয়ার। আপনি কোডের পরিবর্তে YAML ব্যবহার করে আপনার নিজের প্রিসেটগুলোকে উপরে স্তরায়িত করতে পারেন।

এই পদ্ধতিটি মনোলিথিক SDK-এর উপর জয় লাভ করবে কিনা তা নির্ভর করে প্লাগইন ইকোসিস্টেম পর্যাপ্ত থার্ড-পার্টি টুল এবং প্রোভাইডার উৎপন্ন করে কিনা যাতে বদলানো/পুনরায় কম্পোজ করার গল্পটি বাস্তবে পরিণত হয়। প্রথম দিনে 1.6k স্টার এবং 12k কমিটে নিঃসন্দেহে গতি রয়েছে।

তথ্যসূত্র

Share this page