在输入框下实时显示剩余上下文与本次会话花费
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Lostlanterns/dsh-token-price该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
装得上吗[实装验证]—
曾在 dsh 0.2.1-rc.5 下真实安装成功,但当前 dsh 已更新至 0.2.2-rc.1,本站尚未在新版下复验
L4 · 真实安装等级说明 →数据截至 2026/11/02·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 实时显示剩余上下文
- 展示官方模型定价
- 计算单次会话费用
DeepSeek Harness 插件:输入框下方实时显示剩余上下文、官方模型定价和单次会话费用。
README
由 DeepSeek 最新模型翻译生成dsh-token-price
DeepSeek Harness(DSH)浏览器插件:在输入框下方常驻显示上下文剩余 token、当前所选模型及其官方 API 牌价,以及本会话费用估算。
一次点击展开明细:面板是绝对定位的悬浮层,向上覆盖在对话区之上,不会把输入框顶起来,带位移/缩放/透明度过渡动画;展开后点击面板以外的任何地方即收起。
牌价自动跟随官方价格页(Host 半边取数,失败退回内置表并标注原因)。
上下文与用量数据全部来自会话投影,不额外发起 RPC,不缓存业务数据。
界面上的样子
常驻在输入框下方(conversation.composer.dock,排在官方统计胶囊之后):
◔ 剩余 976K / 1M(2.4%) · deepseek-flash · 入 ¥2 · 缓存 ¥0.04 · 出 ¥8 /M(高峰) · 本会话 ≈ ¥0.0412
点击这一行,明细面板悬浮在按钮上方,覆盖住对话区(不挤占布局):
┌──────────────────────────────────────────────────────────────┐
展开完整文档(README 剩余 1 节)
dsh-token-price
DeepSeek Harness(DSH)浏览器插件:在输入框下方常驻显示上下文剩余 token、当前所选模型及其官方 API 牌价,以及本会话费用估算。
一次点击展开明细:面板是绝对定位的悬浮层,向上覆盖在对话区之上,不会把输入框顶起来,带位移/缩放/透明度过渡动画;展开后点击面板以外的任何地方即收起。
牌价自动跟随官方价格页(Host 半边取数,失败退回内置表并标注原因)。
上下文与用量数据全部来自会话投影,不额外发起 RPC,不缓存业务数据。
界面上的样子
常驻在输入框下方(conversation.composer.dock,排在官方统计胶囊之后):
◔ 剩余 976K / 1M(2.4%) · deepseek-flash · 入 ¥2 · 缓存 ¥0.04 · 出 ¥8 /M(高峰) · 本会话 ≈ ¥0.0412
点击这一行,明细面板悬浮在按钮上方,覆盖住对话区(不挤占布局):
┌──────────────────────────────────────────────────────────────┐
│ 模型 deepseek · deepseek-flash(DeepSeek-V4.1-Flash)│ │ 上下文占用 已用 24.3K / 1M · 剩余 975.7K(2.4%) │ │ ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ 本会话累计用量 未缓存输入 12.1K · 缓存命中 96K · 缓存写入 0 · 输出 3.4K │ │ 费用估算 合计 ¥0.0412 │ │ 明细 未缓存 ¥0.0242 · 缓存写入 ¥0 · 缓存命中 ¥0.0038 · 输出 ¥0.0136 │ │ 当前单价 高峰时段:缓存命中 ¥0.04/M · 缓存未命中 ¥2/M · 输出 ¥8/M │ │ 价格取 DeepSeek 官方 API 牌价(元 / 百万 tokens)…… │ └──────────────────────────────────────────────────────────────┘
占用率 ≥ 70% 转黄、≥ 90% 转红,环形图标与进度条同步。
快速开始
方式 A:动态 Cordis 插件(推荐,本仓库已实测)
不需要安装任何东西,在当前 DSH 会话里就能跑起来:
1. 把 dynamic/cordis-define.json 的内容作为参数交给动态插件工具(等价于把 dynamic/token-price.client.js 全文放进 code.client),先 define;
2. 对返回的 pluginId / packageId 执行 run;
3. 这是客户端 Package,需要你在 Run 卡片上点一次「允许」;
4. 授权后输入框下方即出现这一行。
动态插件是进程内的:DSH 重启后消失,重新 define + run 即可。
方式 B:npm 包形态(持久化安装)
package/ 是一个遵循 DSH 客户端插件约定的包骨架:
package/
├── package.json # main + exports["./client"] + dsh.client 声明 ├── lib/index.js # 节点半边(空 apply) └── lib/client.js # 浏览器半边,__ModuleLoader__ 包装产物
DSH 的客户端模块系统会扫描宿主 Loader 的条目里声明了 dsh.client 的包,把 exports["./client"] 指向的产物作为浏览器插件装载。因此持久化安装需要:
1. 把 package/ 放到你的部署能解析到的位置(例如某次 npm install 的依赖里);
2. 在你的宿主 composition(或你自建的 agent preset)里把它加为一行 Loader 条目。
⚠️ 这两种挂载位置都与具体部署有关,本仓库没有对这一路径做端到端验证;方式 A 是已验证可用的。如果你在方式 B 上踩到坑,欢迎开 issue。
实现要点:悬浮、配色与左对齐
面板挂在 .dsh-tpw-float 上:position: absolute + bottom: calc(100% + 8px),以 dock 根节点(position: relative)为锚点向上展开,因此完全脱离文档流——展开时对话内容不会被挤动,输入框也不会位移。
- 配色:底色直接用输入框卡片的 var(--dsw-specific-input-major),描边色与投影也用同一套(--dsw-elevation-stroke-color + --dsw-elevation-soft),所以它和输入框是同一张面。
- 对齐与居中:四个信息胶囊包在一个 shrink-wrap 的 .dsh-tpw-cluster 里,外层行用 justify-content: center 把它居中;悬浮层是这个 cluster 的子节点,于是 left: 0 就等于第一个胶囊(也就是按钮)的左缘——居中与左对齐同时成立,不需要任何测量。
面板宽度取 max(100%, 420px)(100% = cluster 宽度 = 四个胶囊总宽),天然被输入框宽度兜住,不会溢出;--dsh-tpw-inset 则统一了行两侧留白与视口兜底。
- 层级:z-index: 30,足以压过对话区;容器链(composer stack / composer seat)均为 overflow: visible,不会被裁切。
- 高度:max-height: min(60vh, 420px) 并内部滚动,面板永远够不到视口顶部。
- 动画:面板常驻挂载,靠 opacity / transform / visibility 过渡进出场,收起时 pointer-events: none + aria-hidden="true"。
- 点击外部关闭:展开时挂载一张 position: fixed; inset: 0 的全视口透明遮罩(z-index: 1,低于悬浮层的 30),由它的 onClick 收起面板。点面板内部碰不到遮罩,所以不需要停止冒泡。
之所以用遮罩而不是全局监听:动态沙箱只暴露 ctx / React / host / styles / console,没有 document,挂不了 document 级监听;而遮罩本身就是本插件 Fiber 里的一个节点。
数据从哪来
| 显示项 | 来源 | 说明 |
| 上下文已用 / 窗口 / 剩余 | contextPressure 投影 | projectedTokens ?? pressureTokens 与 contextWindow;由 provider 上报的 usage 锚定 |
| 本会话累计四类 token | tokenUsage 投影 | uncachedInputTokens / cacheReadTokens / cacheWriteTokens / outputTokens,四桶互斥 |
| 当前模型 | modelSelection 投影 | 取 next ?? lastUsed 的 provider / model / reasoningEffort |
三个投影都通过 Slot 标准 props 里的 useProjection 读取,没有 Host RPC、没有 JSON.stringify 实时对象、也没有跨调用缓存。
UI 只用主题 CSS 变量(--dsw-alias-)着色,跟随明暗主题;样式通过
styles.insert(css) 注入并挂在本插件 Fiber 上,停止插件即回收。
牌价是唯一走网络的部分,由 Host 半边单独负责(见下一节)。
牌价自动同步
官方牌价不需要手动改代码:Host 半边会去官方「模型 & 价格」页取数。
插件启动 / 每 30 分钟 / 点面板里的「刷新」 │ host.call('pricing', { force? }) ▼ Host:6 小时缓存 → ctx.get('web').fetch(官方页面) → 解析表格 → 返回 JSON ▼ Client:优先用同步到的牌价,失败则回退到内置表,并在面板标注来源与同步时间
- 取数位置:Host(ctx.get('web').fetch)。客户端沙箱没有 fetch,也是为什么必须有 Host 半边。
- 缓存:同一 Package 内缓存 6 小时,并发调用合并成一次请求(pending)。
- 轮询:客户端每 30 分钟问一次;因为 Host 有 6 小时缓存,绝大多数时候只是读缓存,不会反复打官方页面。
- 手动刷新:面板底部有「刷新」按钮,强制绕过缓存。
- 解析失败即退回:官方页面改版导致表格认不出来时,解析器返回 null, Host 回 { ok:false, error:'unrecognised pricing table' },客户端继续用内置兜底表,面板如实写明「内置牌价 · 同步失败:…」——宁可显示旧价并标注,也不猜出一张错价表。
- 可验证:npm run check:pricing 会把 dynamic/plugin.host.js 当普通代码跑一遍,用 Node 的 fetch 顶替 DSH 的 web 服务,在真实官方页面上核对解析结果、缓存、强制刷新,以及「页面被换掉时是否优雅退化」。
⚠️ 这不是推送通知。DeepSeek 没有公开的牌价变更 webhook/RSS,所以「自动更新」的语义是主动拉取官方页面:启动时一次 + 每 30 分钟一次 + 手动刷新。
内置兜底牌价
单位:元 / 百万 tokens,[空闲时段, 高峰时段]。这份表只在同步失败时生效(离线、官方页面改版、web 服务不可用)。
| 模型 | 缓存命中 | 缓存未命中 | 输出 |
| deepseek-flash(DeepSeek-V4.1-Flash) | ¥0.02 / ¥0.04 | ¥1 / ¥2 | ¥4 / ¥8 |
| deepseek-v4-pro(DeepSeek-V4-Pro-0813) | ¥0.15 / ¥0.30 | ¥4.5 / ¥9 | ¥13.5 / ¥27 |
- deepseek-v4-flash、deepseek-v4-flash-vision-exp 作为别名按 Flash 计价。这条来自页面脚注的纯文字说明,没有机器可读形式,只能写死在 MODEL_ALIAS 里。
- 高峰期=北京时间周一至周五 9:00–12:00、14:00–18:00;法定节假日无法从运行时得知,按空闲价计。
- 缓存写入按「缓存未命中」价计费。
- 未收录的模型只在价格位置显示「牌价未收录」,token 部分照常显示。
- 来源:DeepSeek 模型 & 价格。
自定义
| 想改什么 | 改哪里 |
| 内置兜底牌价 / 新模型 | PRICE_TABLE、MODEL_ALIAS |
| 同步地址 | dynamic/plugin.host.js 的 PRICING_URL |
| 缓存时长 / 轮询间隔 | CACHE_MS(Host)、SYNC_INTERVAL_MS(Client) |
| 显示位置 | apply() 末尾 slots.inject(...) 的 Slot 名,例如换成 conversation.session.header.utilities |
| 排序 | slots.register 的 order(当前 20,排在官方 stats 之后) |
| 单元格 id | id(当前 dyn-token-price;重用官方 id 会顶掉官方那一格) |
| 配色 | CSS 里的 --dsw-alias- 变量与回退值 |
| 动画时长/曲线 | .dsh-tpw-panel 的 transition/transform |
| 悬浮层宽度、与按钮的间距 | .dsh-tpw-float 的 width、bottom |
改完 dynamic/token-price.client.js 后运行:
node scripts/build.mjs
会重新生成 dynamic/cordis-define.json(host + client 两半)与 package/lib/client.js,并对三者做语法校验。两个源文件都是唯一真源,产物逐字内嵌它们,不存在版本漂移。
npm run verify # 产物体检:真源一致性、host/client 握手、无裸全局
npm run check:pricing # 在真实官方页面上跑通 Host 半边的取数/解析/缓存/退化
已知限制
- 依赖 DSH 的 token-meter 投影。若某个 assembly 没装这套投影,插件仍会显示模型与价格,token 部分显示「上下文 —」。
- 上下文数字要等本会话首次模型响应之后才有值(投影由 provider 上报的 usage 锚定)。
- 费用是按 token 数估算,不是账单;缓存命中/未命中由 provider 上报的 usage 决定。
- 牌价自动同步靠轮询官方文档页,不是推送:官方没有公开的牌价变更通知。
页面改版会导致解析失败,此时退回内置表并在面板标注原因。
- 内置兜底表只覆盖 DeepSeek 人民币牌价;其他厂商的模型会显示「牌价未收录」。
- 持久化构建(package/)里没有 Package 私有 RPC,host.call 被替身为「不支持」,因此自动同步只在动态插件形态下可用;持久化形态使用内置兜底表并在面板如实标注。
目录结构
.
├── dynamic/
│ ├── token-price.client.js # 真源:客户端半边(可直接 paste 进 cordis_define) │ ├── plugin.host.js # 真源:Host 半边(取官方牌价 + 解析表格) │ └── cordis-define.json # 生成物:cordis_define 的完整参数(host + client) ├── package/ │ ├── package.json # npm 形态清单(dsh.client 声明) │ └── lib/ │ ├── index.js # 节点半边(空 apply) │ └── client.js # 生成物:浏览器半边 └── scripts/ ├── build.mjs # 生成产物 + 语法校验 ├── verify.mjs # 产物体检 ├── check-pricing.mjs # 用真实官方页面验证 Host 半边 └── publish.ps1 # 一键 git init + gh repo create + push
贡献者
见 CONTRIBUTORS.md。
- Lostlanterns —— 需求、方向与验收标准
- DeepSeek Harness Agent(deepseek-flash)—— 实现与验证(无 GitHub 账号,故不会出现在 GitHub 的贡献者图表中)
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Lostlanterns/dsh-token-price
在输入框下实时显示剩余上下文与本次会话花费
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 938已汉化DSH
69
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 441已汉化DSH
67.9
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 387已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。