dsh-skill-meter:DSH 会话内 Skill 用量侧边栏

前言

在 DeepSeek Harness(DSH)里装了一堆 skill 之后,常见问题是:本机到底有哪些、当前这场对话里模型或用户真的触发了哪几个、各触发了几次,很难从聊天界面一眼看清。靠翻会话记录或自己记名字,成本高,也不利于调 prompt 和 skill 编排。

dsh-skill-meter 把「本机清单」和「本会话真实用量」做成 dsh-better-sidebar 的一个侧边栏页面:右侧栏 + 菜单选「Skill 用量」,页头显示点亮数与总数,逐条列出 skill 的命中次数与首末轮次。下面介绍它的定位、数据来源、安装方式与使用注意。

这是什么

  • 插件名称:dsh-skill-meter(仓库 mengge237/dsh-skill-meter)
  • 维护者:mengge237
  • 分类:客户端(双面板包:Node 侧注册数据路由,浏览器侧挂到 better-sidebar)
  • 版本(package.json):0.2.3,MIT,要求 Node >= 24

一句话:DSH 技能用量面板——本机装了哪些 skill、当前会话真的用过哪几个,命中次数与首末轮次一目了然。侧边栏按会话隔离,数字对应当前对话,不是全局累计。

核心功能

侧边栏「Skill 用量」页

装好并启用后,在 Web 客户端右侧栏 + 菜单里选择「Skill 用量」。页头为 点亮数 / 总数(例如 1 / 59 已点亮),并标注数据来源与会话轮次信息。

每条 skill 一行:

  • 用过:点亮(绿点),并显示次数、首次/最近第几轮、触发方式(模型通过 tool/call 加载 skill,或用户 /名字 直接触发)。
  • 未用过:压暗显示。
  • 可按「全部 (N)」等过滤查看。

