前言¶
DeepSeek Harness(dsh)把技能写成 SKILL.md:目录型(bundle)带脚本和资源,平铺型(flat)就是一个 Markdown 文件。扫描根不止一处——系统级在 ~/.dsh/skills,项目级还可能在 <项目根>/.dsh/skills 或 <项目根>/.agents/skills。从 GitHub 解压下来的技能,目录名经常带着 -main 后缀,frontmatter 里的 name 不一定是 kebab-case,缺 description 时 DSH 会直接排除这条技能。手动在磁盘上搬文件、改 YAML、再重启核对,容易把「全项目生效」和「只对当前仓库生效」混在一起。
dsh-skill-manager-ytxue 是社区做的 Web 界面插件:在设置侧边栏加一块「Skill 管理」面板,把列表、导入、启用/停用和按 DSH 规范检查修复放在同一处。本文按插件目录页、GitHub 仓库 README / package.json 与 DeepSeek Harness 官方说明核对后整理。社区插件目录 deepseek-harness-plugin.com 是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
这是什么¶
dsh-skill-manager-ytxue 是一款界面增强插件,由 YTxue 维护,源码在 GitHub 仓库 YTxue/dsh-skill-manager-ytxue,许可证 MIT,当前版本在 package.json 里写的是 0.6.0,运行时要求 Node.js 20 及以上。GitHub 仓库描述与目录页一致:在设置侧边栏提供技能列表、启用/停用、文件夹批量导入(重名询问)、按 DSH 规范做状态驱动的检查和自动修复,并区分系统级与项目级。截至 2026-08-17,GitHub 显示 7 星;目录页收录时星标为 4,以仓库页面为准。
它解决的是「技能已经在磁盘上,但缺少一块对着规范来管的界面」:把启用目录和技能池分开,导入时先预检再让你决定覆盖还是跳过,检查结果用红绿点标在名字旁边。客户端声明 platform: web,挂在 Web UI 的设置分区,不是终端 TUI。
仓库 README 特别说明:npm 上的 dsh-skill-manager(维护者 gohana,0.1.x,2026-08-13 发布)是无关的第三方包。本插件包名带 ytxue 后缀,安装以本仓库为准,不要用 npm install dsh-skill-manager。
核心功能¶
设置侧边栏面板¶
插件注册 settings.section 插槽,order: 900。打开 DeepSeek Harness 网页设置后,侧边栏会出现「Skill 管理」。工具栏提供:
- 刷新:外部手动放入或改过 skill 后,重新拉取列表。
- 一键检查:只处理红点条目,按规范检查并自动修复。
每行显示 frontmatter 里的 description;没有简介时提示「(无简介)」。名字旁还有 bundle / flat 标签:
| 标签 | 形态 | 说明 |
|---|---|---|
| bundle | 目录,正文在 SKILL.md |
可附带 scripts、assets 等多文件 |
| flat | skills 下的单个 .md |
适合纯指令型技能 |
两者对 DSH 扫描和 frontmatter 要求相同,面板里的启用、停用、检查也按整个条目(目录或文件)移动,标签只用来区分形态。
系统级与项目级¶
面板把来源级别标在 bundle / flat 后面:
- 系统级:
~/.dsh/skills,对应 DSH 原生扫描 rank 400,对全部项目生效。 - 项目级:
<项目根>/.dsh/skills(rank 100)或<项目根>/.agents/skills(rank 200),只对该项目生效。项目级条目只读展示、灰点,不参与规范检查。
默认只显示当前项目的项目级技能。面板打开或刷新时,客户端把当前会话工作目录传给 host(订阅 sessions 服务,切换会话即同步,不必先发言);host 向上探测 .git 祖先,判定方式与 DSH 的 skill-filesystem 一致,没有 .git 时用 cwd 自身。$DSH_HOME 自身会排除,避免和系统级重复。若某个项目从没开过会话、又想出现在列表里,可在 $DSH_HOME/settings.yaml 增加:
skill-manager-ytxue:
projectRoots:
- '/path/to/project1'
- '/path/to/project2'
旧版挂载条目里的 config.projectRoots 仍会自动合并;新配置优先写 settings.yaml。
状态总览是双列表:已启用目录 ~/.dsh/skills,以及零挂载的池目录 ~/.dsh/skill-pool。
导入:单条、批量、重名询问¶
导入入口支持选文件夹或手动填路径。README 描述的目录浏览对话框从「此电脑」(全部盘符)起步,可进入任意磁盘、任意层级;标题栏提供「选择此文件夹」和关闭,底部有独立的「返回上级文件夹」,避免点错。选中后自动填入路径。
路径识别规则:
- 路径本身是一个 skill(含
SKILL.md的目录,或单个.md文件)→ 导入 1 个(kind: single)。 - 路径是包含多个 skill 的大文件夹 → 逐个导入直接子级(含
SKILL.md的子目录 + 顶层.md),非 skill 文件忽略(kind: batch)。
导入前先 dry-run。发现重名时弹窗说明将导入 N 个、其中 M 个与现有条目重名,由你选择:跳过重名并导入其余、覆盖重名(替换现有)、或取消。不会默默跳过。
目标有两处:
- 复制到启用目录
skills:立即生效,导入后自动检查修复。 - 复制到池
skill-pool:零挂载,之后再启用。
导入时会做 kebab 规整,README 给的实测例子是 guizang-ppt-skill-main → guizang-ppt-skill。结果逐条显示 ✓(覆盖)、△(重名跳过)、✗(失败)和警告。
启用、停用与规范检查¶
启用 / 停用在池和启用目录之间移动条目,目录 bundle 与平铺 .md 都支持。冲突或重复会报错,不会覆盖已有条目。
检查状态用名字旁的圆点表示,依据 ~/.dsh/skill-manager-ytxue.checked.json,按 SKILL.md 内容的 sha1 指纹判定:
- 绿点:规范已检查且内容未变。
- 红点:尚未检查,或内容已变更。
检查只针对红点:首次启用会全量检查,之后(含插件每次启动)只检查新增或被修改的条目,绿点自动跳过。不合规会自动修复,并写入 ~/.dsh/skill-manager-ytxue.log。README 列出的修复项包括:
- 目录名 / 文件名非 kebab-case → 规整重命名,并同步 frontmatter
name - frontmatter
name缺失、非 kebab、或与目录名不一致 → 以目录名为准修正 description缺失 → 补占位描述(DSH 会排除无 description 的 skill)- 布尔字段
disable-model-invocation/user-invocable写成驼峰 → 改为 kebab;非布尔值则修正或删除(识别TRUE/FALSE/1/0/yes/no/on/off)
host 端还暴露一组本机回环 API,路径前缀 /api/skill-manager-ytxue/,例如 GET /state 取双目录快照,POST /check、/enable、/disable、/import,以及给选择器用的 GET /list-dir。响应统一为 {ok, data?} 或 {ok:false, error}。面板只请求本机这些接口,不向外发请求。
安装与启用¶
目录页给出的安装命令如下,在 DeepSeek Harness 终端运行:
dsh plugin add github:YTxue/dsh-skill-manager-ytxue
如需可复现安装,按目录页说明固定 commit。仓库 main 分支截至 2026-08-14 的最新提交是 f254f3005a446062e312144f27ed0820d38d4654:
dsh plugin add github:YTxue/dsh-skill-manager-ytxue#f254f3005a446062e312144f27ed0820d38d4654
README 另外给出两种不经过 npm 同名包的写法。一种是指定 web profile 和 git 地址:
dsh plugin --profile web add git+https://github.com/YTxue/dsh-skill-manager-ytxue
另一种是 clone 后按 DSH 原生机制挂载(README 称为方式 B,任何环境通用):
git clone https://github.com/YTxue/dsh-skill-manager-ytxue.git
- 把插件目录放到
$DSH_HOME/profiles/web/node_modules/dsh-skill-manager-ytxue/。 - 在
$DSH_HOME/profiles/web/cordis.patch.yml追加:
- insert:
- id: skill-manager-ytxue
name: 'dsh-skill-manager-ytxue'
- 用
dsh --profile web --dump-config确认配置树里出现skill-manager-ytxue。 - 重启 DSH,打开设置 → 「Skill 管理」。
插件元数据写在 package.json 的 main、exports["./client"] 和 dsh 字段里,不需要单独的 plugin.json。host 端零第三方运行时依赖(只用 Node 内置模块和 cordis 注入);client 依赖 React 与 slots、sessions。若启动报 Cannot find package '@deepseek-ai/...',说明插件不在 Node 解析链上,README 建议放到 profiles/web/node_modules/ 或改用 dsh plugin add。
用 dsh plugin add 装过再删掉插件目录,启动可能报 cannot resolve profile bundle "dsh-skill-manager-ytxue"。需要从 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 和 dependencies 里去掉该条目,或运行:
dsh plugin --profile web remove dsh-skill-manager-ytxue
修改插件代码后要完整重启 DSH 才生效;HMR 不会刷新 Node ESM 模块缓存和浏览器启动图。
典型用法¶
下面流程来自仓库 README 的功能说明和作者 2026-08-14 的部署记录,不是第三方评测。
- 安装并重启后,打开 Web UI 的设置,进入侧边栏「Skill 管理」。
- 若技能已经躺在某个下载目录里:点文件夹图标选中该目录,或直接输入路径。面板会判断是单条还是批量。
- 出现重名预检时,按提示选择跳过、覆盖或取消。需要马上给 DSH 用的,目标选启用目录
skills;只想先收着的,选skill-pool。 - 池里的条目用启用操作移到
~/.dsh/skills;暂时不用的再停用回池。启用/停用冲突时会报错,不会覆盖。 - 名字旁是红点的,点「一键检查」。修复写入磁盘,日志在
~/.dsh/skill-manager-ytxue.log(JSONL),检查状态在~/.dsh/skill-manager-ytxue.checked.json。之后内容没变的条目会跳过。 - 换到另一个仓库的会话后刷新面板,项目级列表会跟着当前工作目录走。
作者在 README 里记录的端到端验证包括:设置面板可操作(例如 disable frontend-design 再 enable frontend-design);HTTP 的 import / enable / disable 与冲突保护跑通;对真实根执行 /check 得到 checked: 3, fixed: 0(docx、frontend-design、guizang-ppt-skill);test/core-test.mjs 51 项通过(审计、自动修复、幂等、启停、冲突、导入、BOM、状态驱动)。本地复测可运行:
node test/core-test.mjs
适用场景与注意事项¶
适合已经在用 DSH Web UI、需要把外部技能目录收进 ~/.dsh/skills 或技能池、并按 kebab-case / description / 布尔字段规范做一次修复的人。项目级技能只展示、不检查、不能用这块面板改,系统级和项目级的边界要靠标签自己看清楚。
作者实测环境是 Windows(PowerShell 5.1 + Node 20+),完整验证只在本机做过。macOS / Linux(含虚拟机)请按安装说明操作,问题可到仓库提 Issue。Linux 上若启动报 EADDRINUSE: 127.0.0.1:3080,说明已有 DSH 实例占用端口,需要先停掉旧进程再启动。日志里其他插件的 git / gnutls_handshake failed 属于网络链路问题,和本插件无关。
插件会写入 ~/.dsh/ 下的 skills、skill-pool、skill-manager-ytxue.log 和 skill-manager-ytxue.checked.json,需要保证 DSH 进程对该目录可写。日志和状态文件写入失败会静默降级,不阻塞主流程。enable / disable / import 的目标目录限定在 skills 与 skill-pool 内;覆盖操作只删除目标目录里的同名条目。parseSkillDoc 会剥离 UTF-8 BOM,避免 Windows 工具写成带 BOM 的 SKILL.md 导致 frontmatter 解析失败。
目录页和仓库都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证;需要可复现安装时固定 commit 哈希。本插件是社区开源项目,不是 DeepSeek 官方组件。
小结¶
dsh-skill-manager-ytxue 把技能池、启用目录、重名预检和状态驱动的规范修复收进设置侧边栏,并标出系统级与当前项目级。安装命令、源码和许可证如下:
- 目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-skill-manager-ytxue/
- GitHub:https://github.com/YTxue/dsh-skill-manager-ytxue
- DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness