前言¶
在 DeepSeek Harness(DSH)里,skill 会分散在全局层、各 agent 预设层以及多种来源目录中。模型实际能加载哪些 skill,取决于运行时注册表与文件系统 provider 的发现结果,而不是「打开某个文件夹看一眼」就能对齐。
若只改磁盘上的文件、或不清楚某个 skill 来自哪一层,容易出现「以为删掉了,对话里还在」或「同名 skill 指向不同文件」的情况。内置「插件」页管的是 bundle 依赖,并不承担逐条 skill 的浏览与可恢复移除。
下面介绍社区插件 dsh-skill-mini-manager(中文名:skill 极简管理)。它在 DSH Web 设置面板左侧,与内置「插件」分区同级的独立一页(不是插件里的标签页),列出当前宿主可见的 skill,展示简介与占用,并支持逐个移入可回收站。
这是什么¶
- 插件 id:
dsh-skill-mini-manager - 维护者:runcat-tommy
- 分类:客户端(
dsh.client,platform 为web) - 许可证:MIT(见仓库
package.json) - 当前发布版本(npm / 仓库):
2.0.4
定位用一句话概括:Minimal skill manager for DSH Web——在设置里列出已安装 skill 的摘要、来源与磁盘占用,并把任意可移除项移入可恢复的回收站。
本插件不向模型注册提示词、工具或消息;对模型的唯一间接影响是:移除 skill 后,文件系统 provider 会让该 skill 从模型目录中消失。
核心功能¶
列表里显示什么¶
每一行对应一个 skill,字段来自 skill 自身 frontmatter 与宿主注册表,主要包括:
| 展示项 | 说明 |
|---|---|
| 名称 | frontmatter 的 name |
| 简介 | frontmatter 的 description(原样展示) |
| 使用时机 | 可选的 whenToUse |
| 来源 | 如 user-dsh、user-agents、project-dsh、project-agents、custom、bundled |
| 可调用面 | 模型可调用 / 用户可调用(对应 disable-model-invocation、user-invocable) |
| 占用 | skill 目录绝对路径、文件数、总字节数 |
| 提供给 | 哪些预设(或全局层)会把该 skill 交给 agent |
页面顶部有按名称 / 简介 / 使用时机过滤的搜索框、刷新按钮与计数;底部是回收站。
为什么能列全「当前 Web 里能用的 skill」¶
DSH 的 skill 注册表按 host + scope 分层。在标准 web profile 上,全局层往往是空的,用户 skill 多在各预设层。本插件会逐个读取全局层与 roster 里每个预设的层,再按名称合并;读不通的预设会在页面上明确报错,而不是静默少列。
- DSH 0.2 起:通过
acquireScope(id)获取租约,读完必须在finally里dispose。 - DSH 0.1.x:通过
standingKeyFor(id)获取 key,无需释放。
内容来自宿主真实运行的 ctx.skills;每次打开或刷新都现场读取,无缓存——页面上看到的就是模型此刻能加载的内容。
同名 skill 若在不同预设层指向不同文件,会列出但标为不可移除(ambiguous)。
移除与回收站¶
点「移除」会二次确认,确认框显示将要移动的确切路径。确认后宿主侧流程为:
- 将整个 skill 目录(或扁平布局下的单个
.md文件)移动到<DSH_HOME>/.skill-mini-manager/trash/<时间戳>-<名称>-<随机串>/payload,并写入meta.json记录原始路径。 - 该位置在所有 skill 根目录之外,provider 的发现不再看到该 skill,模型目录即时失效更新。
- 回收站可恢复(移回原路径);清空回收站为插件内唯一不可逆操作,同样需二次确认。
不能被移除的情况(页面显示原因、不提供按钮)包括:bundled-source、runtime-provider、system-owned、not-on-disk、outside-skill-roots、unsupported-layout、missing、ambiguous 等。浏览器侧只提交 skill 名称或回收站条目 id,不传路径;宿主每次自行解析目标,且不会把整个 skill 根目录当作删除目标。
宿主 HTTP 接口¶
四条同源路由(Origin 与 Host 不一致返回 403):
| 方法 | 路径 | 作用 |
|---|---|---|
GET |
/dsh-skill-mini-manager/api/catalog |
skill 列表 + 回收站 + 根目录状态 |
POST |
/dsh-skill-mini-manager/api/remove |
{"name":"<skill>"} |
POST |
/dsh-skill-mini-manager/api/restore |
{"id":"<回收站条目>"} |
POST |
/dsh-skill-mini-manager/api/purge |
清空回收站 |
安装与启用¶
本插件是标准 DSH bundle(声明 dsh.bundle.patch 与 dsh.client),没有构建步骤——浏览器侧 lib/client.js 已提交进仓库。装完后必须重启一次 dsh web;只刷新页面时,若主机半侧未挂载,页面会提示「插件的主机半侧没有响应」。
推荐:从 npm 安装¶
dsh plugin --profile web add dsh-skill-mini-manager
包内已带全部产物,不依赖 git,也不执行安装脚本。更新:
dsh plugin --profile web up dsh-skill-mini-manager
发布包见 npm:dsh-skill-mini-manager。
从 GitHub 直接安装¶
适合要跟仓库 main 最新提交、而非仅 npm 发布版的情况(需本机有 git):
dsh plugin --profile web add github:runcat-tommy/dsh-skill-mini-manager
更新即重跑同一条命令。
本地目录安装¶
适合改代码、离线或本机没有 git 的情况:将仓库下载或 clone 到本地后:
dsh plugin --profile web add /path/to/dsh-skill-mini-manager
若用 GitHub 的 Download ZIP,解压目录名常带 -main 后缀,add 须指向解压后的目录,不是 .zip 文件。
查看与卸载插件(与「移除 skill」无关):
dsh plugin --profile web list
dsh plugin --profile web remove dsh-skill-mini-manager
典型用法¶
- 安装插件并重启
dsh web。 - 打开 DSH Web 设置,在左侧导航进入与「插件」同级的 skill 极简管理 页。
- 用搜索框按名称或简介筛选;点刷新重新拉取目录(每次刷新会重读全部定义,skill 很多时可能稍慢)。
- 确认某 skill 的来源、占用与「提供给」哪些预设后,对可移除项点「移除」,在确认框核对路径后执行。
- 误删时在页面底部回收站点「恢复」;确定不再需要时再「清空回收站」。
仓库提供只读探针,可在本机已装 skill 上验证目录读取与移除规划(不执行删除):
node scripts/inspect-live-catalog.mjs
适用场景与注意¶
适合谁
- 经常在 DSH Web 里调试 skill、需要一眼看到 frontmatter 简介与磁盘占用的开发者。
- 希望用「移走文件 + 回收站」做可逆清理,而不是手动在多个预设目录里找同名目录的人。
已知限制(README 明确说明)
- 只列用户级 skill:设置面板没有工作区上下文,项目根下的
.dsh/skills、.agents/skills不会出现在列表;管理项目 skill 需要带工作区入口的其它方案。 - 移除是搬动文件,不是卸载包:不修改
package.json、registry 或插件装配。 - 回收站不会自动清理,需用户显式清空。
- 自定义 skill 根若目录名不是
skills,可能因outside-skill-roots被拒绝移除——判据是路径形状,偏保守。
安全与权限
插件以当前 dsh 进程的权限读写 skill 目录与 <DSH_HOME>/.skill-mini-manager/trash。安装前建议阅读 GitHub 源码 与 MIT 许可证,确认符合你的部署策略。社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-skill-mini-manager 把 DSH Web 里分散在多层的 skill 收成一页:摘要、来源、占用与可恢复移除,并通过对宿主的严格路径解析避免浏览器侧传路径删文件。若你主要用 web profile 管理用户级 skill,一条 npm 安装命令加上重启即可使用。