dsh-skill-manager-ytxue:在 DSH 设置侧栏管理 Skill 池

前言

在 DeepSeek Harness(DSH)里,Skill 是扩展智能体能力的主要载体。实际开发中,Skill 往往散落在下载目录、项目仓库和 ~/.dsh/skills 之间:有的还没按 DSH 规范写好 frontmatter,有的想先放进池里备用,有的需要在系统级与项目级之间切换。纯靠手改文件和记路径,启用、停用和批量导入都容易出错。

下面介绍社区插件 dsh-skill-manager-ytxue(维护者 YTxue,分类:工作流)。它在 DSH Web 界面的设置侧边栏提供「Skill 管理」面板,把列表查看、启用/停用、文件夹批量导入、规范检查与自动修复集中在一处处理。

这是什么

dsh-skill-manager-ytxue 是一个 DSH Web 插件(当前版本 0.6.0,MIT 许可证)。插件在设置侧边栏注册 settings.section 条目(order: 900),面板标题为「Skill 管理」。

它面向两类目录:

  • 启用目录 ~/.dsh/skills/:系统级 Skill,DSH 原生扫描(rank 400),导入后立即生效。
  • 池目录 ~/.dsh/skill-pool/:零挂载存放,之后按需启用。

面板同时展示项目级 Skill(<项目根>/.dsh/skills<项目根>/.agents/skills),只读标识,不参与规范检查。切换 DSH 会话时,面板会按当前工作目录自动过滤,只显示对应项目的项目级条目。

核心功能

状态总览与标识

面板以双列表展示启用目录与池目录中的 Skill。每个条目旁有形态标签:

标签 形态 说明
bundle skills\<name>\SKILL.md 目录型,可附带脚本、模板等资源
flat skills\<name>.md 单文件 Markdown

标签后还会标注系统级项目级来源。每行显示 frontmatter 中的 description;名字旁的圆点表示检查状态——绿点为已检查且内容未变,红点为未检查或内容已变更。

导入 Skill

工具栏支持从本地路径导入,可选手动输入或通过内置目录浏览对话框选择文件夹(从全部盘符起步,支持任意层级)。

导入逻辑会自动识别单条与批量:

  1. 路径指向单个 Skill(含 SKILL.md 的目录或 .md 文件)→ 导入 1 个。
  2. 路径指向包含多个 Skill 的大文件夹 → 逐个导入直接子级,忽略非 Skill 文件。

重名时先 dry-run 预检,弹窗列出冲突条目,可选择跳过重名并导入其余覆盖重名取消。目标可选复制到启用目录(立即生效并自动检查修复)或复制到池目录。导入结果逐条显示成功、跳过或失败标记;目录名会自动规整为 kebab-case。

规范检查与自动修复

「一键检查」采用状态驱动策略:只处理红点条目,绿点自动跳过。检查依据 ~/.dsh/skill-manager-ytxue.checked.json 中 SKILL.md 内容的 sha1 指纹。

不合规项会自动修复并写入日志 ~/.dsh/skill-manager-ytxue.log,包括:

  • 目录名/文件名非 kebab-case → 规整重命名,同步 frontmatter name
  • name 缺失或与目录名不一致 → 以目录名为准修正
  • description 缺失 → 补充占位描述
  • 布尔字段驼峰拼写或非标准值 → 改为 kebab 或修正/删除

启用与停用

在池目录与启用目录之间移动条目,支持 bundle 目录与 flat 单文件两种形态。发生冲突或重复时安全报错,不会静默覆盖。

项目级 Skill 展示

默认只显示当前会话对应项目的项目级 Skill。客户端订阅 sessions 服务,切换会话即同步工作目录;host 向上探测 .git 祖先以确定项目根(与 DSH skill-filesystem 判定一致)。若某项目从未开过会话但仍需展示,可在 $DSH_HOME/settings.yaml 中配置:

skill-manager-ytxue:
  projectRoots:
    - '/path/to/project1'
    - '/path/to/project2'

安装与启用

包名说明:npm 上的 dsh-skill-manager(maintainer: gohana)是无关第三方包。本项目包名为 dsh-skill-manager-ytxue,安装请以 GitHub 仓库为准。