页头来源标记有实际含义:官方 skills/list 表示清单来自宿主接口(含 whenToUse、modelInvocable 等,改 SKILL.md 不必重启);磁盘兜底 表示未拿到 Remote 时退回读 ~/.agents/skills/*/SKILL.md 的 frontmatter。

数据从哪儿来

0.2 起口径分为两条读口:

  1. 清单:宿主 Remote skills 命名空间,方法 skills/list,请求 { sessionId },响应 { skills: [{ name, description, whenToUse?, modelInvocable }] }。客户端通过 inject: ['betterSidebar', 'remote', 'remote.skills'] 与宿主 dsh-client-ui-skill 同类方式使用;清单变更可订阅 skills/change,另有约 20s 刷新兜底。
  2. 本会话用量:无官方接口,插件只读会话存档(~/.dsh/sessions),解析 tool/call(skill 名)、skill-invocation 消息与存档中的 <skill_content name="...">。存档为追加式多帧 zstd,使用 Node 24 自带 zlib.zstdDecompressSync 按帧魔数逐帧解压。

HTTP 聚合接口:GET http://127.0.0.1:3080/dsh-skill-meter/data.json(可选 ?session=<id> 指定会话)。多开会话时可用查询参数对准某场对话。

分组与排序(视图层)

自 0.2.3 起,页头下拉分组仅影响展示顺序,不决定有哪些 skill;清单仍以 skills/list 为准。配置写在 ~/.dsh/skill-view.json,服务端每次请求现读,改完保存并刷新页面即可,无需重启 dsh web。

示例结构:

{
  "version": 1,
  "groups": [
    { "name": "运行时", "skills": ["dsh-local-runbook", "dsh-plugin-dev"] },
    { "name": "额度与成本", "skills": ["free-llm-pool"] }
  ]
}

未写入任何组的 skill 落在「(未归组)」,不会因未配置而从页面消失。可用 skill-center-map 脚本一键生成初始分组(与上游分类账之后各归各,不再自动同步):

python ~/.agents/skills/skill-center-map/scripts/catalog.py --seed-view

幽灵 skill 与边界提示

  • 底部列出「存档里用过、本机清单里没有」的名字(改名或已删的 skill)。
  • 「点亮但不在 catalog 快照里」会单独提示,便于发现磁盘上有但本会话未发给模型的情况。

设置页开关

通过 registerTab 接入宿主后,设置页「侧边卡片」分区会自动出现本页的开关,无需第三方再塞一张外来设置卡片(旧方案已移除)。

安装与启用

安装前建议先停掉正在运行的 dsh web。装进 web profile 后会写入 package.json 依赖、dsh.profile.bundles、node_modules 软链与 lock。

从 registry 安装(README 注明仓库尚未公开发布 npm,发布后才走 registry):

dsh plugin --profile web add dsh-skill-meter

从本地源码开发(link: 指向本地目录,改源码即时生效):

dsh plugin --profile web add <仓库根>/plugins/dsh-skill-meter

生效条件:

  • 修改 服务端 lib/index.js(路由、存档解析等)后需 重启 dsh web(会打断当前会话)。
  • 修改 浏览器侧 lib/client.js 一般 刷新页面(Ctrl+R) 即可。

卸载:

dsh plugin --profile web remove dsh-skill-meter

安装后自检

先验服务端(本机 loopback,curl 不受浏览器同源限制):

curl -s "http://127.0.0.1:3080/dsh-skill-meter/data.json" | head -c 200

期望看到 ok:true 及 skills[]、lit/total、skillsRoot 等字段。路由由插件自行校验来源(loopback、非跨站等),不满足返回 403,且不携带 Access-Control-Allow-Origin。

再开 GUI:右侧栏应有「Skill 用量」;设置页「侧边卡片」应有对应开关。若未出现,依次检查:dsh plugin --profile web list 是否包含本包、package.json 中 dsh.bundle.patch 与 dsh.client.platform、浏览器控制台是否有 cannot get module 或 betterSidebar 相关报错(未装侧边栏时插件仅 warn,不拖垮页面)。

不启动 dsh 时可在仓库内跑:

node test/selftest.mjs
node test/routes.mjs
node test/client-smoke.mjs

典型用法

  1. 安装插件并重启 dsh web(若刚改服务端)。
  2. 打开一场会话,在右侧栏 + → Skill 用量,查看 点亮数 / 总数 与每条 skill 的命中与轮次。
  3. 需要自定义分组时编辑 ~/.dsh/skill-view.json,保存后刷新侧边栏页。
  4. 多会话调试时用 curl 带 session 查询参数核对指定会话存档解析结果。

会话 id 为带 session- 前缀的完整字符串(与侧边栏 scope.sessionId、会话目录名一致);只传 uuid 片段也可命中,找不到会话会明确报错,不会误落到其他会话。

适用场景与注意

适合:在本机 DSH Web 上长期开发、调试 skill 的开发者;需要对照「装了什么」和「这场对话实际用了什么」做复盘或减负 skill 列表时。

权限与只读边界:插件以当前 dsh 进程权限运行,安装前应阅读仓库源码与 MIT 许可证。全程只读 ~/.agents/skills、~/.dsh/sessions,不写 dsh 数据;缓存仅在内存,依存档 mtime+size 避免重复解压。

依赖:需要 dsh-better-sidebar 生态的侧边栏扩展点;清单依赖较新宿主的 remote.skills 与 skills/list,过旧宿主会走磁盘兜底。

发布状态:README 写明仓库当前为私有、未发 npm,定位为本机自用与后续上游 PR 素材;社区目录页见 SkillHub 插件条目(与 DeepSeek / 幻方无官方从属,属社区收录)。

结尾

dsh-skill-meter 把 skill 清单与会话存档里的真实触发记录接到 better-sidebar 一页里,清单走宿主 skills/list,用量走磁盘存档解析,分组用 skill-view.json 只做视图。需要核对数据时可用本机 curl 访问 data.json;日常在右侧栏「Skill 用量」即可查看。

  • 目录页:https://www.skillhub.cn/plugins/mengge237/dsh-skill-meter
  • GitHub:https://github.com/mengge237/dsh-skill-meter
羽毛球分组比赛记分
小程序二维码

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

Xiaoye