dsh-skill-jnkgg:大技能库的目录限量与按需加载

前言

DeepSeek Harness(DSH)默认只扫描 ~/.dsh/skills/,且每个技能在每轮对话的系统提示里都会占一行摘要。若把几十条甚至七十多条外部 Agent Skills(SKILL.md 格式)全部挂进目录,每轮会多消耗大量 token,也容易挤掉真正相关的条目。社区里有人用 link 方式把整库挂进 profile,但缺少「只展示前 N 条、正文懒加载、隐藏不删、中文检索」的一体化方案。

下面介绍维护者 1843970078(xiaomeng)在 SkillHub「记忆」分类下的插件 dsh-skill-jnkgg(仓库名 xiaomeng-dsh-skill-jnkgg)。它把任意目录里的技能注册进宿主 ctx.skills,在控制 token 的前提下尽量不丢可调用能力。

这是什么

dsh-skill-jnkgg(技能库管家,缩写 jnkgg = 技能库管家拼音首字母)是面向 DSH 的技能库管理插件:零 npm 运行时依赖,基于 SKILL.md 与 Cordis 原生 API。当前 package 版本为 0.1.0,许可证 MIT,要求 Node.js >= 22。

核心命题可以概括为:省 token 又不丢技能——超出展示名额的技能不会被删掉,而是降级为仅用户可点名触发;正文在读盘时才加载;还可通过库入口、搜索、加载三条路径取回。

核心功能

已核实的能力如下。

与宿主技能体系统合

机制 效果
向 ctx.skills 注册 SkillProvider 外部目录技能进入 DSH,/名字 与原生 skill 工具可用
每库 maxVisible 限量 仅前 N 条为 modelInvocable;超出部分降级为 user-invocable,不删除
正文懒加载 get() 时才读盘,目录中始终只有摘要
库入口 router 每库自动挂 <库名>-library,描述库用途,便于一句话拉起整库索引
自动分析库主题 可不填关键词:插件读全库做统计(无 LLM、无网络)
中文关键词映射 例如游戏场景下的「二段跳」「音效」等可落到英文技能名相关条目
主题分散选取 混杂库按主题分桶轮流展示,避免小主题被大主题淹没
可视化设置面 状态总览、库管理、Token 预算、技能浏览(含可见性标记)、日志

对话内工具 skill_jnkgg

action 作用
status 各库条数、可见上限、关键词来源(manual / auto)
search 按关键词搜全部技能(含隐藏),支持中文
load 按名字取技能正文全文
list 列出某个库的全部技能
analyze 自动分析某个库,返回建议关键词
config 读/改配置
rescan 清缓存并通知宿主刷新目录

README 中说明了检索实测:在 10 个互不相关领域造的假壳库上,中英文各 50 次查询均为字面可匹配场景下的 100% 命中;同义改写(如库里写 filing、用户说「报税」)可能漏检,属库内容边界,可通过 库名-library 索引兜底。

已知边界(文档自述)

  • 中文别名表手工维护(游戏专用 + 通用兜底),生僻说法可能搜不到。
  • 自动主题分析为词频与区分度加权,非语义理解;隐晦主题建议手填 keywords。
  • 单字查询可能误命中多项;冷门领域可能被当作混杂库处理。

安装与启用

安装步骤来自仓库 README,不是 dsh plugin add github:... 一类凭名称拼接的命令。

  1. 在 DSH 的 profile 目录里 link 本仓库:
pnpm add link:<本仓库路径>
  1. 在 profile 的 package.json 的 dsh.profile.bundles 中加入包名:
"dsh-skill-jnkgg"
  1. 重启 DSH。

装完后在 设置 → 技能库管家 中添加你的库路径即可。

配置

配置文件路径:~/.dsh/skill-jnkgg/config.json(可在设置页或通过 skill_jnkgg 的 config 修改;写入前自动 .bak 备份)。示例:

{
  "enabled": true,
  "libraries": [
    {
      "path": "~/skills/my-game-skills/skills",
      "name": "gamedev",
      "enabled": true,
      "maxVisible": 8,
      "keywords": ["游戏", "UI", "音效"]
    }
  ],
  "maxVisibleDefault": 8,
  "descMaxChars": 160,
  "scanTtlSec": 10,
  "loadBodyLimit": 200000,
  "pickMode": "keywords"
}

说明要点:

  • keywords 留空时,插件自动分析库内容提取主题。
  • maxVisible: 0 表示全部不在模型目录中展示,仍可通过 /名字、search、load 取回。
  • pickMode: "name" 时按技能名字母序选取,而非关键词模式。

配置变更后需通过插件逻辑触发宿主目录失效(README 强调应调用 control.invalidate(),否则宿主可能长期使用缓存的旧目录)。

典型用法

  1. 挂大型外部库:在 libraries 里配置本地路径(如 README 举例的 ~/skills/.../skills),设置 name 与合适的 maxVisible。
  2. 中文找技能:在对话中调用 skill_jnkgg,action 为 search,传入中文关键词;命中隐藏项后用 load 拉正文。
  3. 浏览整库:使用自动注册的 <库名>-library 或 list 查看全量索引。
  4. 调 Token 预算:在设置面的 Token 预算与「技能浏览」中查看可见性徽标,按需改 maxVisible 或 descMaxChars。

开发期 README 提到曾用 awesome-gamedev-agent-skills(约 77 条)作真库测试;该库文件不包含在本插件仓库中。

适用场景与注意

适合谁:已在 DSH 上使用多目录、多文件 SKILL.md 技能库,且关心每轮系统提示 token 占用的开发者;需要中文关键词检索或混杂主题库「分散展示」的场景。

运行与信任:插件以当前 DSH 进程权限读盘、写 ~/.dsh/skill-jnkgg/config.json。安装前请阅读源码与 MIT 许可证,并确认 link 的路径可信。插件设计上将扫描/解析/注册分段 try/catch,避免单点失败拖垮宿主启动;顶层 inject 仅声明 ['skills'],工具与 web 服务懒加载——这些是实现约束,也意味着行为与 DSH / Cordis 版本需保持兼容(peerDependencies 含 @deepseek-ai/cordis)。

SkillHub 目录页与 GitHub 为本插件的社区分发与源码入口;DeepSeek Harness 生态主张「一切皆插件」,社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-skill-jnkgg 把「外部大技能库」当成可配置的库单元:目录限量、正文按需、隐藏可恢复、中文检索与可视化配置在同一插件内完成。若你正在 DSH 上挂载超过默认可承受条数的 SKILL.md 集合,可按 README 的 link + bundle 方式安装,再从设置页添加库路径。

  • SkillHub 目录:https://www.skillhub.cn/plugins/1843970078/xiaomeng-dsh-skill-jnkgg
  • GitHub 仓库:https://github.com/1843970078/xiaomeng-dsh-skill-jnkgg
羽毛球分组比赛记分
小程序二维码

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

小夜