dsh-consumer-audit

DSH 的插件可以向宿主注册工具、skill、服务和路由。注册成功不等于模型会调用它们。一个插件可能在启动时安静地注册了三个工具,其中两个在过去几十次会话里一次都没被调用过。代码在,测试过,加载正常,只是没有任何任务走到那里。还有一类更隐蔽:插件只包裹了宿主已有的方法,什么都不注册,从清单上看它像什么都没做,实际上它确实在生效。

consumer_audit 把这件事变成一份可核对的清单。它读取活动 profile 的组成行,解析每一行装的是哪个包,静态扫描该包的注册站点,再去 DSH_HOME 下的会话日志里数每个已注册工具和 skill 出现过几次,最后报告计数为 0 的那些。

安装与启用

使用以下命令安装插件:

dsh plugin --profile <profile> add github:qimen039-code/dsh-consumer-audit

安装完成后,需要重启 DSH,工具才会出现在模型工具表里。

前置条件与环境:
* 需要安装 Node 22.15 或更新版本。DSH 的会话日志采用多帧 zstd 格式存储,旧版本无法读取。
* DSH 的 loader 只从活动 profile 自己的 node_modules 解析插件包。放在 profiles/node_modules 下的包不会生效,会导致启动失败。

核心功能

该插件提供以下能力:

  • consumer_audit:执行审计检查。
  • consumer-audit:对应的 skill。

使用方式

由于会话日志是多帧 zstd 格式,模型无法直接用普通文本读取工具打开。插件提供了专门的证据获取接口和代码库入口。

证据获取接口:

{"action": "evidence", "name": "some_tool", "limit": 5}

代码库调用示例:

import { collect } from "dsh-consumer-audit/collect";
import { ablation } from "dsh-consumer-audit/audit";

报告内容与解读

报告包含 findings(发现的问题)和 notes(说明性信息)。报告不含语义判断,仅提供观测数据。

Finding 类型:
* tool_never_invoked:工具已注册,但在被扫描的日志中从未被调用。
* skill_never_loaded:盘上有 SKILL.md,但在会话中未被加载。
* prompt_only_capability:只注册了提示词。
* row_without_capability:行已挂载、包也解析到了,但什么都没注册。
* duplicate_prompt_section:两个包注册了同名的提示词段。
* package_unresolved:包既不在 profile 里,也不属于随 harness 发行的那批。
* tool_never_delivered:被调用过,但每次返回都带 isError。
* skill_never_delivered:同上,针对 skill。

注意事项:
* 报告中的 consumed 字段记录了 attempts / failed / succeeded 三层数据,仅走到“送达”这一层。
* 源码里的注册站点只说明能力被声明了,不说明它能用。
* 调用计数描述的是被扫描的那些日志。未扫描的 profile、日志窗口之前的调用都会读成未使用。
* 第一方包(以 @deepseek-ai/ 开头)随 harness 发行,不参与搜索,报告记为 shipped。
* 包裹既有服务方法的包不注册新能力,调用计数判断不了它。

适用场景

  • 新装插件后,验证其是否在会话中被实际调用。
  • 怀疑某项功能已编写但未正确接入。
  • 在清理 profile 之前,确认删除某项能力不会造成影响。
  • 自写插件时,确认哪一部分代码无人调用。

参考资料

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

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

小夜