Ještě než DeepSeek Harness vyšel, objevil se v poznámce pod čarou. V tabulce benchmarků k modelu DeepSeek-V4-Flash-0731 na Hugging Face stojí u agentních úloh vysvětlivka, že se měřily „v minimálním režimu DeepSeek Harness (bude vydán)“. Model v něm na Terminal Bench 2.1 získal 82,7 bodu. Za pár týdnů, 13. srpna 2026, DeepSeek ten testovací nástroj zveřejnil na GitHubu celý.
Dnes má repozitář deepseek-ai/deepseek-harness přes 240 tisíc hvězdiček a 29 tisíc forků. Oficiální podtitul zní „Everything is a Plugin“ a platí bez výjimky: pluginem je každá součást včetně smyčky, která agenta pohání. Na první pohled vypadá jako další konkurent Claude Code nebo Codexu, jenže hotový agent je v něm jen jedna z možných sestav.
Hlavní produkt je stavebnice, a v tom je síla projektu i jeho největší slabina.
Projdu, z čeho se dsh skládá, jak funguje uvnitř, co umí po instalaci, jak hlídá (a nehlídá) váš počítač, kolik stojí provoz a kam tečou data. Vycházím z aktuálního stavu repozitáře ke 14. října 2026 (verze 0.2.1-alpha.3), z oficiální dokumentace a ze zveřejněných testů jiných redakcí. Desktopovou aplikaci jsem sám neinstaloval, a kde přebírám cizí měření, píšu u toho, čí je.
Co je to harness
Jazykový model sám o sobě umí jen jedno: dostane text a vrátí text. Aby z něj byl agent, který opraví chybu v kódu, potřebuje kolem sebe prostředí. To mu musí dát k dispozici nástroje jako čtení souborů, shell nebo vyhledávání na webu, vykonat volání, která model pošle, vrátit výsledek, hlídat kontext, ptát se uživatele na povolení a celé to opakovat, dokud není úkol hotový. Tomuhle obalu se v angličtině říká harness, tedy postroj. Claude Code, Codex CLI, Aider nebo Pi jsou harnessy, ve kterých si model vyměníte jen omezeně a smyčku agenta skoro vůbec.
DeepSeek to postavil obráceně.
Adaptér modelu, registr nástrojů, úložiště sezení, sandbox i samotná agentní smyčka jsou samostatné balíčky ve jmenném prostoru @deepseek-ai. Architektonická dokumentace to říká bez okolků: neexistuje žádné privilegované jádro, které byste museli patchovat. Chcete jiné chování? Připojíte plugin vedle ostatních.
MarkTechPost o čtyři dny později označil dsh za „vývojářskou infrastrukturu, ne produkční produkt“.
S tím souhlasím jen napůl.
Od verze 0.2 z konce září má dsh oficiální desktopovou aplikaci, plánované úlohy a práci s dokumenty, takže se k běžnému uživateli posouvá. Pod tím vším ale pořád leží stavebnice.
Cordis: srdce vypůjčené od chatbotů
Pod dsh běží framework Cordis a jeho původ je trochu kuriózní. Cordis (latinsky „srdce“) vznikl jako základ Koishi, čínského frameworku pro chatboty, kterému za čtyři roky komunita napsala přes čtyři tisíce pluginů. DeepSeek ho podle magazínu QbitAI převzal a upravil. Developers Digest v rozboru kódu ze srpna zjistil, že DeepSeek má Cordis přímo ve svém repozitáři jako fork verze 4.0.0-rc.7 i s dalšími převzatými balíčky a osmnácti vlastními úpravami. Dnes jich soubor vendor/README.md eviduje 24.
K Cordisu vyšel 26. srpna na arXivu zhruba devadesátistránkový preprint A Programming Paradigm for Spatiotemporal Composability. Autory jsou Yifan Shi, Wei Zhang a Tianyi Cui z Pekingské univerzity a DeepSeeku. Teorie se opírá o dva pojmy. První je vratný efekt: každý plugin, který něco změní ve sdíleném kontextu (zaregistruje nástroj, přidá službu, začne poslouchat událost), si s tou změnou uloží i její inverzi, a když ho vypnete, runtime inverze provede pozpátku, takže se systém vrátí přesně do stavu před jeho zapnutím. Druhý pojem je reaktivní závislost. Plugin deklaruje, které služby potřebuje, a aktivuje se až ve chvíli, kdy existují. Když služba zmizí, plugin se sám deaktivuje.
V praxi to znamená výměnu za běhu. Zapnete nový nástroj a model ho uvidí v dalším požadavku, vypnete ho a beze stopy zmizí, bez restartu. Autoři jako protipříklad uvádějí VS Code: z jeho sta nejpopulárnějších rozšíření obsahuje spustitelný kód 87 a vypnutí rozšíření obvykle znamená restart celého hostitelského procesu. Jde ovšem o preprint bez recenzního řízení a srovnávací měření s jinými architekturami v něm podle QbitAI chybí.
Profily, bundly a vrstvy konfigurace
Spuštěný dsh je strom pluginů, který se při startu složí z vrstev. Nejníž leží profil, pojmenovaná sestava uložená v domovském adresáři Harnessu. Dodávají se profily web, headless, sdk, sdk-minimal a acp. Profil vyjmenuje bundly, tedy npm balíčky s konfiguračními patchi a kódem, který připojí. Základní bundle dsh-base obsahuje adaptéry modelů, nástroje, ukládání, sandbox, politiku schvalování, nastavení, správu přihlašovacích údajů a telemetrii. Další bundly na něj vrství webovou aplikaci, jednorázový běh bez serveru, JSON-RPC server pro SDK nebo server pro protokol ACP.
Na bundly se pak aplikuje uživatelský cordis.patch.yml profilu, patch z domovského adresáře a nakonec soubory předané přepínačem --patch. Každý patch může libovolný řádek konfigurace nahradit nebo přidat nový. Jak vypadá strom, který na vašem stroji naběhne, vypíše jeden příkaz:
dsh --profile web --dump-config
Cizí plugin nainstaluje dsh plugin --profile <název> add <balíček-nebo-git> a komunitní pluginy se na GitHubu hledají podle tématu dsh-plugin.
Jen pozor: plugin běží v procesu Harnessu se všemi jeho právy a žádný sandbox se na něj nevztahuje.
Co agent umí po vybalení
Ve výchozí sestavě dostal model v testu Creative AI News 24 nástrojů. Najdete mezi nimi to obvyklé, tedy bash (na Windows pwsh), read, write, edit, glob, grep, web_search a web_fetch, ale i zajímavější kusy. Nástroj subagent pouští podřízené agenty, klidně s jiným modelem. workflow spustí skript, který si model sám napíše a který řídí víc subagentů najednou. Dál jsou tu cíle, todo seznam, plánovací režim, plánovač připomínek s cronem a časovými pásmy, dotazy na jazykový server přes LSP, úlohy na pozadí, trvalé terminály a dovednosti (skill) v podobném duchu jako v Claude Code. Agent si při startu načte i soubory AGENTS.md nebo CLAUDE.md z projektu.
Podpora MCP je zabudovaná jen jako klient a ve výchozím stavu není připojený žádný server. Dokumentace to zdůvodňuje tím, že příkaz MCP serveru je důvěryhodný spustitelný kód mimo sandbox agenta. Experimentálně jsou k dispozici ovládání prohlížeče přes Stagehand, ovládání desktopu na macOS, týmy agentů se sdíleným seznamem úkolů, hlasový vstup s lokálním modelem SenseVoice a sezení spouštěná webhookem.
Ve webovém rozhraní se volí ze čtyř režimů a každý načte jinou sadu pluginů:
| Režim | Co dělá |
|---|---|
| Standard | Výchozí plný agent: soubory, shell, web, dovednosti, plánování, subagenti, workflow |
| Creator | Agent zkoumá běžící runtime a z popisu v chatu napíše, nainstaluje a vyzkouší nový plugin |
| PTC | „Programmatic tool calling“: model nevolá nástroje jeden po druhém, ale napíše program, který je zavolá, a ten běží v odděleném Node procesu |
| Minimal | Holé prostředí s trvalým shellem a jednovětým promptem, určené pro benchmarky |
U minimálního režimu se vyplatí zastavit. Jeho systémový prompt je v repozitáři napevno: „You are a helpful software engineer assistant.“ K tomu trvalý shell, prohlížení obrázků a změna pracovního adresáře, nic víc. Právě v tomhle prostředí DeepSeek měřil své modely na Terminal Bench, takže ta čísla vypovídají o modelu i o tom, jak pečlivě si DeepSeek vyladil vlastní postroj.
Režim Creator je nejsmělejší nápad celého projektu. Agent si dvěma nástroji pro čtení stavu Cordisu prohlédne, z čeho je běžící harness zrovna složený, napíše podle vašeho popisu plugin a rovnou ho zavede. Oficiální stránka jako příklad ukazuje pomodoro časovač. Software, který za běhu rozšiřuje sám sebe, je přesně ten případ, pro který vratné efekty Cordisu vznikly: nepovedený plugin se vypne a nic po něm nezůstane.
Aspoň v teorii.
Deník, který nelže
Druhým pilířem architektury je session log. Každé sezení se zapisuje jako neměnný sled událostí: systémový prompt, zprávy, uvažování modelu, volání nástrojů a jejich výsledky, spuštění subagentů a každé vložení kontextu. Dokumentace pro to má pravidlo „co model vidí, je zalogované“. Každý požadavek na model musí jít z logu přesně zrekonstruovat. Podle Developers Digest to runtime kontroluje při každém volání modelu. Platí se za to výkonem, protože se celá historie serializuje dvakrát.
Z logu se odvozuje všechno ostatní. Obnovení přerušeného sezení, fork v libovolném bodě konverzace, fulltextové hledání ve starých sezeních (agent na to má vlastní nástroje), webový pohled Trajectory i telemetrie. DeepSeek stejné logy používá jako testy: uložený přepis sezení přehraje proti deterministickému falešnému modelu a ověří, že harness udělá totéž, takže v CI nepotřebuje API klíče ani hodnocení jiným modelem.
Tohle je pro mě nejsilnější část projektu. Kdo někdy pátral, proč agent ve třicátém kroku z ničeho nic smazal soubor, ví, jak bezcenný je agent bez spolehlivého záznamu.
Sandbox: co hlídá a co ne
Nová sezení startují s předvolbou oprávnění workspace-write. Příkazy a zápisy souborů jsou omezené na zvolený pracovní adresář a dočasné složky systému, a když agent potřebuje víc, musí se zeptat. Druhá dodávaná předvolba danger-full-access omezení úplně vypíná a na nic se neptá. Sandbox samotný zná ještě třetí režim read-only, který zakáže všechny zápisy. Vynucení obstarávají nativní mechanismy: na Linuxu bubblewrap nebo Landlock, na macOS Seatbelt a na Windows token s omezenými ACL. Když se sandbox nepodaří spustit, příkaz neproběhne vůbec a chybějící služba pro schvalování se počítá jako zamítnutí.
Méně příjemné je, že režim sandboxu hlídá jen zápisy.
CLI reference to píše rovnou: čtení a přístup k síti omezené nejsou a viditelnost cizích procesů záleží na backendu. Bubblewrap ostatní procesy schová do vlastního jmenného prostoru, Landlock a Seatbelt ne. Windows backend o sobě sám hlásí jen „částečné“ vynucení. Klíče v ~/.ssh nebo soubor .env v sousedním projektu tedy agent přečíst může a sandbox mu v tom nezabrání.
Jak to dopadá na Windows, ukázal 24. srpna Khalid Abdelaty z DataCampu. Stejný úkol, tedy opravit chybu v TypeScriptu se třemi padajícími testy, zadal dsh i Claude Code, obojímu s modelem Claude Sonnet 5. Patche vyšly bajt po bajtu stejné. Claude Code byl hotový za 55 sekund, dsh za 125, protože se mu sandbox workspace-write na Windows nespustil a tři příkazy musel autor schválit v režimu plného přístupu. Sám upozorňuje, že šlo o jediný běh a o Linuxu ani macOS nic neříká.
Soubor SAFETY.md je k vlastnímu projektu nezvykle upřímný. Software podle něj neprošel bezpečnostním auditem, nesmí se považovat za bezpečný a sandbox nezaručuje izolaci. DeepSeek doporučuje virtuál nebo kontejner a zálohy. Přidal bych jedno pravidlo z praxe: spouštějte dsh z adresáře projektu, nikdy z domovského, protože proces bere složku, ze které byl spuštěn, jako výchozí kořen.
Kam tečou data
Tahle část by měla zajímat každého, kdo chce dsh používat s modely DeepSeeku. Harness má tři oddělené datové kanály a každý se vypíná jinak.
Prvním je upload session logu. Plugin session-log-deepseek je ve všech dodávaných profilech zapnutý a ke každému požadavku na oficiální API DeepSeeku přikládá pole dsh_session_log s dosud neodeslanou částí logu, až 8 MiB na jeden požadavek. Model ho nevidí a cenu požadavku nezvyšuje, DeepSeek ho ale dostane celý včetně zadání, výstupů modelu, volání nástrojů a cest v pracovním adresáři. Vypíná se v Settings → General → Upload Session Log when using the official model API. Dokumentace přiznává háček: po opětovném zapnutí se dodatečně odešle i všechno, co se nahromadilo, zatímco byl přepínač vypnutý.
Druhým kanálem je telemetrie přes OpenTelemetry ve výchozím režimu FEEDBACK_ONLY. Data odejdou jen tehdy, když ohodnotíte odpověď nebo napíšete zpětnou vazbu, pak ovšem odejde celá dosavadní historie sezení, a to u všech poskytovatelů modelů. Úplně ji vypne proměnná DSH_TELEMETRY_MODE=DISABLED, která na první kanál nemá vliv.
Třetí kanál má jen desktopová aplikace. Produktová analytika zaznamenává interakce, tedy zobrazené stránky, odeslané zprávy a přepnutí modelu nebo pluginu, s identifikátorem zařízení a uživatele. Obsah zpráv neposílá. README balíčku výslovně uvádí, že pro ni v rozhraní neexistuje přepínač, vypnout jde jen v konfiguraci.
Vannarot Roeung z Creative AI News 30. září všechny tři kanály změřil na verzi 0.2.0-rc.2 proti testovacímu serveru, který požadavky jen zaznamenával. Pozdrav „Say hi.“ v prázdné složce odešel na trase DeepSeeku jako požadavek o 55,1 KB, s vypnutým logem měl 28,9 KB. Na trase k modelu jiného poskytovatele se log ani hlavičky s identifikátory Harnessu neposílaly vůbec.
Kontext tomu dávají zásady ochrany soukromí DeepSeek Harness aktualizované 20. září 2026. Session logy řadí mezi zpracovávaná osobní data a vstupy s výstupy může DeepSeek po šifrování a deidentifikaci „použít k trénování modelů“. Odmítnout to lze e-mailem na harness-privacy@deepseek.com. Provozovatelem je hangzhouská společnost DeepSeek a data shromážděná v pevninské Číně se podle zásad ukládají tam. U vlastního poskytovatele modelu zásady tvrdí, že DeepSeek vstupy ani výstupy na svých serverech neukládá, a měření Creative AI News tomu odpovídá.
Když jsem tuhle dokumentaci četl poprvé, čekal jsem skandál. Nenašel jsem ho: všechno je popsané v README i v CLI referenci a přepínač existuje. Výchozí hodnota ale stojí na straně DeepSeeku, ne uživatele. U nástroje, který vidí celý pracovní adresář, bych přepínač u firemního kódu vypnul ještě před prvním úkolem, nebo rovnou zvolil jiného poskytovatele.
Modely a cena provozu
Harness sám je zdarma, platíte jen model. Výchozí adaptér DeepSeeku má v katalogu dva modely s kontextem milion tokenů: deepseek-flash, za kterým dnes běží DeepSeek-V4.1-Flash s podporou obrázků, a čistě textový deepseek-v4-pro. Ceník na stránkách API DeepSeeku rozlišuje špičku a mimošpičku, mimo špičku je všechno o polovinu levnější:
| USD za milion tokenů | deepseek-flash (mimo špičku / špička) | deepseek-v4-pro (mimo špičku / špička) |
|---|---|---|
| Vstup, zásah cache | 0,003 / 0,006 | 0,022 / 0,044 |
| Vstup bez cache | 0,15 / 0,30 | 0,66 / 1,32 |
| Výstup | 0,60 / 1,20 | 1,98 / 3,96 |
Špička platí ve všední dny kromě čínských svátků od 1 do 4 a od 6 do 10 hodin UTC. V českém letním čase to je od 3 do 6 a od 8 do 12, po 25. říjnu o hodinu dřív. Odpoledne a o víkendu tak jedete za poloviční cenu.
Do účtu se promítá i velikost základního promptu. Podle měření Creative AI News posílá dsh ještě před jakoukoli prací 5 080 vstupních tokenů, z toho 4 479 připadá na definice nástrojů. Codex CLI 0.160.0 posílá 9 396 tokenů, Claude Code 2.1.286 rovných 16 891 a minimalistický Pi vystačí s 1 392. Agent posílá celou historii znovu s každým krokem, takže štíhlý start se při dlouhé práci sčítá. Kolik pak stojí skutečný úkol, záleží hlavně na tom, jak dlouho agent pracuje, a seriózní nezávislé srovnání nákladů na sadě úloh zatím nevyšlo.
DeepSeek přitom zdaleka není jediná volba. V nastavení modelů jsou připravení poskytovatelé jako Anthropic, OpenAI, Kimi (Moonshot) nebo GLM (Z.ai) a přes cloudové přihlašovací údaje i Bedrock, Vertex a Azure. Formulář Custom model API přijme libovolnou bránu, která mluví protokolem OpenAI Chat Completions, OpenAI Responses nebo Anthropic Messages, takže i lokální Ollamu nebo LM Studio. Klíče se ukládají jen pro zápis do $DSH_HOME/.credentials.yaml a webové rozhraní je zpátky nikdy nedostane.
Web, desktop, terminál, Python
Nejrychlejší cesta k vyzkoušení vede přes npm. Stačí Node.js 22.19 nebo 24 a novější:
cd ~/projekty/testovaci-repo
npx @deepseek-ai/dsh web
Webové rozhraní naběhne na http://127.0.0.1:3080, v nastavení zadáte klíč, přidáte pracovní adresář a můžete začít. Počítejte s objemem: Creative AI News napočítal po instalaci 540 npm balíčků o 505 MB, z toho 289 od DeepSeeku.
Od verze 0.2 existuje oficiální desktopová aplikace pro macOS na Apple Silicon a 64bitové Windows, ke stažení na deepseek.com/harness. Instalátory mají kolem 370 a 289 MB a nesou vlastní runtime, takže Node.js nepotřebují. Přibyla správa pluginů, náhled souborů a diffů v pravém panelu, plánované úlohy s historií běhů a přihlášení účtem DeepSeek místo API klíče. Linux oficiální desktop nemá a zůstává u webové verze. Ještě před oficiální aplikací vznikl komunitní obal DSH Desktop od vývojářů z organizace dataelement, který je podle svého README připnutý ke staré verzi 0.1.0-rc.6.
Kdo si dsh sestaví ze zdrojáků (pnpm install, pnpm run build, pnpm dsh web), uvidí v postranním panelu štítek „DSH Local Build“ s řetězcem typu 0.1.2-alpha.1-d347e79-dirty: verze, zkrácený hash commitu a příznak necommitnutých změn v pracovním stromu. Hodí se ho opsat do každého hlášení chyby.
Pro automatizaci jsou tu další vstupy. dsh --profile headless "úkol" provede jeden úkol a skončí. Profil acp zpřístupní agenta přes Agent Client Protocol pro řízení z jiných programů. Python SDK deepseek-harness-sdk (Python 3.10+, Linux x64 i arm64, macOS 14+ na Apple Silicon a Windows x64) spouští zabalený dsh a mluví s ním přes JSON-RPC, a právě přes něj vede i návod na spouštění benchmarků v souboru BENCHMARK.md.
Tempo, které bolí
README varuje velkými písmeny: „THERE WILL BE COMPATIBILITY-BREAKING CHANGES.“
Myslí to vážně. Od 13. srpna do 14. října vydal DeepSeek na npm 29 verzí, stabilní žádnou. Ke každé nekompatibilní změně repozitář vede samostatného průvodce přechodem a jen pro poslední čtyři vydání se jich sešlo 40, z toho 22 pro jedinou alfa verzi 0.2.1-alpha.1. Místo klasických RFC má projekt ve složce .agents/notes přes tisíc rozhodovacích záznamů v angličtině a čínštině. Developers Digest je popsal jako korpus psaný agenty a pro agenty, kteří na projektu pracují, a v kořeni repozitáře leží AGENTS.md i CLAUDE.md.
Verze 0.2.1-alpha.1 z 3. října přinesla experimentální vrstvu kompatibility s „mody“ z Claude Code. Dokumentace k ní je poctivá tabulka rozdílů: část událostí se nikdy nevyvolá, hooky nemůžou přepisovat argumenty nástrojů a mod běží v procesu Harnessu bez sandboxu s plnými právy. DeepSeek zjevně počítá s lidmi, kteří budou přecházet z Claude Code a budou chtít vzít rozšíření s sebou. Plnou kompatibilitu ale neslibuje.
Pro koho to je
Jako denní nástroj na programování dnes dsh nedoporučím nikomu, kdo nechce řešit, proč mu po aktualizaci přestal fungovat profil. Hotové komerční nástroje jsou dál a DataCamp to shrnul trefně: dsh dává smysl tam, kde je předmětem zájmu samotný runtime. Typicky když chcete stejný úkol pustit přes pět různých modelů a porovnat je, potřebujete vlastní smyčku nebo vlastní sandbox (třeba vzdálený přes SSH, i ten v repozitáři je) nebo chcete detailní stopu toho, co agent dělal a proč. Pro výzkum agentů, interní firemní nástroje a výuku je to nejotevřenější a nejlépe zdokumentovaný základ, jaký jsem zatím viděl.
S jednou výhradou, kterou bych napsal na začátek každého návodu. S oficiálním API DeepSeeku odchází ve výchozím nastavení celý průběh vaší práce čínskému provozovateli a podle jeho zásad může skončit v tréninkových datech. Pro hraní na jednorázovém repozitáři je to jedno, pro kód zákazníka ne.
Nejcennější na celém projektu je přiznání schované v té poznámce pod čarou: výsledek v benchmarku dělá model a postroj dohromady. DeepSeek teď ten postroj dal komukoli k rozebrání.
Zdroje: deepseek-ai/deepseek-harness (README, SAFETY.md, docs/architecture.md, docs/subsystems, apps/cli/reference; stav ke 14. 10. 2026), npm @deepseek-ai/dsh, DeepSeek-V4-Flash-0731 na Hugging Face, arXiv 2608.25512, ceník DeepSeek API, zásady ochrany soukromí DeepSeek Harness (20. 9. 2026), MarkTechPost, 17. 8. 2026 a 3. 10. 2026, Developers Digest, 13. 8. 2026, DataCamp, 24. 8. 2026, Creative AI News, 30. 9. 2026, QbitAI přes 36Kr, 14. 8. 2026.