Skip to content
dsh.fish
Bundle

@xusuyang030218/dsh-skill-ui

DSH skill center: browse loaded skills by source, skillhub market browse/install with category & sort, guided create wizard and AI drafting, in a web GUI panel. 技能中心:本地技能管理 + skillhub 技能市场 + 向导创建 + AI 辅助。

Source
xusuyang030218
License
BSD-3-Clause
Updated
Updated 2 days ago

Readme

# dsh-skill-ui

DSH(DeepSeek Harness)技能中心插件:浏览/管理本地技能 + 对接 **skillhub.cn** 技能市场 + 向导式创建 + AI 辅助生成。

基于 [zhu1090093659/dsh-web](https://github.com/zhu1090093659/dsh-web) 的 `packages/dsh-skill-explorer`(BSD-3-Clause)二次开发。

## 功能

- **技能 tab**:按来源分组浏览已加载 skill(系统内置 / 项目 / 用户 / 自定义 / 运行时),卡片式展示,支持启用/禁用(改写 frontmatter `disable-model-invocation`)、删除(移入 `.trash` 可恢复)。
- **市场 tab**:对接 skillhub.cn 技能市场——
  - 搜索 + **分类页签**浏览(13 个分类,横向可滚动);
  - **排序**:推荐 / 星数 / 下载量 / 最新(服务端忽略 sort 参数,客户端本地排序);
  - 卡片展示:图标、星数、下载量、作者、分类、来源、付费标记、已安装状态;
  - 一键安装到 `~/.agents/skills`,含安全审计(zip-slip 防护、扩展名白名单、危险模式扫描、SKILL.md frontmatter 自动修复),冲突时可跳过 / 覆盖 / 另存。
- **创建 tab**:3 步向导(基本信息 → 7 套内置模板 → 预览校验),实时 kebab-case 校验与重名检测;**AI 辅助生成** SKILL.md 草稿。

## 安装(本地构建)

```sh
pnpm install
pnpm run build
# 产物在 lib/
```

部署到 DSH Desktop profile:

```powershell
# 1. 替换插件 lib(先备份原 lib)
$target = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\@xusuyang030218\dsh-skill-ui"
Copy-Item lib\index.js "$target\lib\index.js" -Force
Copy-Item lib\client.js "$target\lib\client.js" -Force
Copy-Item lib\client.js.map "$target\lib\client.js.map" -Force

# 2. 重启 DSH Desktop(运行中的进程持有旧模块,必须重启加载)
```

> 注意:修改 `node_modules` 下插件 `package.json` 时,写入必须使用**无 BOM 的 UTF-8**(Windows PowerShell 5.1 的 `Set-Content -Encoding UTF8` 会写 BOM,导致 DSH `JSON.parse` 失败)。

## AI 辅助生成配置

草稿路由会从 `~/.dsh/settings.yaml` 的 `llm-pi-ai.providers` 自动选择可用的 OpenAI 兼容 provider(`api: openai-completions` 且 `apiKeyEnv` 环境变量已设置),也可用环境变量覆盖:

```
DSH_AI_DRAFT_BASE_URL=https://.../v1
DSH_AI_DRAFT_API_KEY=sk-...
DSH_AI_DRAFT_MODEL=some-model
```

未配置时面板会禁用 AI 按钮并提示(接口返回 `503 AI_UNAVAILABLE`)。

## 路由

| 路由 | 方法 | 说明 |
| --- | --- | --- |
| `/api/dsh-skill-explorer/list` | GET | 分组技能列表 |
| `/api/dsh-skill-explorer/set-enabled` | POST | 启用/禁用 |
| `/api/dsh-skill-explorer/create` | POST | 创建(user/agents/project 根) |
| `/api/dsh-skill-explorer/delete` | POST | 删除(移入 .trash) |
| `/api/dsh-skill-explorer/health` | GET | 健康检查 |
| `/api/dsh-skill-explorer/hub/search` | GET | skillhub 搜索(q/category/limit) |
| `/api/dsh-skill-explorer/hub/categories` | GET | 分类列表 |
| `/api/dsh-skill-explorer/hub/detail` | GET | 技能详情 |
| `/api/dsh-skill-explorer/hub/install` | POST | 安装(下载+审计+落盘) |
| `/api/dsh-skill-explorer/ai-draft` | POST | AI 生成草稿 |

所有路由默认 loopback 围栏(已配对 remote-web-ui 设备 cookie 为额外放行)。

## 安全

- 市场代理仅允许 `https://api.skillhub.cn` 单一主机(SSRF 防护)。
- zip 安装前审计:zip-slip 拒绝、扩展名白名单、危险模式(eval/child_process/os.system/混淆 base64 等)扫描、SKILL.md 越狱指令扫描。
- 安装目标固定 `~/.agents/skills/{slug}`,slug 白名单校验,冲突默认拒绝。
- AI 草稿仅作为文本回填,不自动落盘。

## 测试

```sh
pnpm test   # 90 项(含 zip 解压/审计/frontmatter 修复)
pnpm run typecheck
```

## License

BSD-3-Clause(上游 dsh-skill-explorer 同款)。

Install

dsh plugin --profile web add github:xusuyang030218/dsh-skill-ui

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source