dsh-skill-center:侧栏技能中心与运行时注册

前言

在 DeepSeek Harness(DSH)里用技能,常见两种形态:单文件 .md 放在 ~/.dsh/skills,或 WorkBuddy 风格的目录加 SKILL.md。技能一多,只能靠翻文件夹才知道有哪些、开没开;更麻烦的是,当 profile 里没有激活 @deepseek-ai/dsh-skill-filesystem 时,skill 工具往往列不出这些文件型技能——文件在磁盘上,会话却调不到。

dsh-skill-center(维护者 mwk719)是 DSH 客户端插件:在侧栏增加「技能中心」入口,把可配置来源目录里的技能铺成卡片,可查看完整 SKILL.md,并用开关把技能注册进或移出模型可用的技能表。零依赖、免构建、无遥测、不采集数据。

这是什么

插件在 DSH Web GUI 中提供中栏技能浏览器:顶部按来源目录分页,技能以卡片分块展示;卡片上可启用/停用,通过菜单打开文件夹,点击卡片弹出详情看全文。来源目录可在界面里增删改并持久化到 ~/.dsh/skill-center.json。

分类上属于客户端插件(package.json 中 dsh.client.platform 为 web),当前版本 1.1.0,要求 DSH >=0.2.0-rc.1,许可证 MIT。

核心功能

侧栏与中栏浏览

  • 侧栏注册面板(sidebar.panellist,order: 42)。
  • 每个来源目录一个页签(显示名 + 技能数),右侧标出根路径与来源标记(内置默认 / 插件配置 / 已自定义);搜索只作用于当前页签。
  • 卡片为自适应网格:首字母头像、技能名、描述(最多 3 行)、菜单与启用开关;停用的技能显示「已停用」并降透明度。

启用 / 停用与会话可见性

对普通技能(含 SKILL.md 的目录或单文件 .md),开关会原子改写该文件 frontmatter 中的 disable-model-invocation(停用写入 true,启用则删除该行;无 frontmatter 时补最小块)。不删文件、不移动目录。

宿主在挂载及每次启用/停用、改来源目录后,会把启用中的技能通过 ctx.skills.register 注册进 DSH 技能表;停用或文件消失则移出。页头徽标 「已接入会话 X/Y」 反映当前注册结果;未接入的卡片会标原因(如技能名重复、名不合法等)。在 @deepseek-ai/dsh-skill-filesystem 未激活的 profile 里,这是让文件型技能进入会话的一条独立通路。

注意:注册表变更对新会话立即生效;已开始的会话沿用启动时快照。

详情、菜单与来源目录

  • 点击卡片 → 弹框展示 SKILL.md 全文(超 512KB 会标「已截断」),可打开所在文件夹。
  • 菜单:打开文件夹(Windows explorer.exe /select、macOS open -R、Linux 打开目录)、复制路径、启用/停用。
  • 「来源目录」编辑器可改 id / 显示名 / 路径,支持新增、删除、恢复默认;保存前校验 id(小写字母数字连字符)、绝对路径、至少一个目录。

默认扫描目录

分组 目录 技能形态
dsh技能 ~/.dsh/skills 单文件 .md
workbuddy技能 ~/.workbuddy/skills 目录 + SKILL.md

以上仅为默认;组名、id、路径都可在界面修改,也可用插件 config.groups 预设。

专家团 / 智能体

目录无 SKILL.md 但存在 .codebuddy-plugin/plugin.json 或 .claude-plugin/plugin.json 且 agents[] 非空时,按智能体(kind: agent)列出。这类条目的开关只写入 skill-center.json 的 agents 字段,不改目录内任何文件;启用时以 lead 提示词注册进技能表。

路径上含符号链接 / junction 的技能可列出、可读,但拒绝改写,开关置灰。

实现与安全边界

  • 宿主半区仅 Node 内置模块;浏览器半区仅用加载器提供的 react,无第三方包、无构建步骤。
  • API 路由(如 /api/skill-center/list、set-enabled、groups 等)仅接受同源 loopback 请求;写操作路径以服务端最新扫描为准,不信任客户端传入的 path。
  • 零遥测、零外发;落盘除 ~/.dsh/skill-center.json 外均为只读扫描;写操作仅在用户点击启用/停用时发生。

安装与启用

在目标 profile 下执行(命令来自仓库 README):

dsh plugin --profile <profile> add github:mwk719/dsh-skill-center

也可使用完整 git URL、本地 link:<仓库路径>/dsh-skill-center,或通过插件市场 dshmarket 在 Settings → Plugins 安装。卸载:

dsh plugin --profile <profile> remove dsh-skill-center

装完后刷新页面即可;仅当改动宿主半区 lib/index.js 时才需重启 DSH 应用。

典型用法

  1. 安装插件并刷新 DSH Web 界面,在侧栏打开「技能中心」。
  2. 在顶部页签切换 dsh技能 / workbuddy技能(或你自定义的来源),用搜索过滤当前页签。
  3. 点击卡片阅读完整 SKILL.md;用卡片开关决定该技能是否接入当前 profile 的运行时技能表(对照页头「已接入会话 X/Y」)。
  4. 技能分散在其它目录时,打开页头「来源目录」,新增一行绝对路径并保存。
  5. 需要在资源管理器中编辑文件时,用卡片「⋯」→「打开文件夹」。

适用场景与注意

适合谁:本地攒了较多 SKILL.md 或 WorkBuddy 技能/专家团目录、希望统一浏览和开关,且 profile 未依赖或未启用 filesystem skill provider 的开发者。

安装前建议:插件以当前 DSH 进程的权限读写你配置的技能目录与 ~/.dsh/skill-center.json;安装前可浏览 GitHub 源码 与 MIT 许可证,确认路径与写 frontmatter 的行为符合预期。社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的扩展模型。

结尾

dsh-skill-center 把「看一眼 + 开关 = 会话能不能用这个技能」收进侧栏一个面板:默认扫 ~/.dsh/skills 与 ~/.workbuddy/skills,可扩展来源,运行时注册补上了 filesystem provider 未激活时的缺口,同时保持零依赖与本地隐私边界。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye