DSH Web GUI 技能中枢:基于官方 ctx.skills 注册表浏览、搜索、启停、查看、诊断并新建本地技能,附技能市场:来源快照跟踪、一键全量更新。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-skill-hub
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:cheshireez/dsh-skill-hub
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
面向 DeepSeek Harness 的图形化技能中枢 — 在 Web GUI 里浏览 ctx.skills 全量目录,开关技能、查看正文、修复发现问题、从市场安装、一键新建。
宿主只用官方 SDK,浏览器通过官方槽位渲染,不改 dsh 源码。
快速开始
dsh plugin --profile web add dsh-skill-hub
# 重启 dsh web → 设置 → 技能 → 市场 → 扫描 → 导入
要求 Node ^22.19 || >=24 + dsh web >=0.1.7-alpha.1 <0.3。
两个界面 —— 管理面板在 设置 → 技能;本插件自身的配置卡片在 插件管理页 的插件自有页面上(侧边栏「插件」→ dsh-skill-hub)。该卡片由本插件自己注册进 plugins.bundle.config 槽位(dsh 没有自动生成的配置页),覆盖总开关、向 Agent 公告、圆点颜色、用量显示与统计窗口/间隔。
功能
设置 → 技能 — 3 个 tab:来源(技能,平铺/分组+项目树)、场景(自定义分组)、市场(安装与更新)。
- 浏览 —
ctx.skills注册表全量:项目/用户/内置+第三方。按名称、描述、displayName搜索;按来源、按调用方式(模型/用户)筛选;按名称/添加时间/调用次数排序。不同来源的同名技能挂重名徽标,不再静默隐藏。 - 开关 — 单技能开关 + 整组三态开关,跨组冲突弹窗(全部关闭/保留开启)。禁用只重命名发现文件(不删除);禁用的技能仍可查看正文、可一键重新启用。仅
~/.dsh/skills与~/.agents/skills可写,其余只读。 - 整理 — 场景(tag)+ 自动聚合的来源集合,全部可拖拽排序并持久化到
~/.dsh/dsh-skill-hub.json。编辑模式收敛删除/排序控件,阅读视图保持干净。 - 诊断与修复 — provider 跳过的文件给出原因(缺 frontmatter、YAML 非法、名称不一致、描述过短);可自动修复的(如描述里未加引号的
:)一键 Fix 落盘。 - 新建 — 新技能向导,写入
~/.dsh/skills或~/.agents/skills(SKILL.md模板见下)。 - 市场 — 内置精选仓库 + 自定义
owner/repo。任何含SKILL.md的顶层目录都可扫描(无白名单);SKILL.md直接放在仓库根时,整个仓库算一个技能,技能名取仓库名(.github/等仓库基建不计入)。异步导入,字节级进度+取消。每个源钉一个版本 —— 点 ref 徽标可在发布版/分支/手输之间切换。 - 跟踪更新 — 导入的技能记录 repo+commit 快照。检查全部/一键全更;每源徽章(已装/可更新/上游已删/新版本)。同步覆盖本地修改(先确认);上游删除跟进移入回收站,恢复保留来源与场景归属。
- 统计 — 会话日志的调用次数+最近使用,分组头汇总;窗口与扫描间隔在设置卡片实时可调。
- 设置卡片 — 注册在 插件管理页 的插件自有页面上(侧边栏「插件」→ dsh-skill-hub,默认折叠,点标题展开):总开关、向 Agent 公告、调用圆点颜色、用量显示开关、统计窗口/间隔。
为什么还需要一个管理器?
dsh-skill-manager 只读浏览,dsh-skill-importer / dsh-find-skill 只做导入。本插件负责管理。
| 能力 | 只读浏览器 | dsh-skill-hub |
|---|---|---|
| 目录 | 自扫盘、仅用户根 | ctx.skills 全量+第三方 |
| 开关 | ❌ | ✅ 单技能+整组,从不删除 |
| 诊断 | ❌ | ✅ 原因+一键修复 |
| 市场 | ❌ | ✅ 内置+自定义,版本钉选,一键全更 |
| 来源跟踪 | ❌ | ✅ 检查/同步/回收站可恢复 |
| 统计 | ❌ | ✅ 次数+最近使用 |
SKILL.md 模板:
---
name: my-skill
description: 一句话说明何时使用。
---
# my-skill
正文...
工作原理
GitHub 仓库 ──扫描/导入──▶ ~/.dsh/skills
▲ │
└─检查/同步/删除── ctx.skills ◀─ provider
│ snapshot/get
▼
/api/skill-hub/* ──▶ 面板(设置 → 技能)
宿主仅用 ctx.skills.snapshot/get、ctx.webServer.register、ctx.systemPrompt.section。路由仅回环(127.0.0.1/localhost),JSON。
HTTP API
| 端点 | 方法 | 用途 |
|---|---|---|
/api/skill-hub/catalog?cwd= |
GET | 技能+禁用+诊断+重名 |
/api/skill-hub/skill?name=&cwd= |
GET | 技能正文(禁用的也可) |
/api/skill-hub/skill/delete |
POST | 移入回收站(快照来源+场景) |
/api/skill-hub/toggle |
POST | {name, enabled} |
/api/skill-hub/toggle-batch |
POST | {names, enabled} |
/api/skill-hub/create |
POST | {name, description?, root?} |
/api/skill-hub/diagnostic/fix |
POST | {path} 自动修 frontmatter |
/api/skill-hub/stats |
GET | 调用次数 |
/api/skill-hub/config |
GET/POST | 运行时配置(null 清除) |
/api/skill-hub/groups |
GET | tags+集合+排序 |
/api/skill-hub/tag 等 |
POST | 新建/重命名、删除、设成员、排序 |
/api/skill-hub/market 等 |
GET/POST | 市场源 列表/添加/删除/钉 ref;…/source/check + …/source/sync 检查与同步 |
/api/skill-hub/market/source/versions?repo= |
GET | 版本选择器的 releases+branches |
/api/skill-hub/repo?repo= |
GET | 发现(任意根) |
/api/skill-hub/repo/import |
POST | 异步任务 {jobId, total, totalBytes} |
/api/skill-hub/repo/import/progress?jobId= |
GET | 轮询进度 |
/api/skill-hub/repo/import/cancel |
POST | 取消任务 |
/api/skill-hub/sources 等 |
GET/POST | 来源 列表/检查/同步/删除/恢复/清空回收站 |
/api/skill-hub/update |
GET | 插件最新发布 |
未知的 /api/skill-hub/* |
GET/POST | 404 {error} 且写明路径 —— 拼错路径不该被读成鉴权失败(宿主 SPA fallback 对自己不拥有的 /api/* 一律回 401) |
开发
npm run typecheck # tsc --noEmit
npm test # 254 tests, 14 suites
npm run build # tsc + tsdown → lib/index.js + lib/client.js
同一
$DSH_HOME+ cwd 下勿开两个dsh web— 无会话日志锁,会seq gap损坏。换DSH_HOME或先关旧实例。
故障排查
duplicate loader entry id: skill-hub— 删掉重复安装(只留一种dsh plugin add)。- 技能不出现 — 看诊断区(缺 frontmatter / 名称不一致 / 描述过短)。
- 来源组空壳 — 组内技能已被删除、或禁用记录丢失(状态文件被恢复/手改)。启动时自动对账磁盘上的
.disabled文件补记录;无可见成员的来源组不再渲染。 /菜单圆点消失 — dsh 内部触发源变更,目录功能不受影响。- 找不到配置卡片 — 在插件管理页打开本插件(侧边栏「插件」→ dsh-skill-hub),展开页面顶部的「技能中枢」卡片(默认折叠)。dsh 低于
0.1.7-alpha.1时本插件无法加载(它所用的 settings API 在旧版不存在)。
社区
Issues · 讨论区 · 官方展示 · 市场收录 PR · Discord
License
MIT — LICENSE.
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-skill-explorer★ 8262
技能中心:按来源分级浏览已加载的全部 skill,启用/禁用模型调用、创建新技能、删除进可恢复回收站。
GanyuanRan/Aegis★ 1312
面向编码 Agent 的软件工程方法包,提供基线优先规划、系统化调试、提示词卫生、完成前验证,以及修复/退役双轨跟踪技能。
superdesigndev/superdesign-skill★ 620
在 Superdesign 画布上做 UI 与营销图的设计技能:先读代码库拿上下文、抽取现有设计系统,再通过 Superdesign CLI 生成并迭代可分支的设计稿、流程页与可复用组件。
linhay/harmony-next.skills★ 357
为 DeepSeek Harness 提供 HarmonyOS NEXT 技能包、离线 API 参考及 DevEco、HDC 与模拟器自动化指南。
sandbaseai/sandbase-skills★ 202
通过文件系统 Skill provider 将 88 个研究、社交情报、营销与商业 Agent Skills 挂载到 dsh。
VDERR/dsh-echocat-skill-panel★ 196
每轮对话报告本轮调用了哪些 skill(模型自动加载、用户输入 /name,或一个都没用),并管理本机 skill 目录:粘贴仓库、文件夹、SKILL.md 或 zip 地址即可安装,中文显示名写入该 skill 的 meta.yaml,删除时保留备份。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。