READMESource: main@1c31c2b9
DS时段费用参考
包名:
dsh-cost-meter(npm 包名不允许中文;插件列表里的显示名取自locale/*.json的meta.title,中文环境显示「DS时段费用参考」,英文环境显示「DS Pricing & Cost」)
在 Harness 输入框下方的统计条里,按 Reasonix Studio 的样式补上 平峰/高峰 + 本会话费用 + 本轮费用 + DeepSeek 余额。
它显示什么

— tok/s 缓存 23% ◯ 上下文 1% 平峰 45小时 · 本会话 ¥0.01 · 本轮 ¥0.01 · 余额 ¥15.65
└────────── Harness 自带 ─────────┘ └────────────── 本插件 ──────────────┘
平峰(绿)/高峰(琥珀):当前计费时段。45小时:距下次切换的时间,只按小时(不足 1 小时显示分钟,不出现"天")。本会话:整段会话的 token 按当前时段单价折算。本轮:最近一个已完成 Turn 的精确用量,按该轮发生时段的单价折算。余额:DeepSeek 账户余额(充值 + 赠送)。只在已登录 DeepSeek 账号时出现。
点击展开的明细卡
鼠标悬浮不再弹原生提示;点击整格在条上方弹出一张卡片(样式对齐自带的统计弹窗),再点或按 Esc / 点外部收起:
▤ 费用参考
──────────────────────────────────────────
本会话 ¥1.74
本轮 ¥0.20
余额 ¥15.07
充值 ¥10.26 · 赠送 ¥4.81
──────────────────────────────────────────
平峰 45小时5分后转高峰
打开卡片会顺带刷新一次余额。
余额
两条通道,先客户端、后 Host,任一成功即可:
- 客户端 Remote:
ctx.remote.account.getBalance(先getState判断登录)。Cordis 4 按inject门禁服务访问,所以客户端半身声明了inject: ['slots','locale','remote'];没声明时读ctx.remote会直接抛cannot get property "remote" without inject。 - Host 回退路由:
GET /__dsh-cost-meter/balance,由 Host 半身注册,只接受 loopback 请求,返回账户服务自己的余额 JSON(ctx.deepseekAccount,同样要inject: ['webServer','deepseekAccount'])。插件不存、不转发任何凭证。
- 刷新:点一下整格手动刷新;另外每 5 分钟自动刷新一次(单次调用 8 秒超时,卡住的请求不会把这一格永远卡在加载态)。
- 展示:
余额 ¥15.65(充值 + 赠送的 CNY 合计,两位小数)。 - 读不到时不隐藏,而是显示状态,鼠标悬停给出原因:
| 条上显示 | 含义 |
|---|---|
余额 ¥15.65 |
正常 |
余额 未登录 |
DeepSeek 账号未登录(或 getBalance 返回 null) |
余额 — |
读取失败,悬停看 code(如 gateway/forbidden、http-401、timeout) |
余额 不可用 |
两条通道都不可用(悬停看 no-account-remote / no-account-service) |
样式
向自带的统计条看齐,而不是另起一套:
| 维度 | 取值 |
|---|---|
| 字号 / 行高 | 12px / 16px(常量 FONT_SIZE,嫌小改一行) |
| 分隔 | 与自带格一致的 ·,组内 4px、组间 6px |
| 颜色 | 标签 --dsw-alias-label-secondary,金额 --dsw-alias-label-primary,时段词用 success/warn token |
| 数字 | tabular-nums,宽度不跳动 |
| 交互 | 非按钮,只有 title 提示,不抢焦点 |
位置
- 槽位:
conversation.composer.dock(输入框下方那条)。 - 注册 id
cost-meter、order: 2:新增一格,不替换自带的activity(tok/s)与usage(缓存命中 + 上下文环)。 - 想换顺序改
order;想替换自带格就复用它的 id 并声明更低priority。
数据与口径
- 时段:北京时间(UTC+8)工作日
09:00–12:00、14:00–18:00为高峰;其余时间、周末、中国法定节假日全天为空闲(平峰),价格为高峰价的 50%。 来源:https://api-docs.deepseek.com/zh-cn/quick_start/pricing。 - 法定节假日:
client.js顶部HOLIDAY_RANGES,目前内置 2026 年(国办发明电〔2025〕7号)。年份未覆盖时按普通工作日判断,跨年前记得补表。 - 会话用量:会话投影
tokenUsage的四个桶 ——uncachedInputTokens、cacheReadTokens、cacheWriteTokens、outputTokens。 缓存命中与未命中价差 50 倍(flash:0.02 vs 1 元/百万),必须分桶。 - 本轮用量:
useChat选择器读最新 Turn 的turn-tail节点tokenUsage(选择器返回数字,流式增量不会触发重渲染)。 - 价格表:
TIERS,单位「元 / 百万 tokens」,默认TIER = 'flash'。
| 元/百万 tokens | flash 空闲 | flash 高峰 | pro 空闲 | pro 高峰 |
|---|---|---|---|---|
| 输入(缓存命中) | 0.02 | 0.04 | 0.15 | 0.30 |
| 输入(未命中) | 1 | 2 | 4.5 | 9 |
| 输出 | 4 | 8 | 13.5 | 27 |
已知限制
- 本会话是估算:投影是全日志聚合、不带时间维,整段会话按"当前时段"单价折算。逐请求按时段计价需要 Host 侧按事件时间折叠。
- 本轮依赖 Chat 视图已物化:切到轨迹视图等 Chat 未激活时,
本轮会暂时隐藏。 - 不识别渠道:模型档位/provider 不在标准 props 里;免费或第三方渠道(如 Kilo 免费池)实际不按官方价计费,这里给的是"官方价折算参考"。
- 未计入网页搜索/抓取调用费(2026-11-01 起按次计费)。
- 视觉呈现未在当前环境截图验证(无浏览器控制)。
文件
| 文件 | 作用 |
|---|---|
package.json |
bundle 与 dsh.client 声明 |
cordis.patch.yml |
插入 Host 行 cost-meter |
index.js |
Host 半身:注册 GET /__dsh-cost-meter/balance(loopback-only),转发 ctx.deepseekAccount 的余额 |
client.js |
全部逻辑:时段、价目、本轮用量、余额双通道、渲染、locale |
locale/{zh,en}.json |
插件管理页的标题与描述 |
icon.svg |
插件图标 |
scripts/market.mjs |
生成插件市场索引 market.json(format 1) |
安装 / 移除
命令行安装
源码安装(无需发布 npm):
dsh plugin --profile web add github:codeora-Kayson/dsh-cost-meter
发布到 npm 之后可以用包名安装(也只有这种形式会出现在 DSH 内置的「插件中心」):
dsh plugin --profile web add dsh-cost-meter
桌面版(
desktop配置档)由 Electron 独占,命令行会被拒绝,请走界面:设置 → 插件 → 粘贴仓库地址 → 安装 → 刷新页面。
本地开发
本仓库本身就是可安装的 bundle(package.json 的 dsh.bundle.patch + dsh.client)。开发时用本地目录装成软链,改完刷新页面即可,不必重装:
plugin_manager install_bundle target: <本目录绝对路径>
plugin_manager remove_bundle target: dsh-cost-meter
发布到插件市场
DSH 目前没有官方集中式插件市场:所谓"市场"就是一份 format 1 的 JSON 索引,用户在 插件 → 发现 → 添加索引源 里填它的 URL。所以"提交到市场"= 把这份索引发布出去,别人添加即可。
本仓库自带生成脚本:
# 1) 先把 scripts/market.mjs 顶部的 AUTHOR / REPO 改成真实值(只需一次)
# 2) 提交并推送要发布的版本
# 3) 生成索引(脚本会写入提交 SHA 和发布时间)
node scripts/market.mjs
# 4) 提交 market.json 并推送
生成的索引地址:
https://raw.githubusercontent.com/codeora-Kayson/dsh-cost-meter/main/market.json
接入方式:
- 侧栏 插件 → 实验性插件旁的 更多 → 启用 自定义插件市场(实验特性,默认关闭)。
- 发现 → 添加索引源 → 粘贴上面的 URL。
- 出现「DS时段费用参考」卡片,点安装即可。
注意事项:
- 索引 URL 必须直接返回 JSON(DSH 拒绝重定向,别用会 302 的地址)。
- 每个版本绑定固定提交(
source.commit);发新版要重跑脚本、重新提交market.json。 - 不经过市场也能装:把仓库地址粘到 插件 → 安装 即可。
- 想进别人的市场:把同样一段
plugins[]条目提 PR 到那个市场的索引仓库。
No comments yet. Be the first to write one.