dsh-science-skill:把磁盘上的技能收成 DSH 里的技能墙

前言

在 DeepSeek Harness(DSH)里做科研或复杂工作流时,技能往往分散在多个文件夹里:每个子目录一份 SKILL.md,靠记忆路径或手工复制 /命令 才能调用。内核侧虽有技能注册机制,但缺少一个统一的可浏览、可分类、可按会话控制启用范围的界面。社区插件 dsh-science-skill(维护者 kee0012,分类:工作流)面向这一问题:把散落在磁盘上的技能整理成侧栏里的技能墙,并配合设置面板、分类与开关,以及输入框里的 /command 调用方式。插件托管在 GitHub,当前版本 2.0.5,许可证 MIT;SkillHub 目录页见文末链接。

这是什么

dsh-science-skill 是 DeepSeek Harness 插件,README 明确说明不依赖 Science Agent。装上之后你会得到:技能设置面板、分类标签栏、卡片式技能墙、搜索、卡片内改分类与开关、导入与刷新,以及用 /命令 调用技能的能力。桌面版与 dsh web 均可使用。

核心功能

侧栏与技能墙

侧栏注册「技能」入口,点开在本区展开技能墙:顶部分类标签栏(分类多时会换行),下方按 4 列卡片展示。

每张卡片有三个独立操作:

  • 点卡片正文:打开该技能详情弹窗。
  • 点右上角「召唤」:把该技能的 /命令 引用插入当前会话输入框(不新建会话)。
  • 点右下角带 ▾ 的分类标签:把技能换到其他分类,改完立即重排,设置面板里同一技能同步。

实现上使用官方 sidebar.panellist 一行入口 + main 一个面板。

详情弹窗与「试试这样用」

详情弹窗自上而下:分类图标、中文名、/命令、「去试试」(等同召唤)、一句简介,然后是「试试这样用」——若干中文示例提问;点任意一条会把该句插入当前会话输入框,不覆盖你后续编辑。最下面是「技能详情」:该技能 SKILL.md 原文,等宽、限高、可滚动。

中文名、中文简介、分类与示例由你在 DSH 里的默认对话模型在同一次调用里生成,无需给插件单独配模型;模型未给出示例时降级为空数组,中文名与分类仍保留。

分类、开关与导入

  • 分类可创建、改名、删除、排序、恢复默认,并可按名称推荐图标。
  • 每个技能可单独开关,状态持久化在数据根下。
  • 在设置面板里可:指定技能默认目录、校验目录能否导入、导入技能、刷新重新扫描。
  • 重复导入直接覆盖:被替换的旧文件夹直接删除,不保留备份;面板里改过的中文名、分类与示例留在记录上,SKILL.md 换成新版本。2.0.5 之前版本会留 .<id>.old-<时间戳> 备份;发现旧备份时工具条会出现「清理旧版本(N)」按钮。

与内核技能注册表的关系

插件以提供者身份接入内核技能注册表,把暴露的目录限定为你选定的那一个,因此面板上显示的技能与模型能加载的技能一致。内核没有该注册表时插件仍工作,退化为「仅面板可见」。可选地,若内核提供 skillGate 挂点,面板开关会真正影响模型可见的技能目录;没有挂点时开关只记录状态。

安装与启用

插件未发布到 npm,DSH 支持以 git 依赖从 GitHub 安装。安装后需重启 DSH,服务端代码与 client bundle 才会生效。

# 从 GitHub 安装(推荐,日常使用;拉取默认分支最新提交)
dsh plugin --profile desktop add github:kee0012/dsh-science-skill

兼容性:需要 DSH ^0.2.0-rc.1;零运行时 npm 依赖,离线环境也可安装。Node 引擎要求见 package.json:^22.19.0 || >=24.0.0。

插件配置示例(config 段):

- id: science-skill
  name: dsh-science-skill
  config:
    enabled: true        # false 时不注册任何路由
    dataRoot: ''         # 缺省走 $DSH_HOME
    skillDirs: []        # 追加的技能根(相对路径按 dataRoot 解析)
    naming: true         # 导入时用默认模型起中文名;关掉则只做规则推断

典型用法

导入技能

  1. 打开 设置 → Science Skill,在「技能默认目录」里指定目录(只接受绝对路径,留空表示未设置)。
  2. 点「+ 添加目录」选择要导入的技能文件夹,确认分类。指定了默认目录时,导入一律装到那里;未指定则回落到数据根下的 skills。
  3. 技能已在目录里但未登记:点「刷新」重新扫描,登记进目录记录,并为从未命名过的技能生成中文名、简介与示例。

技能目录要求

  • 每个技能是一个子目录,内含 SKILL.md。
  • SKILL.md frontmatter 必须有 name: 与 description:;name 须为 kebab-case(小写字母、数字、单连字符)。
  • 子目录名不必等于 name;不合规目录名用 frontmatter 的 name 当记录标识,插件不重命名、不移动文件夹。

调用技能

  • 技能墙点「召唤」,或详情弹窗点「去试试」,/命令 插入当前会话输入框,回车发送。
  • 也可在输入框直接输入 / 加技能标识。

数据存放(便于排查)

数据根解析顺序:插件 dataRoot(相对路径按 process.cwd())→ $DSH_HOME → ~/.dsh。常用路径包括 catalog/index.json(面板索引)、catalog/data/<id>.json(单技能元数据)、catalog/categories.json(分类表)、skill-gate.json(全局开关)、skill-import.json(默认目录)。登记只写数据根下的记录,不复制、不修改、不删除技能目录里的文件。

HTTP 接口均挂在 /api/dsh-science-skill 下(列表、详情、刷新、导入、分类、skill-gate 等),需要脚本或二次集成时可对照 README 中的接口表。

适用场景与注意

适合谁:本地或团队维护一批 SKILL.md 技能包,希望在 DSH 里统一浏览、分类、按会话启用,并通过 /命令 快速插入当前对话的开发者或科研用户。

已知限制(README 原文):

  • 技能最终能否被模型加载由 DSH 内核决定;同名技能多来源时按内核优先级取舍,面板上显示的未必是最终生效的一份。
  • 插件只读写数据根,不接管技能发现,也不 patch 内核。

安全与信任:插件以当前 dsh 进程权限运行,会读取你指定的技能目录并在数据根写入 catalog 与开关状态。安装前建议在 GitHub 查看源码与 MIT 许可证,确认路径与导入来源可信。

结尾

dsh-science-skill 把「磁盘上的技能文件夹」收成 DSH 侧栏里可分类、可搜索、可一键召唤的技能墙,并用设置面板完成导入、刷新与开关管理;与内核 skill 注册表、可选 skillGate 配合时,面板所见与模型可用范围可以对齐。

  • SkillHub 目录页:https://www.skillhub.cn/plugins/kee0012/dsh-science-skill
  • GitHub 仓库:https://github.com/kee0012/dsh-science-skill
  • 问题与贡献:https://github.com/kee0012/dsh-science-skill/issues
羽毛球分组比赛记分
小程序二维码

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

Xiaoye