# dsh-extension-hub
v0.2.19 新功能 — 附加功能区新增 dsh-pocket:把 DeepSeek Harness 装进你的口袋——电脑上跑 dsh web,手机扫码即同步访问(局域网 + 公网,实时同屏)。(点击展开更早的新功能)
**v0.2.18 新功能** — **附加功能**区新增 [odai-dsh-plugin](https://github.com/orziz/odai)(对每个 Agent 预设生效的 Odai 治理与责任路由)与 [dsh-cost-meter](https://github.com/Han-1413141/dsh-cost-meter)(会话成本与 token 统计、预算、余额与 Coding Plan 配额)。
**v0.2.15 新功能** — **附加功能**区新增 [dsh-vision-toolkit](https://github.com/Anionex/dsh-vision-toolkit):更强大的视觉工具包——直接粘贴图片即可进行图片理解、UI 还原、长截图分析等视觉任务。
**v0.2.8 新功能** — **一键安装**:包新增组合补丁(bundle 层),`dsh plugin --profile web add dsh-extension-hub` 一条命令自动接线插件行,快速开始不再需要手动编辑 `cordis.patch.yml`。
**v0.2.7 新功能** — **附加功能**区新增 [dsh-recall](https://github.com/Relistencode/dsh-recall):对话历史回忆——字面/模糊/语义三层检索全部历史会话,完全本地离线,让 AI 再也不会忘记你说过的话。
**v0.2.6 新功能** — 新增**精选目录**:社区精选 400+ 插件、11 个分类、双语描述,npm 秒装(带防抢注校验);「发现更多」可搜索全部 GitHub dsh 插件。另有 [dsh-myrules](https://github.com/Relistencode/dsh-extension-hub/blob/main/packages/dsh-myrules/README.zh.md) —— 在设置页编辑此主机全局指令的姊妹插件;插件管理页新增**附加功能**区,可一键安装、停用、卸载附属功能,并随主插件一起检查更新。
一站式管理 DeepSeek Harness(DSH)的 Skills 与 MCP 服务器。
技能管理 · MCP 服务器 · 技能导入 · 插件管理 · 插件市场
一个服务化的 DSH 扩展中心:零依赖的持久层与 CLI,加上嵌进 DSH Web 设置页的持久化管理界面——新建 / 编辑 / 启用 / 停用技能与 MCP 服务器、从 Claude Code 与 OpenAI Codex 一键导入,以及完整的插件管理器(官方/第三方分组、启用 / 停用 / 卸载、检查与更新,外加**插件市场**:精选目录 + npm 秒装 + GitHub 发现)。
🌏 中文 · [English](README.md)
## 快速开始
**环境要求**:已装好 DSH(`dsh web` 能正常运行),Node.js ≥ 22,pnpm ≥ 10。
```sh
dsh plugin --profile web add dsh-extension-hub@0.2.19
```
一条命令即可:包自带组合补丁(bundle 层),插件行会自动接入你的 profile,无需手动编辑 `cordis.patch.yml`。重启 `dsh web`,然后打开 **设置 → 扩展管理**。
安装一次即可,之后可通过顶部「检查更新」按钮升级。
## 主要功能
| 功能 | CLI | 设置页 UI |
|---|---|---|
| 列出技能 / MCP(含启用状态、范围) | ✅ | ✅ |
| 新建 / 编辑 / 删除技能 | ✅ | ✅(表单 + Markdown 正文) |
| 启用 / 禁用技能、MCP | ✅ | ✅ |
| 新建 / 编辑 / 删除 MCP(stdio / streamable-http) | ✅ | ✅ |
| 从 Claude / Codex 等其他工具导入技能与 MCP | ✅ | ✅ |
| 项目级安装(选择目标文件夹) | ✅(`folder` 命令) | ✅(DSH 目录选择器) |
| 插件管理(官方/其他分组,启用/停用/卸载) | — | ✅ |
| 插件市场(精选目录 npm 安装 + GitHub 搜索) | — | ✅ |
| 检查并更新第三方插件 | — | ✅ |
| [dsh-myrules](https://github.com/Relistencode/dsh-extension-hub/blob/main/packages/dsh-myrules/README.zh.md) — 设置页编辑此主机全局指令(个性化页);可在插件管理中搜索「dsh-myrules」停用/卸载 | — | ✅ |
| 附加功能管理(安装/停用/卸载附属功能,随主插件一起检查更新) | — | ✅ |
**内置技能只读**:列表会一并显示 DSH 部署自带的技能(shipped presets,如 `cordis` 预设自带的技能)与用户预设目录中的技能,标记为"内置/预设"且不可编辑/删除/切换 —— 它们属于 deployment 或预设层;如需覆盖,在用户或项目目录新建同名技能即可。
## 插件管理指南
**扩展管理**页自 v0.2.0 起内置完整插件管理器,共四个页签:**技能 / MCP 服务器 / 插件管理 / 插件市场**。

### 管理已安装的插件
**插件管理**页列出你 DSH 组合中的每一行插件,分成两个可折叠分组:
- **官方插件** — DeepSeek 官方出品的 `@deepseek-ai/*` 包(默认折叠)。可以停用但不能卸载;`cordis:include` 是组合配置加载器本身,标记为**核心**——不可停用或卸载。
- **其他插件** — 第三方与你自己安装的插件(比如本插件)。
点击插件查看详情:描述、来源、仓库链接、条目 ID 与模块名。详情里可以:
- **启用 / 停用** — 写入你的 profile `cordis.patch.yml`,重启 `dsh web` 后生效。停用前会警告:不清楚功能的插件可能带来未知的严重问题。
- **卸载**(仅非官方插件)— 从配置中移除该插件行,先警告、再二次确认"确认卸载?"。若插件是通过 GitHub 克隆安装的,其本地克隆目录会一并删除。
**其他插件**分组标题右侧有 **检查更新**:npm 包对比 registry、本地 git 克隆对比远端 HEAD。可更新的插件会在状态标签左侧出现绿色 **可更新** 按钮——点击拉取新版本(npm tarball 或 `git pull`),或用 **全部更新** 一键更新所有可更新插件。

### 发现并安装新插件
**插件市场**页内有两个子视图:
- **精选目录**(默认)— 社区精选目录([awesome-dsh-plugin](https://awesome-dsh-plugin.com/plugins.json),每日刷新),11 个分类、双语描述、星数与排序(精选/最热/最新)。带 npm 映射的条目**从 npm 安装**(registry tarball,秒级完成,并校验包指向所选仓库以防名称抢占);没有 npm 映射的条目回退为 GitHub 克隆。本地 24 小时缓存让该视图离线可用。
- **发现更多** — 搜索 GitHub 上打了 `dsh-plugin` 标签的仓库(可用关键字缩小范围)。每个结果展示星数,已安装的仓库会带"已安装"徽标。
点击条目进入详情页——描述、星数、分类(精选)、安装方式与仓库链接——然后点 **安装**。Extension Hub 会:
1. **优先走 npm registry**(插件发布到 npm 时):下载 tarball 到 profile 的 `node_modules`,全程不依赖 pnpm(无需符号链接/权限),并注册 bundle 行。此类插件由 Extension Hub 自行管理——之后请继续用其「检查更新」保持最新;依赖已写入 profile 清单,后续 `dsh plugin` / pnpm 重装不会丢失。
2. 否则**浅克隆**仓库到 `~/.dsh/extension-hub/plugins/<仓库名>`,并校验它带有可用的 `package.json` 入口。克隆安装仅支持**零依赖**插件:带 npm 运行时依赖的包会被拒绝(克隆没有依赖安装步骤),依赖 bundle 补丁(`dsh.bundle.patch`)的包会给出警告(克隆无法应用它)。另请注意:monorepo 根仓库(例如 dsh-myrules 的仓库就是本仓库)克隆后得到的是根包而非目标插件——这类插件请走 npm 或附加功能安装。
3. 在 profile `cordis.patch.yml` 注册插件(托管 insert 块)并自检写入。
> **安装路径混用警告(Discussion #2889)**:Extension Hub 的安装会写 profile patch 行并声明依赖。请**不要**再与官方 `dsh plugin add/list/update` 命令混用:DSH CLI 会把每个声明了 `dsh.bundle.patch` 的依赖追加进 `dsh.profile.bundles`,与手动注册行重复,导致 `dsh web` 启动崩溃(`duplicate loader entry id`,详见 [deepseek-harness Discussion #2889](https://github.com/deepseek-ai/deepseek-harness/discussions/2889))。若已运行过 `dsh plugin` 命令,请在重启前从 `dsh.profile.bundles` 移除重复条目。
重启 `dsh web` 后,插件出现在**其他插件**分组里,可以停用、卸载(GitHub 克隆安装的会同时删除克隆目录),并用 **检查更新** 保持最新(npm 包对比 registry,本地 git 克隆通过 `git pull` 更新)。

> 安装意味着运行第三方代码。请只安装你信任的仓库,并先看仓库自己的 README 安装说明——打了 `dsh-plugin` 标签的仓库也可能是技能、MCP 服务器,或需要自定义安装方式。
## 最近更新
最近更新(点击展开)
- **2026-08** — v0.2.19:**附加功能**区新增 [dsh-pocket](https://github.com/shaobeichen/dsh-pocket)——把 DeepSeek Harness 装进口袋:电脑上跑 dsh web,手机扫码即同步访问(局域网 + 公网,实时同屏);可在附加功能区一键安装/停用/卸载,并随主插件一起检查更新。
- **2026-08** — v0.2.18:**附加功能**区新增两个插件 — [odai-dsh-plugin](https://github.com/orziz/odai)(对 profile 中每个 Agent 预设生效的 Odai 治理与责任路由)与 [dsh-cost-meter](https://github.com/Han-1413141/dsh-cost-meter)(会话成本与 token 统计、预算、余额、Coding Plan 配额、90+ 模型价格目录);可在附加功能区一键安装/停用/卸载,并随主插件一起检查更新。
- **2026-08** — v0.2.17:带 bundle 补丁插件的 npm 安装增加**安装路径混用警告** — DSH CLI 的 bundle reconcile(`dsh plugin add/list/update`)会把每个声明了 `dsh.bundle.patch` 的依赖追加进 `dsh.profile.bundles`,与手动注册行重复,导致 `dsh web` 启动崩溃(`duplicate loader entry id`,见 [Discussion #2889](https://github.com/deepseek-ai/deepseek-harness/discussions/2889));README 同步补充该指引。
- **2026-08** — v0.2.16:附加功能安装增加**缺依赖提醒** — npm 安装器对照 profile 检查所下载插件的运行时依赖,缺失时在安装结果消息中追加提醒(安装仍照常完成;重启后若加载失败,在 profile 目录执行 `pnpm install` 补齐)。
- **2026-08** — v0.2.15:**附加功能**区新增 [dsh-vision-toolkit](https://github.com/Anionex/dsh-vision-toolkit)——更强大的视觉工具包(直接粘贴即可进行图片理解、UI 还原、长截图分析等视觉任务);可在附加功能区一键安装/停用/卸载,并随主插件一起检查更新。
- **2026-08** — v0.2.14:**修复:附加功能/已安装徽标感知 bundle 层** — 通过官方 `dsh plugin add`(bundle 方式)安装的功能或插件现在会被识别为已安装(其注册行在 bundle 自己的 patch 里,不在 profile patch),附加功能区块不再提供会导致 `dsh web` 崩溃的重复安装;`installNpmPlugin` 拒绝已被 bundle 层注册的包;bundle 安装的附加功能通过 `dsh plugin remove` 卸载(UI 有引导),不再误删 profile 行。
- **2026-08** — v0.2.13:**修复(issue #2)** — `hostPatchPath()` 不再自动探测 profiles 目录(扫描可能先命中 headless,导致 MCP 列表读写错位的组合配置);扩展管理固定绑定 **web** profile,显式指定 profile 仍受支持。
- **2026-08** — v0.2.12:**审查修复** — MCP 导入发现遵循 Claude/Codex 优先级(项目 `.mcp.json` > 项目 `.claude.json` > 用户配置;Codex 项目 > 全局),不再反向覆盖;MCP 列表展示 Home 层行(`$DSH_HOME/cordis.patch.yml`,只读,带徽标);组合配置与状态写入改为原子写(临时文件+rename,带锁重试),崩溃不会损坏 `cordis.patch.yml`;克隆安装拒绝消息区分"无 package.json"与"缺少构建产物"(git 安装取源码非产物);README 注明 npm 安装的插件由 Extension Hub 管理,后续 `dsh plugin`/pnpm 不会丢失。
- **2026-08** — v0.2.11:文档 —— 快速开始安装命令更新到当前版本(此前发布的包内 README 仍带着 v0.2.8 的命令)。
- **2026-08** — v0.2.10:**Windows GitHub 克隆安装崩溃完整修复** — 克隆插件行注册 `file://` URL 并指向克隆目录的**入口文件**(0.2.9 指向克隆目录,Node ESM 仍以 `ERR_UNSUPPORTED_DIR_IMPORT` 拒绝并导致 `dsh web` 崩溃);克隆安装同时拒绝带 npm 运行时依赖的包(克隆无依赖安装步骤),并对依赖 bundle 补丁(克隆无法应用)的包给出警告。若需手动修复损坏行,编辑 `cordis.patch.yml`,把该行 `name` 指向入口文件,如 `name: file:///C:/Users/you/.dsh/extension-hub/plugins/foo/lib/index.js`。
- **2026-08** — v0.2.9:Windows GitHub 克隆安装修复(第一次)— 克隆行从原始盘符路径改为 `file://` 模块名;已被 v0.2.10 取代(入口文件 URL)。
- **2026-08** — v0.2.8:**一键安装** —— 包新增组合补丁(`cordis.patch.yml`),`dsh plugin --profile web add dsh-extension-hub` 一条命令自动把插件行接入 profile;快速开始不再需要手动编辑 `cordis.patch.yml`。
- **2026-08** — v0.2.7:**附加功能**区新增 [dsh-recall](https://github.com/Relistencode/dsh-recall)——对话历史回忆(字面/模糊/语义三层检索全部历史会话,完全本地离线);可在附加功能区一键安装/停用/卸载,并随主插件一起检查更新。
- **2026-08** — v0.2.6:插件管理页新增**附加功能**管理区——不离开页面即可安装/停用/启用/卸载附属功能(dsh-myrules);头部**检查更新**改为主插件与已装附加功能一起检查、一键全部更新;附加功能区支持折叠;功能 i18n 键与 id 对齐;两个 README 新增「集成与合作」邀请段落。
- **2026-08** — v0.2.5:新增姊妹插件 **dsh-myrules**(`packages/dsh-myrules`)——设置页新增**个性化**页,编辑此主机全局指令(`$DSH_HOME/AGENTS.md`,注入所有会话,新会话立即生效);插件管理器的主操作按钮改为主题反转配色,保存按钮变扁,新增百分比预算进度条;移除滚动备份机制。
- **2026-08** — v0.2.4:**插件市场 + 精选目录 + npm 安装路径** — 插件市场页新增**精选目录**视图(默认,awesome-dsh-plugin 社区目录,11 个分类、双语描述、精选/最热/最新排序、24 小时离线缓存),与**发现更多**(GitHub 搜索)并列;带 npm 映射的插件改为从 npm registry 以 tarball 安装(无需 pnpm,带防抢注的仓库校验),GitHub 克隆作为回退;设置页页签更名为**插件市场**;修复精选目录加载卡死(client 侧方法注册);带引号的(`@scope`)行 id 在已安装判定与卸载中正确匹配;README 大改并更换截图。
- **2026-08** — v0.2.3:修复:补丁持久化语义——0.2.2 的平铺行写入对 patch 文件是错的(裸顶层 `- id:` 行会被当作 "override" 而静默失效;行必须包在 `- insert:` 里)。所有 patch 写入回退到托管 insert 块区域;profile patch 已重建为正确格式,重启后插件加载恢复正常。
- **2026-08** — v0.2.2:统一平铺行 patch 持久化(CLI 与 UI 写入同一 loader 兼容格式);MCP 列表读取合并行(region 与平铺格式);`@` 前缀名的标量引号修复;卸载会删除发现页安装的克隆目录。
- **2026-08** — v0.2.1:发现插件分页("加载更多",每页 30)、插件详情改为弹窗、真实的"已安装"标记(按配置行校验,而非仅看克隆目录)、安装写入自检、横向溢出修复。
- **2026-08** — v0.2.0:完整插件管理器——官方/第三方分组(按厂商 scope)、组合加载器核心保护、带确认的启用/停用/卸载、逐个插件检查与更新(npm registry + 本地 git 克隆,支持全部更新)、以及基于 GitHub 的**发现插件**页(一键克隆安装 `dsh-plugin` 仓库)。
- **2026-08** — v0.1.4:将 v0.1.3 更新说明同步进发布包(registry 同步发布)。
- **2026-08** — v0.1.3:新增严格 Typert 描述符(`./typert`),修复协议包重复加载布局下 `/api/extensionHub/*` 404 的问题;一键更新直接下载 npm tarball(不依赖 pnpm)。
- **2026-08** — 抬头新增"检查更新"按钮:对比本地版本与 npm registry 最新版。
- **2026-08** — 分区更名为 **扩展管理** 并加抬头("管理插件、技能和 MCP");导入从独立页签并入技能 / MCP 服务器页。
- **2026-08** — 完整中英双语(83 个文案键)、项目级文件夹选择、内置技能只读层。
- 首个版本 — CLI + 持久化设置页 UI + 零依赖持久层。
## 工作原理
- 宿主侧 `lib/host.js` 是一个 `TypertRemoteService` 网关(wire 命名空间 `extensionHub`);浏览器侧挂载自己的 Remote contribution,通过挂载后的命名空间服务调用。
- 浏览器包在 `package.json` 里声明 `dsh.client.platform: "web"`,DSH 的 client-modules 系统在启动时扫描并注入 boot manifest,通过 `/plugins/dsh-extension-hub/client.js` 路由动态服务 —— **无需重建 web bundle**。
- 所有真实读写都在宿主进程内完成(不受会话文件沙箱限制),与 CLI 共用同一套 `lib/` 代码。
## 数据来源(检索范围)
| 来源 | Skills | MCP |
|---|---|---|
| **Claude** | `/.claude/skills/*/SKILL.md`、`~/.claude/skills/*/SKILL.md` | `/.mcp.json`、`~/.claude.json`、`~/.claude/.claude.json` |
| **Codex** | `/.codex/skills/*/SKILL.md`、`~/.codex/skills/*/SKILL.md` | `~/.codex/config.toml`、`/.codex/config.toml` |
转换时:Claude/Codex 的 `stdio` 服务器 → DSH `transport: stdio`(`command`/`args`/`env`);`http`/`sse` → `transport: streamable-http`(`url`/`headers`)。Skill 的 `name`/`description`/`whenToUse` 保留,`license`/`allowed-tools` 折入 `metadata`。
## 安装位置(DSH 持久化落点)
### Skills
- **项目级** `--scope project` → `<目标文件夹>/.dsh/skills//SKILL.md`
- **全局** `--scope global` → `~/.dsh/skills//SKILL.md`
启用/禁用通过改写 `SKILL.md` frontmatter 的 `disable-model-invocation` / `user-invocable` 实现;删除即移除文件。
### MCP
- **全局** → 在宿主补丁 `~/.dsh/profiles//cordis.patch.yml` 的受管区域(`# >>> dsh-extension-hub` … `# <<< dsh-extension-hub`)追加/改写 `- insert: {id, name: '@deepseek-ai/dsh-mcp-client', config}` 行。
- **项目级** → 写清单 `<目标文件夹>/.dsh/mcp-servers.yaml`,并生成专用预设 `~/.dsh/.agent-presets/-mcp/agent.cordis.yml`(以 shipped `standard` 为基底)。在会话预设选择器里选该预设即可生效。
## 支持平台
DSH 本身支持 Windows、macOS 与 Linux;本插件无平台特殊性 —— CLI 在任意 Node.js 环境可用,设置页 UI 跟随 DSH Web 宿主。
## 已知限制
- YAML/TOML 解析器是自带的**子集**实现,覆盖 DSH composition 与 Codex `config.toml` 的实际形态;遇到未覆盖写法会跳过或报错,不会静默破坏文件。
- Skill 发现与 DSH `dsh-skill-filesystem` 一致:只识别 `//SKILL.md` 与 `/.md`,`name` 必须 kebab-case。
- 项目级 MCP 依赖"生成预设 + 手动选预设"机制;本工具不会替你在会话间自动切换预设。
- 项目级 MCP 的启用/禁用开关作用于生成的预设(即"这个项目选了这个预设时是否加载该服务器"),清单文件始终保留全部记录。
- 全局 MCP 的删除/编辑只影响本管理器添加的行(受管区域内);手写进 patch 的行不受影响。
- 精选目录是社区注册表的快照:加载时刷新并带 24 小时本地缓存,最多可能滞后一天。需要在安装时执行构建步骤的插件会回退为 GitHub 克隆安装,不走 npm tarball 路径。
## 集成与合作
DSH 扩展中心可以集成大部分插件,方便用户在一个地方管理、更新所有相关功能。如果您有意向,也非常欢迎将您的插件一起集成进来,共同完善 DSH 的插件生态——集成后,您的插件会出现在插件管理页的「附加功能」区,用户可以直接安装、停用、卸载,并随主插件一起检查更新。
期待您的加入,感谢您对 DSH 社区的开源贡献!
有合适的插件、功能或建议,欢迎提交 Issue 或直接联系:
[提交 Issue](https://github.com/Relistencode/dsh-extension-hub/issues) · Relistencode <1405650786@qq.com>
## 致谢
本项目的完善建立在 DSH 社区的开源成果之上,特此感谢:
- **[awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)** —— 社区精选插件注册表,**精选目录**视图的数据源(每日刷新的 `plugins.json`、双语描述、npm 映射)。
- **[dsh-market](https://github.com/dsh-market/dsh-market)** —— DSH 内置插件市场,示范了 npm 优先安装与 registry-对-仓库的防抢注校验。
- **[dsh-plugins-store](https://github.com/ZASENJC/dsh-plugins-store)** —— 静态插件市场,其目录/验证思路启发了发现页数据源设计。
- **[dshfind](https://github.com/hikariming/dshfind)** —— DSH 学习站与插件浏览器,其评分/分级展示启发了质量信号的想法。
## 许可证
MIT