🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话费用面板 4478sc/DSH_CostLive

DeepSeek Harness
4478sc11 天前有提交已提供中文文档扫描:含敏感能力

实时查看各会话花费与缓存命中,按模型峰谷价折算人民币

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 4478sc/DSH_CostLive
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 11 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 34 处,展示前 29 条)
  • 写入本地文件
    src/cli.mjs:174
    mkdirSync(dirname(target), { recursive: true });
  • 写入本地文件
    src/cli.mjs:175
    writeFileSync(target, content, 'utf8');
  • 读取本地文件
    src/cli.mjs:245
    if (!existsSync(source.home)) {
  • 读取本地文件
    src/pricing.mjs:168
    return normalizePricing(JSON.parse(readFileSync(path, 'utf8')));
  • 读取本地文件
    src/live.mjs:34
    const CLIENT_SOURCE = readFileSync(new URL('./live-client.js', import.meta.url), 'utf8');
  • 读取本地文件
    src/live.mjs:160
    if (!existsSync(source.home)) {
  • 写入本地文件
    src/live.mjs:351
    mkdirSync(dirname(target), { recursive: true });
  • 写入本地文件
    src/live.mjs:354
    writeFileSync(temporary, html, 'utf8');
  • 写入本地文件
    src/live.mjs:356
    renameSync(temporary, target);
  • 写入本地文件
    src/live.mjs:360
    writeFileSync(target, html, 'utf8');
  • 删除本地文件
    src/live.mjs:362
    unlinkSync(temporary);
  • 执行外部命令固定命令
    src/live-server.mjs:56
    if (process.platform === 'win32') child = spawn('cmd', ['/c', 'start', '', url], options);
  • 执行外部命令固定命令
    src/live-server.mjs:57
    else if (process.platform === 'darwin') child = spawn('open', [url], options);
  • 执行外部命令固定命令
    src/live-server.mjs:58
    else child = spawn('xdg-open', [url], options);
  • 读取本地文件
    src/sessions.mjs:46
    if (!existsSync(file)) return null;
  • 读取本地文件
    src/sessions.mjs:48
    const parsed = JSON.parse(readFileSync(file, 'utf8'));
  • 读取本地文件
    src/sessions.mjs:71
    if (!existsSync(root)) return [];
  • 读取本地文件
    src/sessions.mjs:73
    for (const workspaceDir of readdirSync(root, { withFileTypes: true })) {
  • 读取本地文件
    src/sessions.mjs:77
    for (const sessionDir of readdirSync(wsPath, { withFileTypes: true })) {
  • 读取本地文件
    src/sessions.mjs:81
    if (!existsSync(logPath)) continue;
  • 读取本地文件
    src/opencode-usage.mjs:245
    if (!existsSync(file)) return { records: [], file, missing: true };
  • 读取本地文件
    src/opencode-usage.mjs:246
    const info = statSync(file);
  • 读取本地文件
    src/opencode-usage.mjs:251
    const text = readFileSync(file, 'utf8');
  • 读取本地文件
    src/opencode-usage.mjs:312
    if (!existsSync(file)) return fallback;
  • 读取本地文件
    src/opencode-usage.mjs:315
    parsed = JSON.parse(readFileSync(file, 'utf8'));
  • 读取密钥环境变量
    src/opencode-usage.mjs:334
    const env = process.env.OPENCODE_GO_API_KEY;
  • 读取本地文件
    src/opencode-usage.mjs:337
    if (!file || !existsSync(file)) return null;
  • 读取本地文件
    src/sources.mjs:58
    parsed = JSON.parse(readFileSync(file, 'utf8'));
  • 发起网络请求
    src/live-client.js:450
    .fetch(url, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
DSH_CostLive 给 DeepSeek Harness(DSH)会话做的本地费用实时面板:每 20 秒重新扫描会话日志,按模型、按 token 桶(未缓存输入 / 输出 / 缓存写 / 缓存读)计价,在浏览器里显示人民币花费、缓存命中、运行中会话与历史明细。 实时费用面板(演示数据) 截图由仓库自带的合成数据生成(tools/make-demo-home.mjs),不含任何真实会话内容。 这是什么 DSH 会把每个会话的完整事件流写进 ~/.dsh/sessions/ 下的 zstd 日志,但界面只显示 token 总量,不显示金额,也没有跨会话汇总。本项目补上这一块: - 零依赖:只用 Node.js 标准库(node:zlib 的 zstd、node:http),没有 npm install 步骤。 - 只读:只读取会话日志与投影缓存,不写入 DSH 数据,不改配置。 - 本地:默认只监听 127.0.0.1,页面无鉴权,也不会把数据发到任何外部服务。 - 可核对:--verify 能与 DSH 自己的 tokenUsage 投影逐会话对账;计价按事件重算,同一步骤的流式样本会被最终样本替换,重试算独立计费样本。
展开完整文档(README 剩余 1 节)
DSH_CostLive

给 DeepSeek Harness(DSH)会话做的本地费用实时面板:每 20 秒重新扫描会话日志,按模型、按 token 桶(未缓存输入 / 输出 / 缓存写 / 缓存读)计价,在浏览器里显示人民币花费、缓存命中、运行中会话与历史明细。

实时费用面板(演示数据)

截图由仓库自带的合成数据生成(tools/make-demo-home.mjs),不含任何真实会话内容。

这是什么

DSH 会把每个会话的完整事件流写进 ~/.dsh/sessions/ 下的 zstd 日志,但界面只显示 token 总量,不显示金额,也没有跨会话汇总。本项目补上这一块:

- 零依赖:只用 Node.js 标准库(node:zlib 的 zstd、node:http),没有 npm install 步骤。
- 只读:只读取会话日志与投影缓存,不写入 DSH 数据,不改配置。
- 本地:默认只监听 127.0.0.1,页面无鉴权,也不会把数据发到任何外部服务。
- 可核对:--verify 能与 DSH 自己的 tokenUsage 投影逐会话对账;计价按事件重算,同一步骤的流式样本会被最终样本替换,重试算独立计费样本。

它同时包含一个命令行工具(dsh-cost)和一个本地网页(dsh-cost-live),网页复用报告的同一套采集 / 计价 / 渲染代码,所以页面数字与命令行完全一致。

功能

| 能力 | 说明 |
| 20 秒实时刷新 | 浏览器轮询 /api/fragment,只替换报表主体,滚动位置与展开行不丢 |
| 四档时间范围 | All time / Last 30 days / Last 7 days / Today,卡片、模型表、明细同步重算,选择持久化 |
| 运行中优先 | 运行中主会话 → 运行中子代理 → 已完成(费用降序);运行中行高亮 + 脉冲标签 |
| 前 5 行折叠 | 首屏只显示 5 条,其余「显示更多(还有 N 个)」,展开状态在刷新与筛选间保持 |
| 分模型汇总 | 每个 provider/model 的四桶 token、费用、占比、会话数;未定价模型单独标注 |
| 峰谷两档价 | deepseek-v4.1-flash 按每条采样自己的时间戳判定工作日峰时/谷时,跨时段会话分段计价 |
| 缓存指标 | 缓存命中率、缓存读取量、按「输入价 − 缓存读价」估算的缓存节省 |
| 三种模式 | 本地 HTTP 服务(推荐)、file:/// + 后台重建、一次性静态快照 |
| 只读 API | /api/fragment、/api/report、/api/health,方便脚本或其他面板复用 |
| 报告导出 | HTML / JSON / CSV;终端表格视图;单会话按轮次、按步骤明细 |

快速开始

要求 Node.js ≥ 22.15(需要 node:zlib 的 zstd 支持)。无需安装依赖。

git clone https://github.com/4478sc/DSH_CostLive.git
cd DSH_CostLive

1) 想先看效果:生成 10 个虚构会话(写进 demo-home/,可随时删除)
node tools/make-demo-home.mjs
node bin/dsh-cost-live.mjs --home demo-home

2) 看自己的真实数据:默认读 $DSH_HOME,其次 ~/.dsh
node bin/dsh-cost-live.mjs

浏览器打开控制台打印的地址(默认 <http://127.0.0.1:4173/>),Ctrl+C 停止。

Windows 上也可以直接双击:

| 文件 | 作用 |
| dsh-cost-live.cmd | 本地 HTTP 服务(推荐,页面原地刷新) |
| dsh-cost-live-watch.cmd | 后台每 20 秒重建独立 HTML,供 file:/// 打开 |

macOS / Linux:命令相同,.cmd 换成 node bin/dsh-cost-live.mjs 即可。

三种运行模式

| 模式 | 命令 | 行为 | 适合 |
| 本地 HTTP 服务(推荐) | node bin/dsh-cost-live.mjs | 页面每 20 秒拉 /api/fragment 原地更新,不丢滚动/展开状态 | 长期开着看 |
| file:/// + 后台重建 | node bin/dsh-cost-live.mjs --watch | 每 20 秒原子重写 out/dsh-cost-live.html,页面自动重载 | 只能/只想用 file:/// |
| 一次性快照 | node bin/dsh-cost-live.mjs --once --out out/snapshot.html | 生成一份静态页面后退出 | 归档、发给别人 |

常用参数:

node bin/dsh-cost-live.mjs --port 8080 --interval 10 # 换端口、10 秒刷新
node bin/dsh-cost-live.mjs --model deepseek --no-open # 只看 DeepSeek 会话
node bin/dsh-cost-live.mjs --top 10 --all # 费用最高的 10 个(含无用量会话)
node bin/dsh-cost-live.mjs --host 0.0.0.0 # 局域网访问(无鉴权,谨慎)

端口被占用会自动 +1;--interval 最小 5 秒。完整选项见 LIVE.md。

页面怎么用

- 时间范围:顶部四档按钮。切档时重算四张卡片与模型汇总,并对筛选后的明细重新分页;缺少 createdAt 的历史会话永不隐藏(宁可多显示,不能藏真实花费)。
- 会话明细:默认 5 条。点击任意行展开该会话的模型明细、按轮次小计与每个计费采样。
- 右下角浮窗:连接状态、数据生成时间、下次刷新倒计时、总费用 / 会话数 / 总 Token;按钮「刷新 / 暂停」,快捷键 R 刷新、P 暂停。标签页在后台时倒计时暂停。
- 状态含义:绿色「实时」、灰色「已暂停」、红色「连接中断」、琥珀色「快照未更新」。
- 浏览器宽度 ≤ 820px 时隐藏时间范围条;≤ 640px 时浮窗改为通栏。

数据与计价

数据来源

~/.dsh/sessions/<编码后的工作区>/<session-id>/session.v4.jsonl.zstd │ 多 frame zstd(每次追加一帧)→ 逐帧解压 → JSONL 事件流 ▼ session 头 / session/title / request.header / assistant.message / llm.retry-started ... │ fold:同一步骤后到的样本替换流式样本,重试独立计费 ▼ 四桶用量 + 逐样本 provider/model/time → 按模型价表计价(micro-CNY 取整)

- DSH 数据目录优先级:--home → $DSH_HOME → ~/.dsh。
- 子代理是独立会话(独立日志、独立计价),面板会打「子代理」标签并排在主会话之后。
- 投影缓存 ~/.dsh/storages/session_projcache/sessions/<id>.json 只用于运行状态、标题与 --verify 对账;金额始终由日志重算。

价格表

默认价表在 config/pricing.json,单位 CNY / 1,000,000 tokens:

| 模型 | 输入(未缓存) | 输出 | 缓存写 | 缓存读 |
| claude-sonnet-5-5 | 2.3 | 11.5 | 2.875 | 0.23 |
| deepseek-v4.1-flash(谷值) | 0.15 | 0.6 | 0.15 | 0.003 |
| deepseek-v4.1-flash(峰值) | 0.3 | 1.2 | 0.3 | 0.006 |

cost = (未缓存输入 × input + 输出 × output + 缓存写 × cacheWrite + 缓存读 × cacheRead) / 1e6

- 两档价按每条采样自己的时间戳选档,跨峰谷的会话两段分别计价;没有时间戳按谷值(不会虚高)。
- 默认峰时:Asia/Shanghai 周一至周五 09:00,12:00)、[14:00,18:00)(左闭右开),周末与 peakHours.holidays 中的日期按谷值。
- cacheWrite 价对 DeepSeek 等于 input(若上报缓存写,按未命中输入计);但 deepseek-v4.1-flash 等模型没有缓存写,cacheWriteTokens 恒为 0,该项价格乘 0,不会与 input 重复计入总价。
- 未定价模型仍统计 token,费用记 0,并在页面顶部与 JSON 的 unpricedModels 中列出。
- 费用是按配置单价的估算,不含批处理折扣、阶梯价、退款,不是账单凭证。

自定义价表:编辑 config/pricing.json,或 --pricing my-pricing.json。模型匹配依次为精确 id → 去 provider 前缀 → 去日期后缀 → 别名 → * 最长前缀通配。加模型只需在 models 里加条目,无需改代码。

API

服务模式提供三个只读接口:

| 路径 | 内容 |
| GET /api/fragment | 最新报表 HTML 片段 + generatedAt / summary / intervalMs / stale |
| GET /api/report | 与 dsh-cost report --format json 相同的完整 JSON |
| GET /api/health | 存活状态、扫描次数、耗时、最近错误、当前汇总 |

Invoke-RestMethod http://127.0.0.1:4173/api/health | Format-List
(Invoke-RestMethod http://127.0.0.1:4173/api/report).summary

命令行(同一套内核)

node bin/dsh-cost.mjs # 会话总览
node bin/dsh-cost.mjs models # 打印价表(含峰时与别名)
node bin/dsh-cost.mjs session <id|前缀> --steps # 单会话明细
node bin/dsh-cost.mjs --model deepseek # 按模型过滤
node bin/dsh-cost.mjs --since 2026-10-01 --priced-only
node bin/dsh-cost.mjs report --format html --out out/report.html
node bin/dsh-cost.mjs report --format csv --out out/report.csvbash
node bin/dsh-cost.mjs --json # 机器可读
node bin/dsh-cost.mjs --verify # 与 DSH tokenUsage 投影对账

| 选项 | 说明 |
| --home <dir> / --pricing <file> | 数据目录 / 自定义价表 |
| --workspace <text> / --model <text> | 按工作区目录名 / 模型子串过滤 |
| --since / --until | 会话创建时间范围(YYYY-MM-DD 或 ISO) |
| --top <n> / --priced-only / --all | 费用 Top N / 仅计费会话 / 含无用量会话 |
| --format table\|json\|csv\|html / --out | 输出格式与文件 |
| --verify / --verbose | 投影校验 / stderr 警告 |

退出码:0 成功,1 无数据或运行失败,2 参数错误。

项目结构 text DSH_CostLive/ ├─ bin/ │ ├─ dsh-cost.mjs # CLI 入口 │ └─ dsh-cost-live.mjs # 实时面板入口(server / --watch / --once) ├─ config/pricing.json # 价表(谷/峰/别名) ├─ src/ │ ├─ pricing.mjs # 价表归一、模型匹配、峰谷判定、micro-CNY 计价 │ ├─ engine.mjs # 事件流 fold → 计费采样与四桶聚合 │ ├─ sessions.mjs # 会话发现、日志读取、投影缓存 │ ├─ zstd.mjs # 多 frame zstd 解压(Node 只解第一帧) │ ├─ activity.mjs # 运行中/子代理判定与排序 │ ├─ time-range.mjs # 四档筛选 + 浏览器运行时源码(Node 与页面共用) │ ├─ report-data.mjs # 会话记录、数据集、CSV、聚合 │ ├─ report-text.mjs # 终端表格 / 明细 / 价格表 │ ├─ report-html.mjs # 自包含 HTML 报告(CSS/JS 内联) │ ├─ live.mjs # 实时页文档 / 片段 / 原子写入 │ ├─ live-server.mjs # 本地 HTTP 服务与三个 API │ └─ live-client.js # 浏览器端:轮询、折叠、范围、滚动恢复 ├─ test/ # node:test,7 个文件 54 项 ├─ tools/make-demo-home.mjs # 合成演示数据生成器 ├─ docs/ # 架构、DSH token 口径调研、开发笔记 ├─ assets/preview.png # 截图(演示数据) ├─ LIVE.md # 实时面板完整使用说明 ├─ dsh-cost-live.cmd # Windows 启动器:HTTP 服务 └─ dsh-cost-live-watch.cmd # Windows 启动器:后台重建 HTML

没有运行时依赖,所以没有 package-lock.json / node_modules。

测试 powershell
npm test

| 文件 | 项数 | 覆盖 |
| pricing.test.mjs | 11 | 价格归一、别名、通配、峰谷判定、micro-CNY 精度、内置表一致性 |
| engine.test.mjs | 8 | 流式样本替换、重试、四桶归并、零用量、模型切换 |
| activity.test.mjs | 7 | openStep 权威性、turnBoundary 回退、子代理双通道识别、三桶稳定排序 |
| time-range.test.mjs | 18 | 四档边界、缺失日期、聚合算术、浏览器运行时、DOM 事件、存储容错、HTML 集成 |
| live.test.mjs | 6 | 采集/过滤、模板拆分、原子写入、HTTP API |
| sessions.test.mjs | 2 | 会话发现与读取 |
| zstd.test.mjs | 2 | 多 frame 解压、非压缩 JSONL 兜底 |
| 合计 | 54 | |

CI 会在 Node 22 与 Node 24 上跑同一套测试(.github/workflows/test.yml)。
Node 22 的测试进程隔离开关仍叫 --experimental-test-isolation,所以那边执行 npm run test:node22。

开发与维护

- 改价格:只动 config/pricing.json;改峰时窗口同理,改完跑 npm test。
- 加时间档 / 改边界语义:只改 src/time-range.mjs,Node 测试与浏览器共用同一份源码,不会出现「服务端一套、前端另一套」。
- 改页面样式:src/report-html.mjs(报告)与 src/live.mjs 里的 LIVE_CSS / live-client.js(浮窗)。
- 两条硬约束:先筛选、后分页;逐采样判峰谷。
- 更细的模块职责、数据流与扩展点见 [docs/ARCHITECTURE.md; DSH token 统计口径见 docs/DSH-TOKEN-ACCOUNTING.md;踩坑记录与调试命令见 docs/DEVELOPMENT.md。

隐私与安全

- 只读本地文件;服务默认绑定 127.0.0.1,只提供页面与 JSON,不执行请求里的命令。
- 页面会显示会话标题与工作区路径。使用 --host 0.0.0.0 时页面没有鉴权,仅限可信网络。
- demo-home/ 与 out/ 都是生成物,已在 .gitignore 中;不要把真实会话日志或报告提交到仓库。

常见问题

| 现象 | 处理 |
| 双击后窗口一闪而过 / 提示 Node not found | 安装 Node.js ≥ 22.15,确认 node -v 可用 |
| 页面「连接中断」 | 服务已停止;重新启动,再刷新页面 |
| 页面「已暂停 / 快照未更新」 | 后台重建任务没在跑;启动 dsh-cost-live-watch.cmd 或在浮窗点「继续」 |
| 0 个会话 | 检查 --home / $DSH_HOME / ~/.dsh/sessions 是否有 session.v4.jsonl.zstd |
| 金额和 DSH 对不上 | 运行 node bin/dsh-cost.mjs --verify;运行中的会话投影可能滞后,稍后重跑 |
| 峰时价格没生效 | 用 --since 检查采样时间是否落在工作日峰时窗口;12:00 / 18:00 整已是谷值 |

更多排障见 LIVE.md#故障排查。

文档索引

| 文档 | 内容 |
| LIVE.md | 实时面板:三种模式、页面行为、API、全部参数、排障、安全 |
| docs/ARCHITECTURE.md | 数据流、模块职责、关键不变量、扩展点 |
| docs/DSH-TOKEN-ACCOUNTING.md | DSH 如何统计 token(事件、投影、替换/重试规则) |
| docs/DEVELOPMENT.md | 开发笔记:坑位、调试命令、验收清单、后续想法 |

License

MIT © 2026 4478sc
预览分享卡片长什么样 ↓4478sc/DSH_CostLive
分享 · DeepSeek Harness Hub
4478sc/DSH_CostLive

实时查看各会话花费与缓存命中,按模型峰谷价折算人民币

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部