dsh-plugin-graph
eavebounty/dsh-plugin-graph
DSH 已装插件关系图谱:侧边栏展开面板,按依赖/相似/项目连线,球大小=调用频次,颜色=类型,亮暗=启用状态;含技能使用与 token 缓存成本分析。
安装
dsh plugin --profile web add github:eavebounty/dsh-plugin-graphREADME
dsh-graph-usage
DeepSeek Harness 已装插件关系图谱 —— 侧边栏展开面板:插件关系图 + 技能使用 + Token 缓存成本分析。
功能
一个 DSH Web 插件,侧边栏底部「插件图谱」按钮,点击展开(不跳页)浮动面板,含三个视图:
1. 图谱 — 已装插件网络图(Obsidian 关系网风格:打开时节点弹性炸开、可拖拽/平移/滚轮锚点缩放)
- 球大小 = 调用/使用频次(log 缩放)
- 颜色 = 类型(皮肤/主题、用量/统计、插件市场、架构/绘图、技能、核心…)
- 亮暗 = 启用状态:启用且非依赖 → 亮;核心/依赖 → 暗灰;已装未启用 → 暗色
- 线型:实线=依赖、点线=对等依赖、虚点线=同类、长虚线=同项目
- 点击节点 → 详情(状态/版本/来源/分类/频次/下载量/描述/邻居)
2. 技能 — 技能目录(.dsh/skills)全部技能:加载次数、会话数、重复加载会话数、累计读取量(tokens)、平均耗时、是否已收录。
3. 缓存分析 — 实时会话投影 + 历史日志扫描:输入/缓存命中/命中率/节省占比/估算成本(¥)/节省(¥)、按模型维度、今日/本周/本月周期统计(北京时间)、减 Token 策略(按优先级量化 tokens 与 ¥)。成本按 DeepSeek v4 官方价高峰/空闲分时估算(北京时间 09-12/14-18 为高峰)。
截图



要求
- DeepSeek Harness(web profile)
- Node.js ≥ 22.2(
node:zlib的 zstd 支持)
安装
# 从 npm 安装(企业 scope 包)
dsh plugin --profile web add @eave_bounty/dsh-graph-usage
# 从 GitHub 安装(仓库名不变,直装不受改名影响)
dsh plugin --profile web add EaveBounty/dsh-plugin-graph
# 或从本地源码目录
dsh plugin --profile web add <path-to>/dsh-plugin-graph
重启 dsh web,侧边栏底部出现「插件图谱」按钮。
包名说明:npm 发布名为
@eave_bounty/dsh-graph-usage(企业 scope,公开)。dsh plugin按包的真实name对账依赖键与dsh.profile.bundles,所以** bundles 里请写@eave_bounty/dsh-graph-usage**。客户端 bundle 同时注册@eave_bounty/dsh-graph-usage、旧名dsh-graph-usage与仓库名dsh-plugin-graph三个 id,兼容历史命名;但 boot key 必须是真实包名。
数据源
- 插件清单/依赖:
$DSH_HOME/profiles/<profile>/package.json+ 各包 manifest - 使用频次/缓存/技能:
$DSH_HOME/sessions/**/session.jsonl(.zstd)(有界扫描 + 内存缓存)+ 当前进行中会话的实时投影 - 市场下载量:
api.npmjs.org/downloads/point/last-week/<pkg>(10 分钟缓存,离线降级)
API
GET /api/dsh-plugin-graph → { ok, nodes, links, meta, skills, cache, scannedSessionIds }
局限
- 插件"使用频次"近似为会话日志中插件 id 的命中次数(多接近 0);技能维度是真实的 skill 工具调用统计。
- 已完成会话从日志扫描;当前进行中会话由实时投影统计(客户端按
scannedSessionIds去重,避免重复计数)。 - 分类/项目分组为内置规则表(
lib/index.js/lib/stats.js)。
架构
lib/index.js— cordis 宿主:/api/dsh-plugin-graph端点 +pluginGraphStats会话投影(token 桶 + 技能调用配对)lib/stats.js— 会话日志(zstd)扫描、技能清单、成本/缓存模型lib/client.js— React 客户端(window.__ModuleLoader__):图谱力模拟 + 技能/缓存视图cordis.patch.yml— 注册到 bundle 的补丁
说明:
lib/client.js为手写校验的 JSX bundle(无独立构建步骤),修改后直接生效于 web 端。
贡献
欢迎 Issue / PR。请保持 zh/en 文案对等,并在 README.md 追加变更日志。
协议
变更日志
- 2026-08-18 修复启动失败:运行时依赖
@deepseek-ai/dsh-home-paths需随插件本地下发,否则 D 盘 link 加载时无法从 profile node_modules 解析。 - 2026-08-19 修复启动失败:
sessionProjections.register缺stateVersion(补stateVersion: 1);补view(state)实现。 - 2026-08-19 可视化语义重定义:颜色=类型、亮暗=启用状态、球大小=调用频次;移除"市场深浅=下载量"旧规则。
- 2026-08-19 多代理企业级审评修复:双重计数(
scannedSessionIds去重)、省钱数学 ~30× 虚高修正、关闭侧边栏停止后台轮询、图刷新保留 pan/zoom、session 大文件 64MB 上限 + zstd 特性检测、图/统计内存缓存与去重、过时文案与硬编码中文修复。 - 2026-08-19 UI/交互优化:未启用对比度提升、标签描边晕环、图例补类型色相;策略表本地化(zh/en 对等 79/79);浮动动画 5s 衰减归零、拖拽不被边界弹回、
pointercancel不误选。 - 2026-08-19 功能正确性:
collectUsage二值 0/1 缺陷修复(逐会话计数 + 边界匹配防前缀误报);聚合成本改为按模型分别计价后求和。 - 2026-08-20 截图与改名:README 新增图谱/技能/缓存三视图截图;npm 包改名
dsh-graph-usage(规避 erduotong 同名占用,同步cordis.patch.yml的name与文档;GitHub-only 直装不变)。 - 2026-08-20 定价成熟化:成本改为高峰/空闲分时计价(北京时间 09-12/14-18 高峰)+ 2026-08-17 前历史价 + 按会话逐条计价;支持
prices/priceSchedule覆盖(buildStats/getStats可传入)。 - 2026-08-20 周期统计:新增今日/本周/本月(北京时间天桶)成本与 token 统计,缓存分析视图展示。
- 2026-08-20 修复客户端加载失败「bundle client.js 未注册 dsh-plugin-graph」:profile 以
dsh-plugin-graph为 boot key 安装(旧名遗留),而客户端模块表按 boot key 校验、bundle 原注册dsh-graph-usage。最终方案为多 id 注册:lib/client.js用共享 factory 同时注册规范名@eave_bounty/dsh-graph-usage与旧名dsh-graph-usage、dsh-plugin-graph;scripts/preflight.mjs校验全部注册。 - 2026-08-20 首次发布 npm:包名
@eave_bounty/dsh-graph-usage@0.1.0(企业 scope,公开--access public);publishConfig加access: public;cordis.patch.yml的name同步为 scoped 名;profile boot key 改为@eave_bounty/dsh-graph-usage。