前言¶
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:... 一类凭名称拼接的命令。
- 在 DSH 的 profile 目录里 link 本仓库:
pnpm add link:<本仓库路径>
- 在 profile 的
package.json的dsh.profile.bundles中加入包名:
"dsh-skill-jnkgg"
- 重启 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(),否则宿主可能长期使用缓存的旧目录)。
典型用法¶
- 挂大型外部库:在
libraries里配置本地路径(如 README 举例的~/skills/.../skills),设置name与合适的maxVisible。 - 中文找技能:在对话中调用
skill_jnkgg,action为search,传入中文关键词;命中隐藏项后用load拉正文。 - 浏览整库:使用自动注册的
<库名>-library或list查看全量索引。 - 调 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