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 को implement करता है। यह inject और apply(ctx) वाला फंक्शन हो सकता है, या Service सबक्लास।
  2. कॉन्टेक्स्ट सर्विसेज का रिपॉजिटरी है। एक प्लगइन स्टेबल की क्लेम करता है जैसे ctx.tools, ctx.llm, या ctx.sessions। दूसरे प्लगइन कंक्रीट इम्प्लीमेंटेशन को import करने के बजाय की के द्वारा सर्विसेज ढूंढते हैं।
  3. inject के ज़रिए सर्विस डिपेंडेंसी डिक्लेअर करें। जो प्लगइन ज़रूरी सर्विसेज को नाम से लिखता है, वह तब तक इंतज़ार करता है जब तक वो सर्विसेज मौजूद न हों। मैनुअल बूट सीक्वेंसिंग नहीं।
  4. कम्यूनिकेशन के लिए Typed Events। चार डिस्पैच मोड: emit (फायर-एंड-फोरगेट), waterfall (middleware-स्टाइल जिसमें next()), parallel (सभी लिस्नर साथ-साथ चलते हैं) और serial (लिस्नर क्रम में चलते हैं और रिटर्न वैल्यू देते हैं)।
  5. रजिस्ट्रेशन उलटने योग्य effects हैं। प्रॉम्प्ट सेक्शन, टूल स्कीमा, एडेप्टर, लिस्नर — सब कुछ ctx.effect() के ज़रिए इंस्टॉल होता है ताकि रीलोड और टीयरडाउन उन्हें प्रेडिक्टेबल तरीके से हटा दें।

Cordis waterfall मॉडल around-middleware की तरह काम करता है। एक लिस्नर को (...args, next) मिलता है। अगली सर्विस को डेलीगेट करने के लिए next() कॉल करें; short-circuit करने के लिए next() के बिना रिटर्न करें। सिंगल-डिसिजन इवेंट्स के लिए short-circuiting डिज़ाइन ही है — एक पॉलिसी लिस्नर किसी फैसले पर पूरी तरह से मालिक हो सकता है।

सब कुछ प्लगइन है (वाकई)

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 — पूरा coding एजेंट: फाइल एडिटिंग, shell, फाइल और वेब सर्च, स्किल्स, प्लानिंग, गोल्स, सब-एजेंट्स और वर्कफ़्लो। यह डिफ़ॉल्ट Web UI एक्सपीरियंस है।

Code Mode — Standard की हर चीज़, लेकिन टूल्स Code Mode SDK के ज़रिए एक्सपोज़ होते हैं ताकि मॉडल एक TypeScript प्रोग्राम में मल्टी-स्टेप ऑपरेशन को कंबाइन कर सके। एक मॉडल-जनरेटेड प्रोग्राम कई टूल-कॉल राउंड की जगह ले लेता है।

Minimal Mode — सिर्फ दो टूल: पर्सिस्टेंट bash shell और str_replace_editor। यह स्ट्रिप्ड-डाउन एनवायरनमेंट में मॉडल के बेंचमार्किंग के लिए है। कोई स्किल्स नहीं, कोई प्लानिंग नहीं, कोई सब-एजेंट्स नहीं — असली कोडबेस के खिलाफ कच्ची मॉडल क्षमता।

Creator Mode — कस्टम एजेंट प्रीसेट लिखने के लिए बनाया गया। Standard मोड की सभी क्षमताओं के अलावा रनटाइम इंस्पेक्शन, इन-मेमोरी Cordis प्लगइन एक्सपेरिमेंट, और प्रीसेट-लेखन गाइडेंस शामिल हैं। इसी तरह आप पांचवां, छठवां, सातवां मोड बनाते हैं।

हर रन ट्रेसेबल है

यहां Harness ज़्यादातर एजेंट टूलिंग से अलग होता है। मॉडल जो कुछ भी देखती है वह append-only सेशन लॉग में रिकॉर्ड होता है:

  • सिस्टम प्रॉम्प्ट
  • Reasoning आउटपुट
  • टूल कॉल और उनके रिजल्ट
  • सब-एजेंट शेड्यूलिंग फैसले
  • हर कॉन्टेक्स्ट इंजेक्शन

Web UI में Trajectory view है जहां आप इन रिकॉर्ड्स को सोर्स के अनुसार फ़िल्टर करके देख सकते हैं। रिज्यूम, फोर्क, सर्च और रीप्ले — चारों ऑपरेशन एक ही इवेंट स्ट्रीम के खिलाफ काम करते हैं। कोई अलग ट्रेस डेटाबेस नहीं, कोई एक्सपोर्ट स्टेप नहीं। सेशन JSONL ही सत्य का स्रोत है।

