cransmathenia666-hash
dsh-skill-mcp-stats
Per-turn skill & MCP usage stats for DeepSeek Harness (dsh) - see what tools the agent used, with per-message stats and JSONL logs.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 17, 2026
- Updated
- Aug 17, 2026
Introduction
dsh-skill-mcp-stats
想知道每一轮对话里 agent 到底动了哪些 skill 和 MCP?翻对话记录翻到眼瞎?把每一轮翻成一张清单,按钮一点就知道。
Per-turn skill & MCP usage stats for DeepSeek Harness (dsh) — see what the agent actually called, per turn, without digging through transcripts.
它解决什么问题
用 dsh 干活时,agent 这一轮调了哪些 skill(比如加载了 impeccable 做视觉打磨)、用了哪些 MCP 工具(比如 mcp__github__* 查仓库、mcp__qwen-mm-plugins-search__web_search 搜网页),这些信息散在对话里,想复盘一次任务用了什么"武器",得自己一条条翻工具调用记录,费眼又费时。
这个插件把宿主侧的事件流变成逐轮统计:每轮结束自动记录该轮调用的 skill 与 MCP(含调用次数),然后——
- 每条 assistant 消息的操作栏多一个 📊 按钮,点一下就在消息下方展开本会话的 skill/MCP 清单,不用再去对话里翻
- 顶部是重点标签:调了哪些 skill、哪些 MCP、各几次,一眼看完
- 历史轮次折叠收纳,想看哪轮点开哪轮
- 全量明细同步落盘到
~/.dsh/skill-mcp-stats/turns.jsonl,随时可查
📷 演示动图待补充:点开 📊 → 顶部标签展示本轮 skill/MCP → 展开某轮看明细(30 秒以内)
功能
- 📊 消息栏统计按钮:不弹窗、不遮屏,面板直接在按钮所在消息下方展开,随对话流滚动
- 🏷 重点概览:skill(绿)与 MCP(橙)彩色标签 + 调用次数,本轮/本会话用了什么一眼可见
- 📚 轮次明细折叠:每轮一行摘要,点击展开 skill / MCP / 其他工具的明细;默认展开最新一轮
- 🧠 按会话隔离:面板只统计你当前所在的会话,不会被其他会话的记录干扰
- 💾 自动落盘:每轮结束实时追加 JSONL 日志,进程重启不丢历史
- 🛠 对话内可查:注册
skill_mcp_stats.summary工具,你直接问 agent"这轮用了哪些 skill 和 MCP"也能答 - 🌗 主题自适应:全部使用 DSH 官方主题令牌,深浅色自动适配,不会和背景糊在一起
- 📡 HTTP API:
GET /skill-mcp-stats/api/overview(可带?session=/?scope=latest)供二次开发取数
安装
方式一:dsh-super-injector(开发环境,推荐)
dsh 环境内自带 dev_inject_plugin / dev_uninject_plugin 工具(超级模组注入器):
npm install --no-audit --no-fund # 首次安装 typescript / tsdown
./scripts/build.sh # host: tsc;client: tsdown → lib/
dev_inject_plugin <本目录> # 注入运行
dev_uninject_plugin skill-mcp-stats # 卸载
注:无源码 checkout 的环境下,build.sh 会自动从 npm 全局安装的 dsh 链接类型依赖再编译,无需 DSH_CHECKOUT。
方式二:手动放入插件目录
把 lib/ 与 package.json 放入 dsh 插件的 node_modules(如 ~/.dsh/profiles/web/node_modules/@dsh-external/skill-mcp-stats),在 profile 的 bundles 中声明后重启 dsh。
方式三:正式装配
dev_install_package <本目录> # 写入 profile bundles,重启后自动装配
它怎么工作的(写给好奇的人)
- 数据:宿主监听
session/event事件流,只消费三个事件——turn/start(一轮开始)、tool/call(每次工具调用,含工具名与参数)、turn/end(一轮结算) - 分类:工具名
skill记入 skill(取参数里的技能名);以mcp__开头的记入 MCP;其余归为其他工具 - 界面:
conversation.chat.assistant-actionsSlot(官方给消息反馈类插件预留的按钮席位)注入 📊 按钮,点按后直接在按钮行下方插入内联面板 - 持久化:
turn/end时把整轮(轮号、时间、分类计数、调用明细)追加到 JSONL;进程内按 session+turn 内存聚合,重启后从日志续接 - 生命周期:宿主
ctx.on/ctx.effect注册,client 卸载即净,无残留
已知限制(说实话的时间)
- 插件注入之后产生的轮次才计入实时统计;历史轮次只能在注入时刻按已加载的会话事件回填一次(时间戳为注入时刻,不影响统计正确性)
- 极个别历史事件里 skill 参数为不可解析格式时记为
(unknown),新产生的轮次不受影响 - 目前聚焦"用了什么",暂不做耗时/成败/参数明细的深挖——想要的话提 issue
Roadmap
- 轮次内加耗时与成败标记
- 跨会话汇总视图(各 skill/MCP 使用频次排行)
- 按需从 JSONL 重建统计(进程重启后历史回填)
兼容性
- DeepSeek Harness Web GUI(
dsh web),2026-08 developer preview 版本 - 依赖官方 Slot:
conversation.chat.assistant-actions/ 宿主session/event事件流(若未来官方调整这些接口需适配) - Node.js 任意现代版本(宿主侧仅用
node:fs/node:path/node:os)
License
BSD-3-Clause