wingsky-1
dsh-skill-explorer
DSH skill center plugin: browse loaded skills by source, enable/disable, create and delete
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-skill-explorer(技能中心)
DSH Web GUI 的技能中心:侧边栏「技能中心」入口,两个 tab:
| Tab | 功能 |
|---|---|
| 技能 | 展示已加载的全部 skill,按来源分级(系统内置 / 项目 / 用户 / 自定义 / 运行时),支持启用/禁用(改写 disable-model-invocation)、删除(移入 .trash) |
| 创建 | 表单创建新 skill(用户级 ~/.dsh/skills 或项目级 .dsh/skills),生成标准 SKILL.md |
零构建:host 端与浏览器端都是手写 ESM,无 React、无打包工具、零运行时依赖。
数据来源与分级
host 端按 dsh-skill-filesystem 的官方根约定扫描文件系统(主数据),再用 ctx.skills 注册表补充(同名合并、bundled/runtime 等非文件系统来源并入):
| 级别(展示顺序) | 来源 | 含义 |
|---|---|---|
| 系统内置 | 注册表 bundled | DSH 随附与插件提供的技能 |
| 项目技能(.dsh/skills) | 文件系统 | 仅当前项目(最近 .git 祖先) |
| 项目技能(.agents/skills) | 文件系统 | 仅当前项目 |
| 自定义目录 | 文件系统(customSkillDirs) | 配置的额外根 |
| 用户技能(~/.dsh/skills) | 文件系统 | 本机所有项目 |
| 用户技能(~/.agents/skills) | 文件系统 | 本机所有项目 |
| 运行时注册 | 注册表 runtime | 插件代码内嵌注册 |
为什么自己扫描文件系统?web profile 下
skill-filesystem提供方只挂载在 agent preset 的 scope 层,host 平面(本路由)从ctx.skills读不到项目/用户技能——所以文件系统扫描是主数据,注册表只作补充。frontmatter 用零依赖的轻量解析(支持|/>块标量折叠)。
安全
- 删除只移入
.trash(可手动恢复) - 所有
/api/dsh-skill-explorer/*路由仅限 loopback 访问(同源校验,与 dsh-ssh 相同围栏)
路由(全部 loopback 围栏)
| 路由 | 方法 | 说明 |
|---|---|---|
/api/dsh-skill-explorer/list?cwd= | GET | 分级技能列表 |
/api/dsh-skill-explorer/set-enabled | POST | 启用/禁用(改写 frontmatter) |
/api/dsh-skill-explorer/create | POST | 创建技能(user/project 根) |
/api/dsh-skill-explorer/delete | POST | 删除(移入 .trash) |
安装
# 方式一:npm 发布物(推荐)
dsh plugin --profile web add dsh-skill-explorer
# 方式二:GitHub 源码
git clone https://github.com/wingsky-1/dsh-skill-explorer.git
dsh plugin --profile web add link:<仓库路径>
# 重启一次 dsh web 生效
验证
node --check lib/index.js lib/client.js
node test/smoke.mjs
- 重启后侧边栏出现「技能中心」入口。
- 「技能」tab 分级展示;「创建」tab 新建即生效。
curl "http://127.0.0.1:3080/api/dsh-skill-explorer/list"返回 JSON。
已知限制
- 项目级技能基准:项目根取活跃会话的 workspace(可多个);请求可带
?cwd=显式覆盖。 - 面板样式适配亮/暗主题(皮肤变量 + 浅色回退)。