前言¶
在 DeepSeek Harness(DSH)里,技能通常以目录形式存在,目录内带有 SKILL.md。不少开发者会把自用技能放在用户目录 ~/.dsh/skills 下,期望新会话里能直接选用。但在部分 DSH 部署中,这些用户级技能不会出现在会话的技能列表里:skills-manager 对原生 dsh 根有只读策略限制(error.root.readonly),候选构建器在没有策略覆盖时也会跳过原生根下的技能。社区插件 dsh-local-skills(维护者 147-sys,分类:工作流)通过 bundle provider 扫描并注册本地目录,是当前 README 中给出的可用机制。下面介绍它的定位、行为与安装方式。
这是什么¶
dsh-local-skills 把用户级 DSH 技能(默认路径为 DSH_HOME/skills,即常见配置下的 ~/.dsh/skills)注册进会话技能目录。简介与仓库说明一致:Register user-level DSH skills into the session catalog.
实现上零运行时第三方依赖,仅使用 Node 内置模块 node:fs、node:os、node:path。插件以 bundled skill provider 方式接入,版本在仓库 package.json 中为 0.1.0,许可证 MIT。
为什么需要它¶
README 归纳了两条直接原因:
- skills-manager 拒绝对原生
dsh根做逐技能策略(error.root.readonly); - 候选构建器在没有策略覆盖时会跳过原生根的技能。
因此,仅把技能文件放进 ~/.dsh/skills 并不总能保证会话里可见;安装本插件后,由 provider dsh-local-skills 完成扫描与注册。
核心功能¶
经过上面的背景,插件实际做四步(与 README 一致):
- 扫描
$DSH_HOME/skills;若设置了DSH_LOCAL_SKILL_DIRS,则用该变量覆盖扫描路径。 - 识别含
SKILL.md的目录型技能。 - 解析 frontmatter 中的
name与description。 - 以
provider: dsh-local-skills、rank: 400写入技能注册表。
同名技能时,先被扫描到的目录优先;rank: 400 与原生用户根一致,不会压过项目内副本。亮点可概括为:目录即技能(有 SKILL.md 即参与注册)、可配置多目录扫描、零依赖。
配置¶
| 变量 | 作用 |
|---|---|
DSH_HOME |
默认 ~/.dsh;技能目录为其下的 skills |
DSH_LOCAL_SKILL_DIRS |
覆盖扫描目录,; 或 , 分隔多个 |
技能目录结构示例:
~/.dsh/skills/<skill-name>/SKILL.md
SKILL.md 需带 YAML frontmatter,至少包含 name 与 description:
---
name: my-skill
description: 一句话说明这个技能做什么。
---
正文……
安装与启用¶
前置条件:DSH 0.2.1-rc.3 或更新(见 INSTALL.md)。安装方式三选一,命令与路径须按你本机仓库位置替换 <本仓库绝对路径>,不要凭插件名拼接未在文档中出现的安装串。
A. GUI(桌面版推荐)
设置 → 插件 → 安装 → 选本仓库目录 → 重启 DSH。
B. dsh plugin(Web / TUI profile)
dsh plugin --profile <profile> add link:<本仓库绝对路径>
桌面版的 desktop profile 由 Electron 独占管理,上述命令会被拒绝,请用 A 或 C。
C. 手工
在 ~/.dsh/profiles/<profile>/package.json 两处修改:dependencies 增加 "dsh-local-skills": "link:<绝对路径>",dsh.profile.bundles 增加 "dsh-local-skills",然后在 profile 目录执行:
pnpm install --no-frozen-lockfile
完成后重启 DSH。
验证:重启后,将任意技能放入 ~/.dsh/skills/<skill-name>/SKILL.md,新会话中应能看到;日志中会出现类似:
[dsh-local-skills] scanning C:\Users\<you>\.dsh\skills
(Linux 下路径会对应为 $DSH_HOME/skills。)
卸载:
dsh plugin --profile <profile> remove dsh-local-skills
典型用法¶
先做目录与 frontmatter,再依赖插件扫描,流程如下。
- 在
~/.dsh/skills/my-skill/下创建SKILL.md,写好name、description与正文。 - 确认已安装并启用 dsh-local-skills,且已重启 DSH。
- 打开新会话,在技能列表中查找注册后的名称。
若需从多个位置加载技能,设置环境变量后再重启,例如(分隔符为 ; 或 ,):
export DSH_LOCAL_SKILL_DIRS="/path/to/skills-a;/path/to/skills-b"
多目录按顺序扫描,同名技能以先出现的目录为准。
适用场景与注意¶
适合已在 ~/.dsh/skills(或 DSH_LOCAL_SKILL_DIRS 指定路径)维护个人技能、但会话列表里看不到这些条目的 DSH 用户。也适合需要按优先级合并多个本地技能目录、又不想改项目内技能副本的场景。
安装前建议阅读仓库源码与 MIT 许可证;插件随当前 DSH 进程权限运行,只会读取配置的本地目录与 SKILL.md,不涉及 README 以外的第三方网络依赖。若重启后仍无技能,INSTALL.md 建议检查 frontmatter、确认 bundles 已写入且已真正重启,并查看是否出现 [dsh-local-skills] scanning 日志。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。本插件在 GitHub 上星标数为 0(以目录页信息为准),选用时以文档与源码为准即可。
结尾¶
dsh-local-skills 解决的是用户级技能目录与会话技能目录之间的断层:扫描、解析 frontmatter、以固定 rank 注册,配置项少、依赖为零。需要安装步骤与隐私说明时,可继续查看仓库内的 INSTALL.md 与 PRIVACY.md。
- 目录页:https://www.skillhub.cn/plugins/147-sys/dsh-local-skills
- GitHub:https://github.com/147-sys/dsh-local-skills