dsh-skills-manager-plus
Manage DSH skills and commands from Settings: list, enable/disable, edit, delete and add skills across global and project scopes, and save reusable prompts as slash commands.
Install
dsh plugin --profile web add dsh-skills-manager-plus
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-skills-manager-plus
[English](README.en.md) | 中文 | [更新日志](CHANGELOG.md)
技能与命令管理插件:在 DeepSeek Harness 设置界面的左侧边栏新增「技能与命令」页面,
可直接查看、启用/停用、编辑、删除与添加技能,还能把常用的提示词保存为命令,
在输入框输入 / 即可快速调用。
截图
技能列表 · 添加技能
 · 
编辑技能 · 命令管理 · 编辑命令
 ·  · 
功能
能力 · 说明
列表 · 展示技能目录中的全部技能,按「全局 / 项目」作用域切换
展开预览 · 点开一行查看该技能正文的 Markdown 预览
启用 / 停用 · 改写技能 frontmatter(模型可调用 / 用户可调用),目录监视器约一秒内热生效,无需重启
编辑 · 名称、描述、何时使用、两个调用开关与正文,改名即重命名目录
删除 · 移除技能的 SKILL.md(目录形式连同资源目录一起删除),用插件自己的确认弹窗,危险操作红色高亮
添加 · 创建一个新的 kebab-case 技能,保存到全局或某个项目;在「项目」标签下打开时默认选中当前项目
从压缩包安装 · 选择 zip / tar / tar.gz,自动识别常见技能包布局(GitHub「Download ZIP」、skillhub 根 SKILL.md 整包),deflate 压缩也能解出;安装后弹出结果窗,列出已安装与跳过清单
搜索 / 分页 · 按名称或描述搜索,每页 10 条
命令 · 把常用提示词保存为 /命令,选中后即以用户消息发送给模型
导入设置 · 一键启用 / 停用 .agents 技能目录(用户级与项目级),恢复时只还原本页停用的技能
多语言 · 中文 / English,跟随界面语言,页面右上角可随时切换并记住选择
安装说明
版本要求: DeepSeek Harness(DSH)≥ 0.1.5-rc.1(已在 0.1.6-alpha.1 与 0.2.0-rc.2 上开发并验证)。DSH 自身依赖 Node.js ≥ 24.2.0 与 Git ≥ 2.31.0。
插件市场一键安装
已安装 https://github.com/dsh-market/dsh-market 的话,打开 设置 → 插件市场,
搜索 dsh-skills-manager-plus,点一下安装即可。
命令安装
# 本地目录(以 link 方式安装,改动即时生效,适合开发调试) dsh plugin --profile web add <本仓库目录> # 之后重启 dsh(或等待 profile 热重载),在「设置 → 技能与命令」即可看到页面
验证
打开 dsh web,进入 设置 → 技能与命令(侧边栏火花图标的那一项)。
页面没有出现时的排查顺序:
1. 换最新版 Chrome/Edge —— 部分插件的 bundle 在旧内核会加载失败;
2. 确认装进了正在使用的 profile(dsh plugin --profile web ls 查看清单);
3. 浏览器控制台有报错时,附上报错内容提交 issue。
更新与卸载
dsh plugin --profile web ls # 查看已装插件 dsh plugin --profile web add <本仓库目录> # 更新(重新 add 即覆盖) dsh plugin --profile web remove dsh-skills-manager-plus # 卸载
配置写在哪里
技能的「唯一真相」是技能文件系统本身 —— 与 DSH 的技能提供者扫描的根目录完全一致:
~/.dsh/skills 用户级技能 ~/.agents/skills 用户级 .agents 技能 <项目>/.dsh/skills 项目级技能 <项目>/.agents/skills 项目级 .agents 技能
每个技能是一个 <name>/SKILL.md(或扁平 <name>.md),带 YAML frontmatter。
启用 / 停用开关就是改写 disable-model-invocation 与 user-invocable 两个键,
其它字段(包括未建模的嵌套字段)在改写时逐字节保留。
命令保存在:
$DSH_HOME/commands/<name>.md
每个命令一个 Markdown 文件,frontmatter 带 name、description 与可选的
argument-hint,正文即保存的提示词。文件会被监视,增删改后约一秒内重新注册到
DSH 的命令注册表,无需重启。
插件自身仅持有一个状态文件($DSH_HOME/skills-manager-plus.json),记录导入开关、
被停用的命令名,以及哪些技能是本页批量停用的 —— 切换回「启用 .agents 技能目录」时
只会恢复这些技能,手工停用的不受影响。
安全约定
- 只响应本机请求。 API 挂在同一个 loopback web server 上,非 loopback 来源直接 403。
- 写入被限定在本插件管理的目录内。 提交的路径越过技能根目录会被拒绝。
- 状态文件原子改写,加载时校验,损坏则重置为默认值。
- 命令以用户消息下发。 调用
/命令时,提示词通过agent.followup作为普通
用户消息发送,权限与日志行为与用户本人输入一致。
开发
node test/run.mjs # 全部测试(88 项,跨多个套件)
套件 · 覆盖范围
test/store.test.mjs · skills.js 与 commands.js 的纯逻辑:frontmatter 解析 / 改写、技能与命令的增删改、校验、根目录解析、压缩包安装
test/archives.test.mjs · zip / tar 包解析:目录标记、deflate(method 8)、zip64、中央目录
test/host.test.mjs · 宿主端全部 HTTP 路由,用假的 Cordis 上下文驱动真实 apply(),覆盖 loopback 限制、.agents 开关、压缩包安装
test/client.test.mjs · 浏览器 bundle 能否被 shell 加载并注册 settings.section 设置页面
test/add-install-scope.test.mjs · 添加 / 从压缩包安装弹窗的默认作用域(项目页打开时选中当前项目)
test/install-result.test.mjs · 安装结果弹窗的四种结果与跳过清单渲染
test/confirm.test.mjs · 删除确认弹窗(替代 window.confirm)的渲染
test/project-labels.test.mjs · 项目标签去重 / 命名,与 zh/en i18n 占位符一致性
测试不依赖任何测试框架,只用 Node 内置的 node:test。
结构
文件 · 作用
lib/index.js · 宿主端:loopback HTTP API、状态文件、.agents 导入开关
lib/skills.js · 技能文件模型:frontmatter 解析 / 改写、技能增删改查、根目录解析
lib/commands.js · 命令存储:命令文件读写、文件监视、注册到 DSH 命令注册表
lib/client.js · 浏览器端:设置页面 UI(手写 lazy-CJS bundle,无构建步骤)
cordis.patch.yml · bundle 补丁,把本插件插入 profile 的层栈
License
MIT
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::5,最后更新 2026-10-10