dsh-skills-manager
Đã xác minh@xqitw/dsh-skills-manager · v0.1.4 · MIT · Giao diện web
dshweb 设置页 Skills 管理器:浏览、搜索、创建、编辑、删除 skills,切换模型可见性,ZIP 上传安装。纯 Node 实现,无 python/unzip 依赖。
Cài đặt
dsh plugin add @xqitw/dsh-skills-manager Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.
Mã nguồn
Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.
Thẻ
Tác giả
Readme
DSH-Skills-Manager
项目地址:https://cnb.cool/xqitw/dsh-skills-manager
dsh(deepseek-harness)Web 设置页 Skills 管理器:浏览、搜索、创建、编辑、删除 skills,切换模型可见性,ZIP 上传安装。
纯 Node 实现(node:zlib 手写 ZIP 解析),无 python / unzip 等外部依赖。
功能
- 浏览:全局 + 项目级 + 自定义目录 skills 合并列表,来源分组、实时搜索
- 查看 / 编辑:打开任意 skill 查看完整 SKILL.md,可编辑并保存
- 新建:
~/.agents/skills/<name>/SKILL.md标准模板 - 删除:整目录删除(二次确认弹窗)
- 切换模型可见性:翻转 frontmatter 的
disable-model-invocation - ZIP 上传安装:选 zip → base64 → host 纯 Node 解压(防路径穿越)→ 按 frontmatter name 安装
- 工作区联动:自动跟随当前活跃会话工作区,项目级 skills 随工作区切换刷新
安装
作为 dsh profile bundle 使用,推荐用 dsh 官方命令:
dsh plugin --profile web add @xqitw/dsh-skills-manager
该命令会在 profile 目录执行 pnpm add,检测到包的 dsh.bundle 声明后
自动将其加入 dsh.profile.bundles,重启 dsh 后设置页出现「Skills」页签。
等价的手动方式:
cd ~/.dsh/profiles/web
pnpm add @xqitw/dsh-skills-manager
然后确认 package.json 的 dsh.profile.bundles 包含
"@xqitw/dsh-skills-manager",重启 dsh 生效。
配置
插件支持通过 profile 的 cordis.patch.yml 覆盖配置:
- id: skills-manager
name: '@xqitw/dsh-skills-manager'
config:
# 用户级 skills 根目录(默认 ~/.agents/skills)
skillsRoot: '~/my-skills'
# 自定义扫描目录(source 归为 "custom",界面显示为「自定义目录」分组)
customSkillDirs:
- /path/to/custom/skills
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
skillsRoot |
string |
~/.agents/skills |
用户级 skills 根目录,支持 ~ 前缀 |
customSkillDirs |
string[] |
[] |
额外扫描的自定义目录,界面归为「自定义目录」分组 |
扫描目录优先级
| 优先级 | 目录 | source |
|---|---|---|
| 1 | <cwd>/.dsh/skills(当前工作区) |
project-dsh |
| 2 | <cwd>/.agents/skills(当前工作区) |
project-agents |
| 3 | customSkillDirs 配置目录 |
custom |
| 4 | skillsRoot(默认 ~/.agents/skills) |
user-agents |
| 5 | ~/.dsh/skills |
user-dsh |
同名 skill 按优先级去重,优先显示高优先级来源。
权限说明
插件写 ~/.agents/skills(工作区之外),运行需要 danger-full-access 权限策略。
仓库结构
├── src/index.ts # host 端:SkillsManagerService + 纯 Node ZIP 解压
├── lib/client.js # client bundle:设置页 UI(__ModuleLoader__ 模块形态)
├── lib/index.js # host 端构建产物(tsc 生成)
├── cordis.patch.yml # profile 补丁层
├── .cnb.yml # CI 流水线:PR 构建验证,tag_push 发布 npm + Release
├── tsconfig.json # TypeScript 构建配置
└── docs/ # 项目文档
构建与发布
host 端用 TypeScript + 标准 TC39 装饰器(@Remote),依赖均为 npm 已发布版本:
npm install --legacy-peer-deps # --legacy-peer-deps 解决 dsh 生态 peer 互引
npm run build # tsc → lib/index.js
发布由 CI 自动完成:打 tag 触发 tag_push 流水线,并行执行 npm 发布与 Git Release 生成:
git tag v0.1.3 && git push origin v0.1.3
npm 密钥来自 xqitw/api-key 仓库的 env-npm.yml(NPM_API_KEY)。
常见问题
Q:为什么我的项目级 skills 不显示? A:项目级 skills 跟随「当前活跃会话工作区」。请先在 dsh Web 中打开目标工作区(或新建会话),页面顶部会显示当前工作区路径,项目级分组随之刷新。
Q:「自定义目录」分组为空?
A:该分组只有配置了 customSkillDirs 才会出现内容,且需要重启 dsh 生效。
Q:页面空白 / 菜单不出现? A:确认安装版本 ≥ 0.1.3(早期版本存在渲染问题)。升级后强制刷新浏览器(Ctrl+Shift+R)。
贡献指南
欢迎参与贡献!详细的贡献规范、开发流程与提交规范请参考 CONTRIBUTING.md。
发现安全漏洞请按 SECURITY.md 的流程私下报告,请勿通过公开 Issue 提交。
许可证
基于 MIT License 开源。