前言¶
DeepSeek Harness(DSH)可以安装、挂载大量 Skill,界面里也能看到「有哪些 Skill」。但「装了很多」和「经常用」是两回事:几个月前装过、再也没碰过的 Skill,在列表里和每天必用的 Skill 看起来一样;反过来,你依赖某个 Skill 做审查或写文档,Harness 本身也不会给你一份可对照的用量证据。
dsh-skill-stats 是维护者 HLhhh 发布的客户端插件,在 Harness 左侧边栏增加一块 Skill 用量统计面板:列出当前能发现的每个已安装 Skill,并给出调用次数、覆盖会话数、占全部 Skill 调用的比例,以及最近使用时间。计数从插件启用之后开始,不解析历史会话日志,数据落在本地 JSON 文件里。
社区目录页:SkillHub - dsh-skill-stats。源码与说明见 GitHub:HLhhh/dsh-skill-stats。SkillHub 为社区独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本文仅介绍该插件本身的行为与用法。
这是什么¶
一句话:为 DeepSeek Harness 提供的 Skill 用量统计侧栏面板——每个已安装 Skill 的使用次数、会话覆盖范围,以及占全部 Skill 使用的份额。
插件分类为客户端(package.json 中 dsh.client.platform 为 web,immediately: true)。它不注册额外工具、斜杠命令,也不改动其他面板;打开面板时读一次本地计数文件即可展示。
什么算「用了一次」¶
计数从插件首次启用起算,不会读取任何会话日志。在同一个用户请求(一轮对话)里,对某个 Skill 最多计 1 次,以下任一信号出现即计入:
- 智能体通过
skill工具加载该 Skill; - 你以
/name形式调用; - 在本会话中该 Skill 已被加载过的前提下,你在后续轮次里再次提到其名称(匹配较宽松,
code-review、code review、CodeReview等视为同一 Skill)。
以下不计入:仅在提示词里列名、智能体只读 SKILL.md、或 merely 打开统计面板。
面板表格列含义(与 README 一致):
| 列 | 含义 |
|---|---|
| Calls | 当前筛选时间窗内,使用该 Skill 的对话轮次数 |
| Sessions | 使用该 Skill 的不同会话数 |
| Share | 该 Skill 的 Calls ÷ 当前筛选下所有已计数 Calls |
| Last used | 最近一次使用的时间 |
| Source dot | Skill 来源:用户目录、某插件、Harness 内置、项目内、或已卸载但仍出现在统计中等 |
核心功能¶
下面介绍 README 中已写明、且与实现描述一致的能力。
实时计数,不解析日志。 计数来自宿主已提交的会话事件,按用户请求去重,防抖写入小型 JSON 文件,重启后保留;打开面板仅一次文件读。
列出所有能发现的已安装 Skill,包括只能以 /name 手动调用的 Skill(带 manual 标记)以及插件提供的 Skill。
来源标签。 bundled 在 skills 服务里只表示「来自 bundled skill 根目录」;插件会按文件真实路径解析,例如插件包内 skill/、skills/ 下的 Skill 会标成 plugin:<包名>。
时间窗与筛选: 全部时间、今天、7 天、30 天;按来源筛选;搜索;「仅从未使用」;可选包含已卸载但仍出现在计数里的 Skill。
仅本地。 计数文件位于 DSH 用户目录下,无网络请求、无遥测。
Skill 清单会合并 ctx.skills.list()、磁盘上的 skill 根(如 $DSH_HOME/skills、~/.agents/skills 等)、已安装插件包内的 skill 目录、以及 agent preset 作用域,按名称去重;缓存约一分钟,并在 skills/change 时失效。
安装与启用¶
包为纯 JavaScript,无需构建步骤。安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,安装第三方插件前应完成你方安全审查。
从 GitHub 安装(README 推荐,npm 正式发布前)¶
若你的 profile 不叫 web,把下面命令里的 web 换成实际 profile 名:
dsh plugin --profile web add github:HLhhh/dsh-skill-stats
本地打包或 tarball¶
npm pack
dsh plugin --profile web add ./dsh-skill-stats-0.1.0.tgz
(npm pack 产生的文件名以当前 package.json 版本为准;资料中示例为 0.1.0。)
在 agent 会话中安装¶
plugin_manager install_bundle target=/absolute/path/to/dsh-skill-stats
安装完成后刷新页面一次,侧栏会出现与其他面板并列的柱状图图标。
更新与移除¶
dsh plugin --profile web update github:HLhhh/dsh-skill-stats
dsh plugin --profile web remove dsh-skill-stats
典型用法¶
| 入口 | 作用 |
|---|---|
| 侧栏柱状图图标 | 打开 Skill usage 面板 |
| 面板顶栏 | 汇总:已安装 / 已使用 / 从未使用 / 总 Calls / Sessions |
| 筛选栏 | 时间窗、来源、搜索、仅从未使用、包含已卸载 |
| 表头 | 点击列排序,再次点击反向 |
无其他注册项:无新工具、无新斜杠命令、不改变其他面板行为。
兼容性与环境¶
| 面 | 说明 |
|---|---|
| DeepSeek Harness | 0.2.x(README 写明针对 0.2.1-rc.3 Desktop 与 Web 构建测试) |
| Node | ^22.19.0 \|\| >=24.0.0(使用 zlib.zstdDecompressSync) |
| 平台 | 带 skills 功能的 Desktop 与 Web profile |
适用场景与注意¶
适合谁: 在 DSH 里装了不少 Skill、想区分「常用 / 闲置 / 从未点开」的开发者;需要本地、可重启保留的轻量统计,且接受「启用插件之后才有数据」这一设计。
设计上的限制(README Known limitations):
- 无历史: 启用前的使用一律不计;若需要旧数据只能依赖读历史会话日志,本插件刻意不做。
- 名称提及仅在本会话已加载过该 Skill 后才计数;插件重启后会话内「已加载集合」需重新建立。
- 名称匹配偏宽松;极短名称(如
pr、tdd)需整词出现才计。 - 删除
$DSH_HOME/storages/dsh-skill-stats/usage.json会重置基线,之后需重载插件以便新建文件。 - 用过但清单源都发现不了的 Skill 会出现在「uninstalled」类下,可在筛选栏打开。
- 重名 Skill 只展示生效的那一个。
截图说明:仓库文档中的预览图为示例数据;面板读取的是插件自维护的计数文件,而非会话日志。
结尾¶
Harness 回答「有哪些 Skill」;dsh-skill-stats 用最小的诚实数据集回答「哪些 Skill 真的在用」——Calls、Sessions、Share 与来源一目了然,且全部留在本机。