dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
科研技能中心 for DeepSeek Harness:技能目录、分类、按会话启用门控,以及用户可调用的 /command 技能栏。
科研技能中心:把散落在磁盘上的技能,变成 DSH 里一面可浏览、可分类、可一键调用的技能墙。
这是一个 DeepSeek Harness 插件,不依赖 Science Agent。装上之后你会得到:技能设置面板、分类标签栏、卡片式技能墙、搜索、卡片内直接改分类、开关、导入与刷新,以及用 /命令 调用技能的能力。
左侧栏入口与技能墙
/命令 引用插入当前会话的输入框(不新建会话);点右下角带 ▾ 的分类标签**能直接把技能换到别的分类,改完立即重排,设置面板里的同一个技能同步。sidebar.panellist 一行入口 + main 一个面板实现。技能详情与「试试这样用」
/命令、「去试试」(等同召唤)、一句简介,然后是**「试试这样用」**——几条中文示例提问,点任意一条就把这句话插入当前会话的输入框,不会覆盖你后续的编辑。SKILL.md 的原文,等宽、限高、可滚动。分类管理与开关
导入与刷新
SKILL.md 换成新的。.<id>.old-<时间戳> 备份。旧备份一旦被发现,工具条上会出现**「清理旧版本(N)」**按钮;点一下就把这些残留删除。重新导入同一个技能时,它自己的旧备份也会顺带清掉。dsh web 都可用。插件托管在 GitHub(kee0012/dsh-science-skill,未发布到 npm),DSH 支持以 git 依赖方式直接安装:
# 从 GitHub 安装(推荐,日常使用;拉取默认分支最新提交)
dsh plugin --profile desktop add github:kee0012/dsh-science-skill
安装后需要重启 DSH,新的服务端代码与 client bundle 才会生效。
导入技能
skills。技能目录要求
SKILL.md。SKILL.md 的 frontmatter 必须有 name: 与 description:;name 要能当 kebab-case 标识用(小写字母、数字、单连字符)。name——不合规的目录名用 frontmatter 的 name 当记录标识,插件不重命名、不移动你的文件夹。调用技能
/命令 引用就会被插入当前会话的输入框,回车发送即可。/ 加技能标识调用。技能根如何解析
skillDirs 配置追加额外的根。<dataRoot>/skills,以及 $DSH_AGENTS_HOME(缺省 ~/.agents)下的 skills。登记规则
/命令 另按 frontmatter 的 name 走)。name 当记录标识,并记住真实文件夹名。name 时,先扫到的收录,后一个跳过并说明「技能标识已被占用」。SKILL.md 里也没有合规 name 的文件夹会被跳过并给出原因。不动你的文件
数据放在哪里
数据根按顺序解析:插件配置的 dataRoot(相对路径按 process.cwd() 解析)→ $DSH_HOME → ~/.dsh。数据根下会用到:
| 路径 | 作用 |
|---|---|
catalog/data/<id>.json | 每个技能一条元数据(中文名、简介、分类、命令、示例提问) |
catalog/index.json | 聚合索引,面板读它 |
catalog/categories.json | 分类表,数组顺序就是面板顺序 |
catalog/schema.json | 记录结构校验;缺失时从插件自带 schema 播种一次 |
skill-gate.json | 全局技能开关({"pinned": {"<name>": true}}) |
skill-import.json | 技能默认目录({"defaultSkillDir": "<绝对路径>"},空串=未设置) |
- id: science-skill
name: dsh-science-skill
config:
enabled: true # false 时不注册任何路由
dataRoot: '' # 缺省走 $DSH_HOME
skillDirs: [] # 追加的技能根(相对路径按 dataRoot 解析)
naming: true # 导入技能时用默认模型起中文名;关掉则只做规则推断
全部挂在 /api/dsh-science-skill 下。读接口返回 JSON,写接口收 JSON body。
| 方法 | 路径 | 作用 |
|---|---|---|
| GET | /skills | 技能列表(含中文名、简介、分类、/命令、示例提问) |
| GET | /skills/detail?id= | 单个技能的展示字段 + 示例 + SKILL.md 原文(上限 20000 字符,超出带 truncated;id 非法 400、不存在 404) |
| POST | /skills/refresh | 重新扫描:登记新技能、重建索引,并为「从未命名或没有示例」的技能启动回填(3 条并发) |
| GET | /import-settings | 技能默认目录(未设置时为空串) |
| POST | /import-settings | 设/清技能默认目录:{defaultSkillDir}(只接受绝对路径或空串) |
| GET | /skills/validate?path= | 校验一个技能目录能不能导入 |
| POST | /skills/import | 导入技能目录:{path, overwrite?, category?};不带 overwrite 时同名技能返回 400 already exists,应答含 overwritten 与「已覆盖更新」文案 |
| POST | /skills/update | 改展示信息与分类:{id, displayName?, displaySummary?, category?} |
| POST | /skills/delete | 删除技能(internal 共享包拒绝删除) |
| GET | /categories | 分类表 |
| GET | /categories/suggest?label= | 按名称推荐图标 |
| POST | /categories/create|rename|delete|reorder|restore | 分类增删改序与恢复默认 |
| GET | /catalog | 聚合索引原文 |
| GET | /skill-gate/state?sessionId= | 该会话的激活集合与全局开关 |
| POST | /skill-gate/pin | 改全局开关:{name, enabled} |
| POST | /skill-gate/session | 推某会话的激活集合:{sessionId, names[]} |
^0.2.0-rc.1:宿主半边只依赖 ctx.webServer,客户端半边使用官方插槽与 slots / sessions / conversation / remote / locale / inputTriggers 服务。skillGate 挂点时,面板里的开关会真正影响模型可见的技能目录;没有该挂点时插件照常工作,开关只记录状态。问题、建议与 Pull Request 都欢迎:Issues。
MIT