DSH 插件化架构允许用户通过 Web UI 扩展功能,技能通常存储在 ~/.dsh/skills 目录中。手动从 GitHub 查找并下载技能 tarball 到安装目录较为繁琐。dsh-skill-market 插件在 DSH 的 Web 设置页中集成了一个“技能市场”,提供搜索和一键安装能力。
插件介绍¶
该插件由用户 QQ-M 维护,旨在简化技能的获取流程。它将技能市场集成到 Web UI 的设置页面中,允许用户在浏览器中直接搜索 GitHub 仓库,并根据仓库结构一键安装技能到模型可读取的根目录。
核心功能¶
- GitHub 搜索:优先搜索带有
dsh-skill主题的仓库,同时支持通过关键词进行搜索。 - 仓库布局检查:自动识别仓库结构。如果根目录存在
SKILL.md,则视为单个技能;如果存在skills/<name>/SKILL.md或skills/<name>.md,则识别为多个技能。 - 一键安装:通过调用 GitHub 的 codeload 接口下载 tarball,解压后将技能文件复制到配置的安装目录(默认为
~/.dsh/skills)。 - 技能管理:提供已安装技能列表,支持卸载操作。卸载时,技能文件会被移动到
.trash-*目录,便于恢复。 - 安全防护:对写操作(安装/卸载)实施同源 POST 保护。
安装与启用¶
使用官方插件命令安装:
dsh plugin --profile web add "github:QQ-M/dsh-skill-market"
安装完成后,需要重启 Web 配置文件(dsh web),插件才会加载浏览器端的设置入口。
配置说明¶
插件支持通过 cordis.patch.yml 进行配置。默认配置如下:
| 配置项 | 默认值 | 说明 |
|---|---|---|
installDir |
~/.dsh/skills |
技能的安装目录 |
githubToken |
'' |
GitHub Token 字符串 |
githubTokenFile |
'' |
包含 GitHub Token 的文件路径 |
searchLimit |
20 |
搜索结果最大数量 |
如果未设置 Token,插件会读取环境变量 GITHUB_TOKEN。匿名搜索受限于约 10 请求/分钟,建议为高频搜索配置 Token。
API 接口¶
所有接口均挂载在 /skill-market/api/ 路径下,返回 JSON 格式数据:
GET /api/search?q=<query>:搜索技能GET /api/repo?owner=&repo=:检查仓库详情POST /api/install { owner, repo, ref? }:安装技能GET /api/installed:查看已安装技能列表POST /api/uninstall { name }:卸载技能
技术架构¶
该插件由两部分组成:
- Host Half (
index.js):运行在服务端,提供/skill-market/api/*路由,负责 GitHub 交互、文件下载、解压与安装逻辑。 - Client Half (
client.js):运行在浏览器端,是一个无构建步骤的__ModuleLoader__bundle,负责向 DSH 的设置页面注入“技能市场”标签页。
依赖方面,Host 仅依赖 Node.js 内置模块及 @deepseek-ai/schemastery;Client 依赖 react。
注意事项¶
- 权限与安全:插件以当前 DSH 进程的权限运行,安装前请检查源代码与许可证。
- 社区生态:该插件属于社区目录项目,与 DeepSeek 或幻方无官方从属关系。