方式 A:git clone + dsh plugin 命令(推荐)

git clone https://github.com/YTxue/dsh-skill-manager-ytxue.git
dsh plugin --profile web add /path/to/dsh-skill-manager-ytxue

随后在 $DSH_HOME/profiles/web/cordis.patch.yml 追加挂载条目,重启 DSH 生效。

方式 B:git clone + 手动挂载

git clone https://github.com/YTxue/dsh-skill-manager-ytxue.git
  1. 将目录放入 $DSH_HOME/profiles/web/node_modules/dsh-skill-manager-ytxue/
  2. $DSH_HOME/profiles/web/cordis.patch.yml 追加:
- insert:
    - id: skill-manager-ytxue
      name: 'dsh-skill-manager-ytxue'
  1. 验证配置树:
dsh --profile web --dump-config

输出中应出现 skill-manager-ytxue 条目。

  1. 重启 DSH,打开设置 → Skill 管理

也可使用远程地址安装(不经过 npm 同名包):

dsh plugin --profile web add git+https://github.com/YTxue/dsh-skill-manager-ytxue

要求 Node.js >= 20。

典型用法

从本机文件夹批量导入

  1. 打开 DSH Web 界面,进入设置 → Skill 管理
  2. 在导入区域点击文件夹图标或手动输入路径,指向包含多个 Skill 的目录。
  3. 若出现重名预检弹窗,按需选择跳过、覆盖或取消。
  4. 选择目标为启用目录或池目录,确认导入。
  5. 点击「一键检查」,处理红点条目的规范问题。

在池与启用目录间切换

在列表中找到目标 Skill,使用启用/停用操作在 skill-poolskills 之间移动。bundle 与 flat 条目均按整体移动。

通过 HTTP API 调用

插件在 loopback 提供同源 API,可供脚本或自动化集成:

方法 路径 说明
GET /api/skill-manager-ytxue/state 双目录状态快照
POST /api/skill-manager-ytxue/check 检查未检查项并修复
POST /api/skill-manager-ytxue/enable body {name}
POST /api/skill-manager-ytxue/disable body {name}
GET /api/skill-manager-ytxue/list-dir 目录浏览,?path= 缺省为主目录
POST /api/skill-manager-ytxue/import body {source, target?, conflict?, dryRun?}

运行单元测试

仓库提供 core 层测试(51 项):

node test/core-test.mjs

适用场景与注意

适合谁

  • 需要在 DSH 中集中管理大量 Skill、频繁在池与启用目录间切换的开发者。
  • 从外部仓库或本地文件夹批量导入 Skill,并希望导入前处理重名冲突。
  • 希望一键按 DSH 规范检查 frontmatter、目录命名和布尔字段,减少手改成本。

注意事项

  • 插件以当前 DSH 进程权限运行,会读写 ~/.dsh/skills/~/.dsh/skill-pool/ 及检查状态文件。安装前应阅读源码并确认 MIT 许可证。
  • 作者实测环境为 Windows(PowerShell 5.1 + Node 20+);macOS / Linux 可按 README 安装,遇问题可在 GitHub 提 Issue。
  • 若曾用 dsh plugin add 安装后删除目录,启动可能报 cannot resolve profile bundle "dsh-skill-manager-ytxue",需运行 dsh plugin --profile web remove dsh-skill-manager-ytxue 或手动清理 package.json 中的 bundles 条目。
  • 面板仅请求本机 /api/skill-manager-ytxue/*,无外部网络请求;host 端为零第三方依赖。

结尾

dsh-skill-manager-ytxue 把 Skill 的列表、导入、启停和规范修复收进 DSH 设置侧栏,用状态驱动的检查减少重复劳动,用重名预检降低批量导入风险。若你正在维护较多 Skill 或需要规整不规范的 frontmatter,可以按上文步骤安装试用。

  • SkillHub 目录页:https://www.skillhub.cn/plugins/YTxue/dsh-skill-manager-ytxue
  • GitHub 仓库:https://github.com/YTxue/dsh-skill-manager-ytxue
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