镜像自 github.com/Chieko3020/dsh-skills-manager
- JavaScript 100%
| client | ||
| lib | ||
| scripts | ||
| skills | ||
| src/client | ||
| .gitignore | ||
| build-client.mjs | ||
| cordis.patch.yml | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
dsh-skills-manager
DSH 技能管理器插件。统一管理技能加载、运行时开关和设置页 UI。
技术栈
| 层面 | 选型 |
|---|---|
| 插件框架 | Cordis 4 |
| 前端 | React(内联样式,无 CSS 管线) |
| 构建 | esbuild(client bundle) |
功能
- 技能统一加载:插件源目录下的
skills/<包>/<技能>/SKILL.md结构,自动发现 - 包级 / 技能级开关:
~/.dsh/skills-manager.json持久化状态,重启保持 - 热更新:改状态后调用
control.invalidate(),当前会话生效,无需重启 - 斜杠命令:
/skill-list/skill-on/skill-off - 设置页 UI:注册 settings.section 槽,浏览器端管理
- HTTP API:
/skills-manager/api/{state,set,uninstall,migrate}
目录结构
lib/index.js 插件主体(provider + 命令 + 路由)
src/client/index.jsx 前端源码(React,无 JSX 编译链)
client/client.js 构建产物(esbuild 输出,__ModuleLoader__ 格式)
scripts/migrate.js 一次性迁移脚本(6 个技能源 → 统一根目录)
build-client.mjs client bundle 构建 + 包装脚本
skills/ .gitkeep 占位(运行数据不纳入本仓库)
部署关系
| 位置 | 角色 |
|---|---|
~/Dev/dsh-skills-manager/ |
本仓库:源码管理(skills/ 为运行数据,不纳入 git) |
~/Deploy/.../patches/dsh-skills-manager/ |
运行位:profile file: 依赖,lib/index.js 以绝对路径指向其 skills/,systemd dsh 读取 |
~/.dsh/skills-manager.json |
开关状态(包级 / 技能级 enabled),重启保持 |
同步
rsync -a --exclude node_modules ~/Dev/dsh-skills-manager/ \
~/Deploy/DeepSeek-Harness/patches/dsh-skills-manager/
文件变更后 watcher 自动生效,无需重启 dsh。
注意
lib/index.js硬编码SKILLS_ROOT指向运行位 skills/。从本仓库直接跑会读写运行位技能;设环境变量DSH_SKILLS_ROOT可覆盖。- 同名技能冲突时,优先级按 层 > rank:
[global, ...scopeChain]后写覆盖;层内 rank 升序先到先得。管理器走 custom(300)。原生~/.agents/skills(user-agents 500) 在 scope-chain 层,在场会压过管理器——迁移后须保持原生目录清空。