Python SDK के लिए, सेशन डायरेक्टरी अनकम्प्रेस्ड JSONL स्टोर करती है जिसमें असेंबल्ड मॉडल रिक्वेस्ट और टूल कॉल होते हैं। examples/jsonrpc-agent/minimal.py का उदाहरण इसे शुरू से अंत तक दिखाता है।

मॉडल कॉन्फ़िगरेशन: DeepSeek + सब कुछ

मॉडल कॉन्फ़िगरेशन पेज (Configure models) की तीन लेयर हैं।

DeepSeek Official। Settings → Models खोलें, DeepSeek API की पेस्ट करें, सेव करें। की केवल राइट-ओनली है। सेव करने के बाद UI को रीडैक्टेड डिस्क्रिप्टर मिलता है, कभी प्लेनटेक्स्ट नहीं। कीज़ \$DSH_HOME/.credentials.yaml में रहती हैं; सेटिंग्स पेज केवल क्रेडेंशियल रेफरेंस रखता है।

Catalog providers। «Add provider» पर क्लिक करें, Anthropic या OpenAI चुनें, की पेस्ट करें। नेटिव ऑथ वाले प्रोवाइडर (Bedrock AWS creds + region के ज़रिए, Vertex ADC project के ज़रिए, Azure api-version के ज़रिए, Codex OAuth के ज़रिए) सिर्फ API की फील्ड से काम नहीं करते — हर एक को अपने ऑथ पाथ की ज़रूरत होती है।

Custom providers। कंपनी gateway, सेल्फ-होस्टेड सर्वर, या कैटलॉग में न मौजूद किसी भी प्रोवाइडर के लिए। लोअरकेस Provider ID सेट करें (पर्मानेंट — रिक्वेस्ट, सेव किए गए सेशन, मॉडल डिफ़ॉल्ट, और क्रेडेंशियल रेफ़ सभी इसे यूज करते हैं), base URL, API प्रोटोकॉल, क्रेडेंशियल, और कम से कम एक मॉडल।

विजुअल मॉडल को एक एक्स्ट्रा स्टेप की ज़रूरत होती है। चूंकि किसी custom endpoint के पास अपनी supported modalities का ऐलान करने का तरीका नहीं होता, फॉर्म vision सपोर्ट को ऑटो-डिटेक्ट नहीं कर सकता। आप \$DSH_HOME/settings.yaml में मॉडल में input: [text, image] ऐड करें। अगर आपके सभी custom मॉडल इमेज स्वीकार करते हैं, तो प्रति-मॉडल के बजाय प्रोवाइडर लेवल पर एक बार defaultInput: [text, image] सेट करें। input फील्ड एक दावा है, चेक नहीं — अगर आप दावा करते हैं कि मॉडल vision करती है लेकिन असल में endpoint नहीं करता, तो प्रोवाइडर Harness के बजाय रिक्वेस्ट रिजेक्ट कर देगा।

ट्रबलशूटिंग डॉक्स में साफ लिखी हुई है:

  • MISSING_CREDENTIAL → प्रोवाइडर की को Models पेज के ज़रिए स्टोर करें या संदर्भित env var एक्सपोर्ट करें
  • UNKNOWN_MODEL → कॉन्फ़िगर किया हुआ मॉडल चुनें, या गुम मॉडल को custom provider में ऐड करें
  • «Get available models returns 401» → की चेक करें। मॉडल डिस्कवरी OpenAI-कम्पैटिबल GET /models endpoint कॉल करती है। अगर आपकी सर्विस ये एक्सपोज़ नहीं करती, तो मॉडल मैनुअली एंटर करें।
  • «Image rejected before send» → मॉडल ने image modality डिक्लेअर नहीं की। input: [text, image] ऐड करें।
  • «Provider rejects a request with an image» → मॉडल ने vision क्षमता का दावा किया जो उसके endpoint के पास असल में नहीं है। लिस्ट से image हटाएं और एक नया सेशन शुरू करें (पुरानी इमेज सेशन लॉग में रहती है और वही रिक्वेस्ट दोहराती रहती है)।

शुरू करने के तीन रास्ते

रास्ता 1: npx @deepseek-ai/dsh web

Node.js इंस्टॉल करें, एक कमांड चलाएं। Web UI http://127.0.0.1:3080 पर शुरू हो जाता है। बस। कोई clone नहीं, कोई build नहीं, कोई pnpm नहीं।

Terminal window
npx @deepseek-ai/dsh web

फिर: Settings → Models → DeepSeek API की पेस्ट करें। Workspace चुनें (dsh जिस डायरेक्टरी से कॉल किया गया वह काम करता है)। सेशन शुरू करें:

इस रिपॉजिटरी को सारांशित करें और इसके मुख्य पैकेज पहचानें।

