zfdx123/dsh-atelier--packages-dsh-skills-manager ↗★ 0
@zfdx123/dsh-skills-manager
DSH 技能管理器:诊断、新建、编辑、开关、搬运磁盘上的技能(SKILL.md),补上官方 provider 静默跳过坏文件的那半边,并给模型一个 skill_manager 工具 适合需要调试、管理本地SKILL.md技能文件的DSH用户。
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zfdx123/dsh-atelier#8a3566cc5762e3e6d26b23c75c6ee3c4a336304f&path:packages/dsh-skills-managerドキュメント
README 全文を読む ↗配置
设置命名空间 skill-manager(由宿主持久化),全部有默认值,不配也能用:
| 字段 | 默认 | 含义 |
|---|---|---|
customSkillDirs | [] | 额外的技能根目录(对应官方 provider 的 customSkillDirs,rank 300)——只扫一层 |
deepSkillDirs | [] | 递归扫描的技能根(rank 300):向下最多 3 层找 SKILL.md,用于仓库式技能库 |
bundledSkillDir | '' | 捆绑技能根(rank 600,只读) |
projects | [] | 除了进程 cwd 之外还要管理的项目目录 |
inventory | true | 是否把管理的技能登记给 DSH(关掉则只在面板可见,模型加载不到) |
前两项就是设置页「自定义技能文件夹」卡片管理的两个列表(含每个文件夹的「一层 / 递归」开关);后三项没有图形入口,写在设置里即可,inventory 改完立即生效。
根目录解析规则与官方完全一致(rank 越小越优先):
| rank | source | 路径 |
|---|---|---|
| 100 | project-dsh | ` |
| /.dsh/skills` | ||
| 200 | project-agents | ` |
| /.agents/skills` | ||
| 300 | custom | 配置的 customSkillDirs / deepSkillDirs |
| 400 | user-dsh | /skills(跳过 .system) |
| 500 | user-agents | /skills |
| 600 | bundled | 配置的 bundledSkillDir(只读) |
projectRoot = 最近的含 .git 的祖先目录;没有就退回 cwd。bundledSkillDir 为空串时不会有第 6 个根。
模型工具 skill_manager
工具用 @deepseek-ai/dsh-tools 的 defineTool 定义(该包 DSH 自带,本包声明为 optional peer):下面这张表就是参数 schema 本身,同一份声明既编译成给模型看的 JSON Schema,也在 execute 之前做参数校验——类型或枚举不符的调用会在进入业务代码前被拒(未知 action 由校验层抛错,而不是靠 execute 里的兜底分支),声明与校验不会各写一份。
| action | 必填 | 说明 |
|---|---|---|
list | — | 列出全部技能 + 诊断;status 可过滤 ok / warning / broken |
roots | — | 列出根目录、rank、是否可写、各有多少技能 |
read | path | 读一条技能的完整内容与诊断 |
create | name, description | 新建;可选 rootPath / kind / whenToUse / body / modelInvocable / userInvocable |
update | path | 改 description / whenToUse / body |
toggle | path, modelInvocable 或 userInvocable | 开关入口 |
rename | path, newName | 改名 + 同步 frontmatter |
move | path, targetRoot | 换根目录 |
copy | path, targetRoot | 复制(可给 newName) |
delete | path | 移入回收站 |
lint | — | 只列有问题的技能 |
dirs | — | 列出自定义技能文件夹(含「一层/递归」与技能数) |
addDir | path | 添加自定义技能文件夹;create: true 时目录不存在则创建;deep: true 递归扫描 |
removeDir | path | 从管理器移除(不改动磁盘文件) |
setDirDeep | path, deep | 就地切换某个已添加目录的扫描方式 |