- Home
- Plugins
- Usage & Billing
- dsh-plugins
dsh-plugins
tangzhizzz/dsh-plugins
按会话统计 token 与金额:输入框下方显示当前会话花费,设置页列出每个会话的花费(含历史会话)。
Install
dsh plugin --profile web add github:tangzhizzz/dsh-pluginsREADME
dsh-plugins
DeepSeek Harness(DSH)插件集合。
每个插件是一个独立的 npm 包,放在 packages/*,可以单独安装、单独发布,互不影响。
git clone https://github.com/TangZhiZzz/dsh-plugins.git
插件清单
| 包名 | 显示名 | 作用 |
|---|---|---|
dsh-plugin-session-cost | 会话消费统计 | 输入框下方显示当前会话消费金额(点击弹出明细浮层:缓存命中/未命中/输出三段组成条 + 金额),设置页多出一页「会话消费」,列出每个会话的花费(含已归档的历史会话);另有一个 agent 工具 session_cost(可用 exposeTool: false 关掉)。金额按 DeepSeek 官方公开价估算,高峰/空闲时段自动区分,价目表可在 Config 里整体替换。徽标轮询只读当前会话、不折叠整个语料 —— 结构取舍与优化见包 README 第 8 节。 |
dsh-purge | 破甲(存档) | DeepSeek Harness 提示词注入插件,原仓库 YuJunZhiXue/dsh-purge 已删除,此处为其 1.1.72 存档副本,额外做了 DSH 0.2.1-rc.2 的两处兼容修复({{cwd}} 崩溃 / 红队预设 toolFilter 判 broken)。不发布 npm(private: true),来源、署名与原项目非盈利条款见 packages/dsh-purge/NOTICE.md;原作者 YuJunZhiXue,MIT。 |
dsh-plugin-usage-stats | 用量统计 | 9 张指标卡(调用 / Token / 命中率 / 工具 / 会话 / 活跃天 / 每次均值 / 日均 / 峰值日)、Token 构成(比例条 + 三段数值与占比)、年度热力图(最近一年,按真实星期几对齐,GitHub 贡献图那种绿色渐变,列宽自适应占满宽度,悬停出当天明细)、24 小时时段分布(按深夜/上午/下午/晚上上色)、模型分布、工具 Top、会话排行(带活跃天数)、会话花费、逐日明细表,挂在左侧面板栏。时间范围(7/14/30/90/365 天)在面板最上方,作用于整块面板。快在架构:每个会话只按天折叠一次(与窗口无关),切窗口只在天行上聚合、不再读日志(用 readSession 调用次数钉住);再叠后台预热、非活跃会话天行落盘持久化与后台轮转校验,状态行直接显示聚合耗时 / 缓存复用数 / 待校验数。图形用 div + 主题 token 手绘,不引第三方图表库;金额不算第二份,Client 半直接读 dsh-plugin-session-cost 的路由,没装它就不显示金额卡片。 |
安装
方式一 · 图形界面 / Agent 工具(推荐,profile 由 dsh 管理):
plugin_manager { action: "install_bundle", target: "dsh-plugin-session-cost" }
方式二 · 命令行:
dsh plugin --profile <profile 名> install dsh-plugin-session-cost
安装后若显示为未启用,用 plugin_manager { action: "set_bundle", target: "dsh-plugin-session-cost", enabled: true }
或在「设置 → 插件」里打开。target 也可以直接给本仓库某个包的绝对路径(本地开发调试用)。
开发
# 需要 Node >= 22、pnpm 11
pnpm install # 本仓库无第三方依赖,只会建工作区链接
pnpm -r test # 跑每个包自带的校验
pnpm -r pack:check # 用 npm pack --dry-run 检查将要发布的文件清单
每个插件的约定(详见各包 README):
package.json里dsh.bundle.patch指向 bundle 补丁(把插件行插进 profile);- 有 UI 的插件再加
dsh.client(platform: 'web')与./client导出; - 显示名放
locale/en.json、locale/zh.json,必须是{ "meta": { "title": …, "description": … } }, 且exports要暴露./locale/*.json;写成顶层title会让宿主回落成包名(踩过的坑,见packages/dsh-plugin-session-cost/README.md)。
本地以绝对路径装进 profile 时,profile 用 pnpm 的
link:协议,插件运行时的真实路径仍在仓库里, 因此插件不应该有静态裸导入(@deepseek-ai/*在 profile 里、从仓库路径解析不到)。 需要 schema 之类的包时用 best-effort 动态导入,解析不到也要能工作。
发布到 npm
npm login # 首次
pnpm -C packages/dsh-plugin-session-cost publish --access public
# 或一次发布所有版本号尚未发布过的包:
pnpm -r publish --access public
打 tag 走 CI(.github/workflows/release.yml):仓库需要配置 secret NPM_TOKEN(npmjs 的 Automation token)。
git tag v1.0.0 && git push origin v1.0.0
同一版本号不能重复发布:改包内 package.json 的 version 后再发。
发布时会遇到的一步:staged publishing
npm 现在对 token 发布启用了 staged publishing:
CI 用 NPM_TOKEN 提交后,版本会先进暂存区(新包名会先出现一个公共占位版本 0.0.0-stage),
需要维护者用 2FA 批准才会正式上架。批准方式:
- 网页:npmjs.com → 头像 → Packages → Staged Packages → 找到版本 → Approve
- 命令行(npm ≥ 11.15):
npm stage list→npm stage approve <stage-id>(会要求 2FA)
批准前 npm view <包名> version 只会看到 0.0.0-stage,批准后才变成真实版本。
发布记录
| 版本 | 时间 | 说明 |
|---|---|---|
dsh-plugin-session-cost@1.0.0 | 2026-10-10 | 首个版本:输入框下方实时金额徽标 + 点击弹框明细 + 设置页「会话消费」面板(含已归档会话) |
dsh-plugin-session-cost@1.1.0 | 2026-10-10 | 新增 agent 工具 session_cost(同一行内注册,与路由共用同一份取数与定价);取数拆成「只读当前会话」与「整个语料」两条路径(徽标不再折叠全部会话);排序按钮选中态;共 64 项单测。线上 tarball 与仓库逐字节一致 |
隐私与产物
verify/summary.json是本机抓取的端点快照,包含真实会话标题与金额:已被.gitignore排除, 也不在 npm 包的files白名单里。- 仓库内的
verify/summary.sample.json是匿名样例,供渲染测试在无本机数据时使用。
License
Related plugins
DeepSeek-Balance-Whale-Widget
meteornox/deepseek-balance-whale-widget
dsh-context
bowenliang123/dsh-context
dsh-cost-meter
han-1413141/dsh-cost-meter
dsh-damage-pulse
wssfk12138/dsh-damage-pulse