एजेंट workspace फाइलों को पढ़ता और एडिट करता है, कमांड चलाता है, काम डेलीगेट करता है, और एक प्लान बनाए रखता है। सक्रिय परमिशन पॉलिसी के तहत जिस भी ऑपरेशन को अप्रूवल की ज़रूरत होती है, वह एक्सेक्यूट करने से पहले 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.'

अइसोलेटेड workspace के खिलाफ टास्क चलाएं:

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 करैक्टर। कॉन्टेक्स्ट कॉम्पैक्शन डिसेबल्ड। फाइलसिस्टम बेयर लोकल बैकएंड इस्तेमाल करता है — एडिटर पाथ रनटाइम प्रोसेस जो कुछ भी देख सकता है उसे एड्रेस कर सकते हैं। डॉक्स स्पष्ट रूप से चेतावनी देते हैं: «इसे केवल डिस्पोज़ेबल checkout या कंटेनर के अंदर ही चलाएं»। पर्सिस्टेंट 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 को extend करने वाला क्लास। जब प्लगइन खुद दूसरे प्लगइन के उपभोग के लिए कोई सर्विस प्रदान करता हो, तब क्लास फॉर्म यूज करें।

अपना पहला टूल लिखें

ट्यूटोरियल: 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 को फॉरवर्ड करके प्रोफाइल के प्लगइन मैनेज करें

इनवोकिंग डायरेक्टरी डिफ़ॉल्ट workspace रूट है। web और headless प्रोफाइल पहले यूज में शिप किए गए टेम्पलेट से ऑटो-इनिशियलाइज़ होते हैं। किसी भी दूसरे प्रोफाइल को dsh plugin के ज़रिए बनाया जाना चाहिए।

लॉन्चर फ्लैग सबसे पहले आते हैं। लॉन्चर जो पहला टोकन पहचान नहीं पाता वह ऐप का आर्गुमेंट बन जाता है। उदाहरण: dsh --profile web --port 8080 --port 8080 को लॉन्चर को नहीं, web ऐप को सौंपता है।

एक प्रोफाइल डायरेक्टरी में 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 में बना हुआ है और अभी भी डेवलपर्स द्वारा एजेंट harnesses बनाते हुए परीक्षण किया जा रहा है।»

अगर आप इसके ऊपर बना रहे हैं — कमिट हैश पिन करें, कॉन्फिग कैटलॉग के खिलाफ अपने प्लगइन को पतला रखें, और हर rc बंप पर री-टेस्ट करने की उम्मीद रखें। प्लगइन ऑटो-क्लीनअप और डिपेंडेंसी इंजेक्शन री-टेस्ट को मोनोलिथिक फ्रेमवर्क से कम दर्दनाक बनाते हैं, लेकिन «developer preview» का मतलब वही है जो लिखा है।

यह अलग क्यों है

आजकल ज़्यादातर एजेंट फ्रेमवर्क टर्न लूप से शुरू करते हैं और एक्सटेंसिबिलिटी को बाद में जोड़ते हैं। Harness इसे उलट देता है: एक्सटेंसिबिलिटी ही फ्रेमवर्क है, और टर्न लूप बस एक और प्लगइन है। अवलोकन योग्य नतीजा तीन चीजें हैं जो आमतौर पर एक ही पैकेज में नहीं मिलतीं:

  • बिना फोर्क के कुछ भी बदलें। बिल्ट-इन टूल सिस्टम पसंद नहीं? इसे बदलें। अलग LLM राउटिंग लेयर चाहिए? प्रोवाइडर बदलें। सब कुछ Cordis सर्विस कीज़ के ज़रिए resolve होता है।
  • डिफ़ॉल्ट रूप से ट्रेसेबिलिटी। Append-only लॉग कोई ऑब्जर्वेबिलिटी ऐड-ऑन नहीं। यही तरीका है जिससे सेशन काम करती है। रिज्यूम, फोर्क, सर्च और रीप्ले सब एक ही स्ट्रीम का इस्तेमाल करते हैं।
  • कम्पोज़ेबल प्रीसेट, न कि feature flags। चार मोड (Standard / Code / Minimal / Creator) बस ऑर्डर किए गए प्लगइन-बंडल पैच लेयर हैं। अपने प्रीसेट को कोड के बजाय YAML से ऊपर लेयर कर सकते हैं।

यह अप्रोच मोनोलिथिक SDK पर जीतता है या नहीं, इस बात निर्भर करता है कि प्लगइन इकोसिस्टम क्या enough थर्ड-पार्टी टूल्स और प्रोवाइडर पैदा करता है ताकि बदलने और री-कम्पोज़ करने की कहानी असली बन सके। पहले ही दिन 1.6k स्टार और 12k कमिट के साथ, गति स्पष्ट रूप से वहां है।

संदर्भ

Share this page