DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Control Center — DeepSeek Harness 插件(DSH Plugin)
← Plugins
C

dsh-control-center

Control Center

DeepSeek Harness 的三个设置页面:管理 MCP 服务器、从 GitHub 编写或拉取代理技能,以及维护全局角色库。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:MYanhui/DSH-plug-in#08205bb9b77b13169d2e7a60f0d4783ac3955378
README兼容性版本

兼容性与来源证明

Control Center 以 dsh-control-center 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/1

版本

1.0.0stable
2026/10/1

相关插件

正在加载相关插件…

最新版
1.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/2
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Ab Publishdsh-ab-publish浏览器自动化发布工具,可登录任意网站并发布内容,整合为一个可发布的插件包Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Im@xmanrui/dsh-im将微信、飞书、企微、钉钉、QQ、Telegram、WhatsApp、Slack、Discord 和 Matrix 接入 DSH。

README

dsh-control-center

English | 中文

Three visual Settings pages for the DeepSeek Harness: MCP servers, skills and global personas. One dual-face plugin — a host half that owns the data and the one model-facing contribution, and a browser half that renders the pages into the settings shell.

The Chinese document (README.zh.md) is the fuller one: it adds the verification log, troubleshooting, and the one-click script reference.

Settings
├── …
├── MCP 管理          MCP server CRUD
├── Skill 管理        author or pull skills, inspect and delete them
└── 全局人设          a library of persona documents, one active

Install

The package is a normal DSH bundle. Any channel works.

One script (Windows). Copies the package, backs the patch up once, and writes the marked mount block — idempotent, -DryRun to preview, -Profile / -DshHome to target another profile:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\uninstall.ps1   # one-key restore

Official CLI, which also records the bundle in the profile manifest:

dsh plugin --profile <name> add dsh-control-center

By hand, for a profile whose node_modules is managed manually: copy this directory to <profile>/node_modules/dsh-control-center, then append the mount row to the profile's own cordis.patch.yml:

- insert:
    - id: control-center
      name: 'dsh-control-center'

dsh-hmr watches that file, so the plugin activates on save; the browser half is part of the client boot graph and needs one page refresh the first time it appears. After the first installation the script leaves cordis.patch.yml.bak-dsh-control-center as the final rollback point.

The three pages

MCP 管理

An MCP server is a Loader row, not a settings value, so the page writes a delimited managed block into the active profile's own patch layer and lets dsh-hmr reload the composition:

# >>> dsh-control-center:mcp — managed, edit it from Settings instead
- insert: [{"id":"cc-mcp-github","name":"@deepseek-ai/dsh-mcp-client","config":{…}}]
# <<< dsh-control-center:mcp

Everything outside the two markers is preserved byte for byte, and the payload is JSON — a strict subset of YAML 1.2 — so no URL, argument or environment value can change the document's shape. The definitions live in $DSH_HOME/control-center/mcp-servers.json; the block is regenerated from them on every write, so disabling a server removes its row without losing it.

The row reports its live Loader state, so the list distinguishes configured, enabled and connected.

Skill 管理

Skills are ordinary files, so this page is a filesystem editor over the roots dsh-skill-filesystem already scans — it keeps no database:

RootSource
$DSH_HOME/skillsuser-dsh, provider rank 400 — where installs go
$DSH_AGENTS_HOME/skillsuser-agents, rank 500
any customSkillDirsfrom a live skill-filesystem row

Project roots (.dsh/skills, .agents/skills) depend on the session's working directory rather than on this global page and are deliberately left out.

  • New skill writes <root>/<name>/SKILL.md with name, description, whenToUse and the body.

  • Raw editor opens the current file verbatim; saving re-validates the frontmatter.

  • Pull from GitHub downloads one source archive, finds every SKILL.md at a plausible depth, and installs each bundle. Three URL shapes are accepted, plus the git@github.com:owner/repo.git spelling:

    https://github.com/owner/repo
    https://github.com/owner/repo/tree/<branch>
    https://github.com/owner/repo/tree/<branch>/<subpath>
    

    No git binary is needed: the archive is fetched from codeload and unpacked by a small built-in tar reader. An existing skill is only replaced when overwrite is on.

The filesystem provider watches its roots, so a created, edited or deleted skill reaches the next model step without a restart.

全局人设

Each persona is a Markdown document under $DSH_HOME/control-center/personas/, with its name and description in personas.json. Exactly one is active, and the page can clear the seat.

The active document is registered as one system-prompt section:

ctx.systemPrompt.section({
  name: 'control-center:persona',
  order: 5,
  text: activeDocument,
  interpolate: false,
})

Three properties follow, and all are intended:

  • additive — the harness identity, the deployment persona, tool guidance and the environment suffix are untouched; the section lands immediately after the deployment persona prefix at order 0;
  • global — a preset that shadows deployment:persona-prefix for one agent does not remove it, so every session is covered;
  • literal — interpolate: false keeps {{…}} as written, so a stray brace in prose can never fail prompt assembly.

Switching the active document disposes and re-registers the section; the next assembly carries the new text.

HTTP API

One POST-only route, /control-center/api, with a method field:

MethodPurpose
system.infopaths and version
mcp.state / mcp.save / mcp.remove / mcp.toggleMCP servers
skill.state / skill.read / skill.save / skill.write / skill.remove / skill.pullskills
persona.state / persona.read / persona.save / persona.remove / persona.activatepersonas

Responses are { ok: true, value } or { ok: false, error: { code, message } }. The route is fenced against cross-origin browser callers: an Origin header must name a loopback host, and a present Content-Type must be JSON. A caller with no Origin — the Electron IPC bridge, a shell tool — is already running with the user's own authority.

Checks

Both scripts need no dependencies and no harness:

node scripts/selfcheck.mjs     # host half: frontmatter, tar, the managed block, all three stores over real files
node scripts/clientsmoke.mjs   # browser half: bundle, slot registration, every section rendered with stubbed host replies

skill.pull's network path is not exercised by either; verify it against a real repository from the running harness.

Layout

index.js                 host half: route, API table, persona section, MCP reconciliation
client.js                browser half: the three Settings sections
lib/wire.js              body reader, JSON responder, request fence
lib/paths.js             DSH_HOME / profile locations, atomic read-write
lib/mcp.js               MCP store + the managed patch block
lib/skills.js            skill roots, frontmatter, CRUD, GitHub install
lib/github.js            repository reference parsing + archive download
lib/tar.js               minimal tar reader
lib/personas.js          persona store + the prompt section lifecycle
scripts/install.ps1      one-key install (UTF-8 with BOM — see README.zh.md)
scripts/uninstall.ps1    one-key restore
scripts/selfcheck.mjs    host-half checks
scripts/clientsmoke.mjs  browser-half checks

Publishing to the DSH plugin market

package.json is already shaped for it (no private, license, repository with directory, keywords, engines.dsh, peerDependencies, dsh.manifestVersion) and locale/{en,zh}.json supplies the store card copy.

The catalog is the curated list awesome-dsh-plugin: add ONE file under data/plugins/, run node scripts/generate-readme.mjs, open a PR. The step-by-step checklist — plus the entry YAML, a pre-flight validator and the screenshot template — lives in the repository's publish/ directory.