zz-zhi54/dsh-plugins--packages-session-cost ↗★ 2

dsh-session-cost-plugin

Session model cost pill in the DeepSeek Harness Web composer 适合需要精细化监控和统计不同模型消费成本的Web端用户。

パッケージ
dsh-session-cost-plugin
互換性
未検証
Harness ピア範囲
0.2.0-rc.1
バージョン
0.2.0-rc.1.1
ライセンス
Apache-2.0
最終更新
2026/09/29

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zz-zhi54/dsh-plugins#4df357a644c30e43cca3b0911780ee7f24ddfd7c&path:packages/session-cost

ドキュメント

README 全文を読む ↗

dsh-session-cost-plugin

项目选择、统一安装入口和仓库结构见根目录 README。

非官方社区插件。

在 DSH Web 输入框下方的 Token 统计行显示当前会话费用。费用使用模型 provider 报告的每次请求 usage,并按 provider/model 分组;价格来自 @earendil-works/pi-ai 内置模型目录,原生显示 USD。

功能

  • 位置:注册独立的 conversation.composer.dock 条目 session-cost(order: 10),在 DSH 内置 stats(order: 0)之后显示 费用 $0.0124;不接管或替换内置统计单元。
  • 交互:点击费用打开 Token 费用统计对话框;点击其它区域按 DSH 官方统计窗口的行为自动关闭;每个 provider/model 行显示 Token 总数和费用,点击后展开 input、output、cache read、cache write 与请求次数。
  • 数据来源:Host 通过 sessionProjections 增量折叠 durable events,不新增本插件持久化文件;读取结果仍按 Session seq 做进程内缓存。
  • 请求覆盖:成功的 assistant/message 和没有 surface message 的 assistant/attempt 都计入。重试 attempt 从其 durable stream 的最后一条 provider usage 读取,不把流式中间 usage 重复相加。
  • 未知价格:模型不在 pi-ai 内置目录时显示 未知,不会猜测价格;已知模型的费用仍会显示,并标记未知部分。
  • 与 Codex 用量插件并装:三者都位于 conversation.composer.dock;DSH 内置 stats 保持 order: 0,本插件使用独立的 session-cost(order: 10),Codex 用量插件使用 codex-usage(order: 20),按当前 DSH Slot 契约可同时安装。

截图与演示

费用 pill 收起态:

Session 费用收起态

点击费用后的对话框收起态:

Session 费用明细收起态

展开 provider/model 后的 Token 费用明细:

Session 费用明细展开态

安装

直接从 GitHub 安装当前分支:

dsh plugin --profile web add 'github:zz-zhi54/dsh-plugins#path:packages/session-cost'

固定 release 时,将路径替换为 #v&path:packages/session-cost。

该 package 的 patch 插入一个 Profile 条目:

  • session-cost:本插件的 Host 路由和 Web 客户端。

卸载:

dsh plugin --profile web remove dsh-session-cost-plugin

验证

pnpm --filter dsh-session-cost-plugin run check
pnpm --filter dsh-session-cost-plugin run test
dsh --profile web --dump-config

--dump-config 应出现 session-cost。需要至少有一次带 provider usage 的模型请求后,费用 pill 才会出现。

限制

  • 费用是基于当前 pi-ai 价格目录的估算;价格目录更新后,重新读取会按新价格计算历史 usage。
  • provider 没有报告 usage 的请求不会被计费;没有可验证价格的 provider/model 不会被赋予默认价格。
  • 本插件使用独立的 session-cost Slot(order: 10),不会替换 DSH 的 stats;它应与对应 DSH Web 版本一起使用。停止或卸载插件只会移除费用 Slot 注册和 Host 路由,不影响内置统计。
  • @earendil-works/pi-ai@0.85.1 要求 Node >=22.19.0;使用本插件时请使用满足该要求的 Node 版本。

实现约束

  • src/cost.mjs 只读取 durable event 的标量字段,调用 getBuiltinModel() / calculateCost(),不保存 Session 或模型对象。
  • src/projection.mjs 注册 host-only 的 sessionCost 投影,保存归一化 usage 与路由标量,避免新增生产代码调用已弃用的 Session 同步事件读取 API;保留逐请求 usage 以支持分层价格和价格目录变化后的重算。
  • src/host.mjs 注册 GET /api/session-cost?sessionId=,响应只包含当前会话的投影数据,不返回原始事件;Host 以 Session seq 缓存同一会话的结果。
  • src/client.js 是 DSH Web 使用的 classic-script 模块,必须保留 window.__ModuleLoader__.load({ id, factory }) 与 require('react') 的结构;样式全部内联,不向 document 注入全局 CSS。