deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Relistencode/dsh-extension-hub
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
New in v0.2.8 — one-command install: the package now ships a bundle layer, so
dsh plugin --profile web add dsh-extension-hubwires the plugin row into your profile automatically (no more manualcordis.patch.ymledits in the quick start).New in v0.2.7 — the Add-ons block now also carries dsh-recall: conversation history recall for DSH — literal/fuzzy/semantic retrieval over every past session, fully local & offline.
New in v0.2.6 — A curated plugin store inside DSH: browse 400+ community-curated plugins (11 categories, bilingual descriptions), install from npm in seconds with anti-squatting checks, search every GitHub
dsh-pluginrepo — and keep them updated. Plus dsh-myrules — a companion plugin to edit your host-wide global instructions from the settings page. And a new Add-ons block in the Plugin Management tab: install, disable, uninstall and update companion features together with the main plugin.
Manage DeepSeek Harness (DSH) skills and MCP servers from one place.
Skills management · MCP servers · Skill import · Plugin management · Plugin market
A service-oriented extension center for DeepSeek Harness: a zero-dependency persistence core and CLI, plus a durable settings-page UI embedded in DSH Web — create / edit / enable / disable skills and MCP servers, one-click import from Claude Code and OpenAI Codex, and a full plugin manager (official vs third-party, enable / disable / uninstall, check & update, plus a Plugin Market with a curated store and GitHub search).
🌏 中文 · English
Prerequisites: DSH installed and running (dsh web works), Node.js ≥ 22, pnpm ≥ 10.
dsh plugin --profile web add dsh-extension-hub@0.2.13
One command: the package ships its own composition patch (bundle layer), so the plugin row is wired into your profile automatically — no manual cordis.patch.yml edits. Restart dsh web, then open Settings → Extension Management.
Install once — use the header's Check Updates button to upgrade later.
| Feature | CLI | Settings UI |
|---|---|---|
| List skills / MCP (enabled state, scope) | ✅ | ✅ |
| Create / edit / delete skills | ✅ | ✅ (form + Markdown body) |
| Enable / disable skills & MCP | ✅ | ✅ |
| Create / edit / delete MCP (stdio / streamable-http) | ✅ | ✅ |
| Import skills & MCP from Claude / Codex and other tools | ✅ | ✅ |
| Project-scope install with folder picker | ✅ (folder cmd) |
✅ (DSH directory picker) |
| Manage plugins (official vs other, enable / disable / uninstall) | — | ✅ |
| Plugin Market: curated store (npm install) + GitHub search | — | ✅ |
| Check & update third-party plugins | — | ✅ |
| dsh-myrules — edit host-wide global instructions (Customize page); search "dsh-myrules" in the plugin manager to disable or uninstall it | — | ✅ |
| Add-on manager: install / disable / uninstall companion features, update together with the main plugin | — | ✅ |
Built-in skills are read-only: the list also shows skills bundled with the
deployment (shipped presets, e.g. the cordis preset's skills) and skills
shipped inside user presets, marked "Built-in/Preset" and not editable /
deletable / toggleable — they belong to the deployment or preset layer. To
override, create a same-name skill in the user or project directory.
The Extension Management page ships a full plugin manager since v0.2.0, with four tabs: Skills / MCP Servers / Plugins / Plugin Market.

The Plugins tab lists every plugin row in your DSH composition, split into two collapsible groups:
@deepseek-ai/* packages (collapsed by
default). They can be disabled but not uninstalled; the cordis:include
entry is the composition loader itself and is marked Core — it cannot be
disabled or removed.Click a plugin to see its details: description, source, repository link, entry id and module name. From the detail block you can:
cordis.patch.yml; takes
effect after a dsh web restart. Disabling warns you that an unknown plugin
may cause serious problems.The Other Plugins group header has Check Updates: it compares npm
packages against the registry and local git clones against their origin HEAD.
Updateable plugins get a green Update Available button next to their status
label — click it to pull the new version (npm tarball or git pull), or use
Update All to update every updateable plugin at once.

The Plugin Market tab has two sub-views:
dsh-plugin (a
free-text query narrows the search). Each result shows stars and an
"Installed" badge when the repo is already present locally.Click a curated/discovered entry to open its detail page — description, stars, category (curated), install method and a link to the repository — then hit Install. Extension Hub:
node_modules without pnpm (no symlink/permission
requirements) and registers a bundle row. Packages installed this way are
managed by Extension Hub itself — keep updating them with its Check
Updates; the dependency is declared in the profile manifest, so a later
dsh plugin / pnpm install keeps it.~/.dsh/extension-hub/plugins/<repo> and verifies it ships a usable
package.json entry. Clone installs support zero-dependency plugins
only: packages with npm runtime dependencies are rejected (there is no
dependency-install step), and packages that rely on a bundle patch
(dsh.bundle.patch) are flagged because a clone cannot apply it. Be aware
that a monorepo root (e.g. the repo of dsh-myrules is this very
repository) clones as the root package, not the target plugin — use the npm
or Add-ons install path for those.cordis.patch.yml (managed insert
block) and self-checks the write.After a dsh web restart the plugin appears in the Other Plugins group,
where you can disable or uninstall it (GitHub-clone installs also remove the
clone directory) and keep it updated with Check Updates (npm packages
check the registry; local git clones update via git pull).

Installing runs third-party code. Only install repositories you trust, and check the repository's own README for install instructions — a repo tagged
dsh-pluginmay still be a skill, an MCP server, or need a custom setup.
hostPatchPath() no longer auto-probes the profiles directory (a scan could hit a headless profile before web and make the MCP list read/write the wrong composition); extension management is bound to the web profile, with an explicit profile name still supported..mcp.json > project .claude.json > user configs; Codex project > global) instead of the reversed order; the MCP list shows home-level rows ($DSH_HOME/cordis.patch.yml, read-only, badge-marked); composition and state writes are atomic (temp+rename, lock retries) so a crash cannot corrupt cordis.patch.yml; clone-install rejection messages distinguish a missing package.json from a missing build output (git installs fetch sources, not artifacts); README notes that npm-installed plugins stay managed by Extension Hub across later dsh plugin/pnpm runs.file:// URL pointing at the clone's entry file (v0.2.9 pointed at the clone directory, which Node ESM still rejects with ERR_UNSUPPORTED_DIR_IMPORT and crashed dsh web); clone installs also refuse packages with npm runtime dependencies (there is no dependency-install step) and warn when a package relies on a bundle patch that a clone cannot apply. To repair a broken row by hand, edit cordis.patch.yml and point name at the entry file, e.g. name: file:///C:/Users/you/.dsh/extension-hub/plugins/foo/lib/index.js.file:// module names; superseded by v0.2.10 (entry-file URLs).cordis.patch.yml), so dsh plugin --profile web add dsh-extension-hub wires the plugin row into your profile automatically; the quick start no longer requires manual cordis.patch.yml edits.packages/dsh-myrules) — a Customize (个性化) page in Settings that edits the host-wide global instructions ($DSH_HOME/AGENTS.md, injected into every session, new sessions apply immediately); theme-inverted primary buttons across the plugin manager, slim save button, percentage budget meter; rolling .bak backup removed.@scope) row ids match in installed detection and uninstall; README overhaul with new screenshots.- id: row means "override" and silently no-ops; rows must be wrapped in - insert:). Reverted all patch writes to the managed insert-block region; the profile patch was rebuilt to the correct format. This restores plugin loading after restart.@-prefixed names; uninstall removes discover-installed clone directories.dsh-plugin repositories in one click../typert) fix /api/extensionHub/* 404 in layouts where the protocol package loads twice; one-click update downloads the npm tarball directly (no pnpm).lib/host.js) is a TypertRemoteService gateway exposed
under the extensionHub wire namespace; the browser half mounts its Remote
contribution and calls the mounted namespace service.dsh.client.platform: "web" in
package.json; DSH's client-modules system scans it at boot, injects the
boot manifest, and serves the bundle over
/plugins/dsh-extension-hub/client.js — no web bundle rebuild required.lib/ code as the CLI.| Source | Skills | MCP |
|---|---|---|
| Claude | <repo>/.claude/skills/*/SKILL.md, ~/.claude/skills/*/SKILL.md |
<repo>/.mcp.json, ~/.claude.json, ~/.claude/.claude.json |
| Codex | <repo>/.codex/skills/*/SKILL.md, ~/.codex/skills/*/SKILL.md |
~/.codex/config.toml, <repo>/.codex/config.toml |
Conversion: Claude/Codex stdio servers → DSH transport: stdio
(command/args/env); http/sse → transport: streamable-http
(url/headers). Skill name/description/whenToUse are preserved,
license/allowed-tools fold into metadata.
--scope project → <target folder>/.dsh/skills/<name>/SKILL.md--scope global → ~/.dsh/skills/<name>/SKILL.mdEnable/disable rewrites the disable-model-invocation / user-invocable
frontmatter flags; removal deletes the file.
# >>> dsh-extension-hub … # <<< dsh-extension-hub) of
~/.dsh/profiles/<profile>/cordis.patch.yml.<target folder>/.dsh/mcp-servers.yaml and
generates a dedicated preset
~/.dsh/.agent-presets/<slug>-mcp/agent.cordis.yml (based on the shipped
standard preset). Select that preset in the session roster to activate
the servers.DSH itself runs on Windows, macOS and Linux; this plugin has no platform specifics — the CLI works anywhere Node.js runs, and the settings UI follows the DSH Web host.
config.toml; anything
outside them is skipped or reported, never silently corrupted.dsh-skill-filesystem: only
<root>/<name>/SKILL.md and <root>/<name>.md are recognized; names must
be kebab-case.DSH Extension Hub can integrate most plugins, letting users manage and keep every related feature updated in one place. If you are interested, your plugin is very welcome here too — together we can grow the DSH plugin ecosystem. Once integrated, your plugin appears in the Add-ons block of the Plugin Management tab, where users can install, disable, uninstall, and update it together with the main plugin.
Thank you for your open-source contribution to the DSH community!
Open an issue or reach out directly: Open an issue · Relistencode 1405650786@qq.com
This project builds on the open work of the DSH community. Thanks to:
plugins.json, bilingual descriptions, npm mappings).MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。