dsh-context-show:DSH Web 的实时上下文占用与花费面板

前言

在 DSH Web 里跑长会话时,有两个数字平时很难直接看到:上下文窗口被占用了多少,这个会话到现在花了多少钱。token 用量数据本身并不缺——token-meter 已经提供了 tokenUsagecontextPressurecontextBreakdown 这些会话投影——缺的是一块把它们摆到界面上的面板;花费则还要自己查单价、自己按高峰闲时换算。

下面介绍 pureskywalk 维护的 dsh-context-show 插件。它在 DSH Web 会话头部加一个占用指示按钮,点开是一块可拖动的面板,把占用、构成、工具用量、花费和各供应商用量放在一处实时显示。

这是什么

dsh-context-show 自述为「DSH Web 客户端插件 + 主机投影插件」:浏览器半负责面板与设置界面,主机半负责注册 contextUsage 会话投影,在主机侧对 durable 日志折叠成可累计的用量。当前版本 0.9.0,许可证 MIT,安装到 web profile 使用。

它回答四个问题:

1、上下文还剩多少——projectedTokens / contextWindow 的占用百分比;
2、占用从哪来——系统提示词、工具定义、对话消息各占多少,哪些工具调得最多;
3、花了多少——按每百万 token 单价估算的累计花费,按每次请求发生时间自动区分高峰/非高峰;
4、用量归到谁头上——按 provider/model 路由归因的累计用量。

核心功能

占用指示与面板

  • 会话头部右侧出现占用指示按钮(圆环 + 百分比),点击展开/收起可拖动面板;
  • 圆环按占用程度变色:<70% 中性、70–89% 琥珀、≥90% 红;
  • 面板持久显示,只有再次点按钮或按 Escape 关闭;按住抓手(⠿)可拖动;
  • 面板分省略版/详细版,省略版只显示占用与总花费;
  • 所有数值通过会话投影 useProjection 实时推送,对话快照变化时工具列表同步刷新。

来源构成与工具占用

详细版里可以看到两块明细:

  • 来源构成:系统提示词 / 工具定义 / 对话消息的启发式 token 构成,数据来自 token-meter 的 contextBreakdown 投影,显示为分段进度条 + 明细行;
  • 工具占用:按工具名聚合的占用列表,显示调用次数与约 token 数,不展示原始内容。

花费估算与峰谷计价

花费按配置单价(每百万 token,默认人民币 CNY)估算,并按每次请求的发生时间自动套用高峰/非高峰价。默认已启用峰谷计价:peakHours: 9–12 / 14–18timeZone: Asia/Shanghai,周末自动按闲时,闲时价为高峰价的一半。插件预置了依据 DeepSeek 官方定价页(api-docs.deepseek.com/zh-cn/quick_start/pricing/)的价格表,单位为人民币 / 每百万 token:

模型 时段 缓存命中 缓存未命中 输出
deepseek-v4-flash 闲时 ¥0.05 ¥1.5 ¥4.5
deepseek-v4-flash 高峰 ¥0.10 ¥3.0 ¥9.0
deepseek-v4-pro 闲时 ¥0.15 ¥4.5 ¥13.5
deepseek-v4-pro 高峰 ¥0.30 ¥9.0 ¥27.0
deepseek-v4-flash-vision-exp 同 flash ¥0.05/0.10 ¥1.5/3.0 ¥4.5/9.0

详细版按花费降序列出各模型的金额,含供应商、官方价格链接与输入/输出 token 明细。

各供应商用量

按 provider/model 路由归因的累计用量,由插件自带的 contextUsage 会话投影在主机侧对 durable 日志折叠得到,能看出用量分别落在了哪条路由上。

安装与启用

先执行安装命令,把插件加进 web profile:

dsh plugin --profile web add dsh-context-show

也支持从本地路径以 link 方式安装,以及 github:<owner>/<repo> 形式的 Git 安装(README 中该写法为占位模板,使用时替换为实际仓库地址):

dsh plugin --profile web add "C:\path\to\dsh-context-show"

安装后需要重启目标 profile,host 插件与 client bundle 都要求重启。之后打开 DSH Web,会话头部右侧即可看到占用按钮。

两点提示:

  • 若 pnpm 报 ERR_PNPM_UNEXPECTED_STORE(本机 store 路径与 profile 不一致),给 add 追加 --store-dir=<你的 pnpm store>,store 路径可用 pnpm store path 查询;
  • 设置页保存的价格走 settings seam 即时生效,无需重启。

单价在哪里配置

经过上面的安装步骤后,打开 DSH Web「设置」→ 插件 → 插件配置,找到最后一张卡片「上下文占用 · 单价配置」(默认收起,点击标题展开),可以编辑:

  • 币种:CNY / USD / CNH / EUR / GBP / JPY;
  • 峰谷计价开关,启用后可改高峰时段与时区;
  • 默认价(未配置供应商时的兜底价);
  • 供应商单价与模型级覆盖(provider/model)。

保存即时生效,「恢复默认」则清空用户层、回退到 bundle 默认值。

不走设置页的话,也可以直接编辑 patch 配置,优先级从上到下递增:

  1. 插件默认值:dsh-context-show/cordis.patch.yml(随插件分发);
  2. profile 用户层:$DSH_HOME/profiles/web/cordis.patch.yml
  3. $DSH_HOME/cordis.patch.yml 与命令行 --patch

后一层会整段覆盖前一层中同一行 config。

版本对齐与依赖

  • 插件当前对齐 DeepSeek Harness 0.1.1-rc.2contextUsage 投影按新版 API 注册为 stateSchema + wire0.1.0-rc.7 及更早宿主缺少该 wire 视图,金额不显示时需一并升级宿主。
  • 0.1.0-rc.6 宿主的 host-apiproxy 仅放行官方设置命名空间,插件因此在主机侧注册了一对仅回环、仅 POST 的桥路由 /api/dsh-context-show/settings/describe|mutate 作为设置读写回退;宿主放行第三方命名空间后,官方 scope 自动保持主路径。
  • 运行依赖 @deepseek-ai/dsh-token-metertokenUsage / contextPressure / contextBreakdown 投影)、@deepseek-ai/dsh-settingsdsh-base bundle 已内置)以及 host 侧 webServer 服务。缺少本插件主机半时,面板降级为仅展示 token-meter 已有投影;缺少 token-meter 时显示空态。

开发与验证

从源码开发时,流程如下:

pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm verify

其中 pnpm verify 依次执行 typecheck、test、build。构建产物 lib/ 可直接被 profile 以 path/link 方式加载,无需 install 脚本。

适用场景与注意事项

适合这些情况:用 DSH Web 做日常开发、会话偏长,想盯着上下文压力;关心会话成本,尤其是高峰/闲时价差;接了多个 provider/model,想看路由归因后的用量分布。

几点注意:

  • 占用与来源构成为启发式估算,花费按配置单价估算,均不等于供应商账单;
  • 插件以当前 dsh 进程的权限运行,安装前建议先查看源码、确认许可证(本项目为 MIT);
  • 面板完整功能依赖 token-meter 与主机半插件,缺失时按上一节所述降级或显示空态。

小结

dsh-context-show 做的事情不复杂:把 DSH Web 里已经存在的会话投影聚合到一块可拖动的面板上,再把单价配置做成可编辑的表单。对需要盯着上下文窗口和花费的人来说,省掉了翻日志和手算的环节。

skillhub.cn 是社区维护的插件目录,与 DeepSeek、幻方无官方从属关系。DSH 的设计理念是「一切皆插件」,这类面板正是这个生态里由社区自行扩展出来的形态。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye