前言¶
在 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 # 导入时用默认模型起中文名;关掉则只做规则推断
典型用法¶
导入技能¶
- 打开 设置 → Science Skill,在「技能默认目录」里指定目录(只接受绝对路径,留空表示未设置)。
- 点「+ 添加目录」选择要导入的技能文件夹,确认分类。指定了默认目录时,导入一律装到那里;未指定则回落到数据根下的
skills。 - 技能已在目录里但未登记:点「刷新」重新扫描,登记进目录记录,并为从未命名过的技能生成中文名、简介与示例。
技能目录要求¶
- 每个技能是一个子目录,内含
SKILL.md。 SKILL.mdfrontmatter 必须有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