dsh-local-skills: Register ~/.dsh/skills into the session skills directory

前言

在 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 一致):

  1. 扫描 $DSH_HOME/skills;若设置了 DSH_LOCAL_SKILL_DIRS,则用该变量覆盖扫描路径。
  2. 识别含 SKILL.md 的目录型技能。
  3. 解析 frontmatter 中的 name 与 description。
  4. 以 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,再依赖插件扫描,流程如下。

  1. 在 ~/.dsh/skills/my-skill/ 下创建 SKILL.md,写好 name、description 与正文。
  2. 确认已安装并启用 dsh-local-skills,且已重启 DSH。
  3. 打开新会话,在技能列表中查找注册后的名称。

若需从多个位置加载技能,设置环境变量后再重启,例如(分隔符为 ; 或 ,):

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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye