← 返回列表
⚠ 装前注意
实时查看上下文占用与 token 花费,按峰谷计价
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/14 · 已提供中文文档
DSH Web 实时上下文占用面板:可拖动面板、按工具/供应商统计 token 用量与花费、峰谷计价
综合分
30.6
GitHub 分
30.6
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add pureskywalk/dsh-context-show未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-context-show(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 14:37:12
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-home-paths用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-context-show
实时上下文占用面板(DSH Web 客户端插件 + 主机投影插件)。
当前对齐 DeepSeek Harness 0.1.5-rc.2:contextUsage 会话投影按新版 API 注册为 stateSchema(折叠态校验)+ wire(客户端可见视图);用量取数自 durable 结算事件(assistant/message / assistant/attempt 的 usage,否则取内嵌 stream 的最后一个 usage chunk,用官方 lastAssistantStreamChunk helper)。0.1.3-alpha.1 起 npm 未发布对应版本,插件依赖宿主提供;0.1.1-rc.2 及更早宿主缺少这些事件词汇,无法显示本插件的金额与用量,请升级宿主。
在会话头部右侧添加一个占用指示按钮(圆环 + 百分比),点击展开/收起可拖动的面板,实时展示:
- 上下文占用:projectedTokens / contextWindow 占用百分比(供应商上报锚定 + 表面增量,随 compaction 即时收缩),圆环按占用程度变色( rc.6 宿主说明:0.1.0-rc.6 的 host-apiproxy 只放行硬编码的官方设置命名空间,第三方命名空间会被 RPC 层拒绝。因此本插件在主机侧额外注册了一对仅回环、仅 POST 的桥路由 /api/dsh-context-show/settings/describe|mutate,直接走宿主 settings seam(保留官方校验、版本冲突、持久化与事件),客户端在官方 scope 报 unavailable 时自动回退到该桥。宿主升级后若 apiproxy 已放行第三方命名空间,官方 scope 自动保持主路径,桥不会启用。
也可以直接编辑 patch 配置(从上到下优先级递增,后一层整段覆盖前一层的同一行 config):
1. 插件默认值:dsh-context-show/cordis.patch.yml(随插件分发)。
2. profile 用户层:$DSH_HOME/profiles/web/cordis.patch.yml(已预置一份当前峰谷价格配置)。
3. $DSH_HOME/cordis.patch.yml 与命令行 --patch。
当前默认价格
依据 https://api-docs.deepseek.com/zh-cn/quick_start/pricing/ ,DeepSeek 采用峰谷计价(人民币 / 每百万 token):高峰时段为北京时间周一至周五 9:00–12:00、14:00–18:00,周末与其余时段为闲时;闲时 = 高峰价的一半。
| 模型 | 时段 | 缓存命中 | 缓存未命中 | 输出 |
| --- | --- | --- | --- | --- |
| deepseek-flash(V4.1-Flash) | 闲时 | ¥0.02 | ¥1 | ¥4 |
| deepseek-flash(V4.1-Flash) | 高峰 | ¥0.04 | ¥2 | ¥8 |
| deepseek-v4-pro | 闲时 | ¥0.15 | ¥4.5 | ¥13.5 |
| deepseek-v4-pro | 高峰 | ¥0.30 | ¥9.0 | ¥27.0 |
| deepseek-v4-flash / deepseek-v4-flash-vision-exp(旧名,按 Flash 计费) | 闲时 | ¥0.02 | ¥1 | ¥4 |
| deepseek-v4-flash / deepseek-v4-flash-vision-exp(旧名,按 Flash 计费) | 高峰 | ¥0.04 | ¥2 | ¥8 |
2026-09 起 DeepSeek 调整了 Flash 档价格(缓存命中/未命中/输出全面下调,Pro 档未变),模型主名改为 deepseek-flash;旧名 deepseek-v4-flash、deepseek-v4-flash-vision-exp 仍可调用并按 Flash 价计费。缓存写入按缓存未命中价计。
本插件默认已启用峰谷计价(peakHours: 9–12 / 14–18,timeZone: Asia/Shanghai,且周末自动按闲时),并预置上述闲时/高峰两套价格(base = 闲时,peak = 高峰)。价格后续调整直接在设置页改数字即可;若想改回平价,在设置页关闭「启用峰谷计价」或把 peakHours 清空。
面板交互
- 持久显示:展开后不会因失焦 / 点击外部收起,只有再次点击按钮或按 Escape 关闭。
- 可拖动:按住面板左上角的抓手(⠿)可把面板拖到任意位置,松手后保持(拖动后为 fixed 定位,仅关闭再打开会回到锚点)。
- 省略版 / 详细版:面板头部 ▾/▴ 切换。省略版只显示上下文占用与总花费;详细版显示来源构成、工具占用表格、各模型花费(含官方价格链接与分时计价说明)、Token 用量。
所有数值均通过会话投影推送实时更新(useProjection),对话快照变化时工具列表同步刷新。
安装
从本地路径安装到 web profile(推荐,与 dsh-agent-teams 相同的 link: 方式)
dsh plugin --profile web add "C:\path\to\dsh-context-show"
或从 npm / Git 安装
dsh plugin --profile web add dsh-context-show
dsh plugin --profile web add github:/
安装后重启目标 profile(host 插件与 client bundle 都要求重启;仅 bundle 内容变化才支持 client HMR)。设置页保存的价格修改走 settings seam,保存后即时生效,无需重启。
疑难排查:若 pnpm 报 ERR_PNPM_UNEXPECTED_STORE(本机 store 路径与 profile 不一致),给 add 追加 --store-dir=(可用 pnpm store path 查询)。本机示例:--store-dir=C:\path\to\pnpm-store\v11。
依赖:@deepseek-ai/dsh-token-meter 的 tokenUsage / contextPressure / contextBreakdown 投影、@deepseek-ai/dsh-settings(dsh-base bundle 已内置),以及 host 侧的 webServer 服务(桥路由用,dsh-base / web 组合已提供)。缺少本插件主机半时,面板自动降级为仅展示 token-meter 已有的投影;缺少 token-meter 时面板显示空态。
开发
pnpm install
pnpm typecheck # host + client 双 tsc program
pnpm test # vitest:usage-fold 重放语义 + 分时计价 + 金额计算 + 快照估价 + 工具聚合 + 格式化
pnpm build # tsc 双 program + tsdown 产出 lib/client.js(ModuleLoader 包裹)
pnpm verify # typecheck + test + build
构建产物 lib/ 直接可被 profile 以 path/link 方式加载(无需 install 脚本)。
架构
- src/index.ts —— host 插件入口:inject = ['sessionProjections'](必需服务)+ Config(币种 + 分时时段 + 价格表 + 官方价格链接,schemastery schema)+ 通过 ctx.inject(['settings']) 走 ctx.settings.installSection(...) 注册 context-show 设置命名空间(设置页读写 + 改后热重注册投影;0.1.3-alpha.1 起设置注册是 provider 方法)+ 直接 ctx.sessionProjections.register(...) 注册带定价 spec 的 contextUsage 投影单元(改价时 dispose 旧单元再注册新 spec,重新折叠计价)+ 维护持久花费账本($DSH_HOME/storages/dsh-context-show/spend-ledger.json:投影变更订阅 + 桥请求时折叠 → 1s 防抖原子写、卸载 flush)+ 挂载 loopback 桥(settings describe/mutate、models、spend)。
- src/usage-fold.ts —— 纯函数折叠:request/header 与 request/context 记录当前路由与请求时刻,assistant/message 与 assistant/attempt 结算事件(优先 usage 字段、否则取内嵌 stream 的最后一个 usage chunk)按请求时刻归入高峰 / 闲时桶并归因到当时路由;llm/retry-started 关闭同一步替换槽,重试的 attempt 累加而不覆盖;event.seq < inheritedEventCount 的 fork / 延续继承前缀直接跳过(祖先已付费);状态为纯 JSON(经 stateSchema 校验,stateVersion 5),按 provider\0model 建表 + 首次使用顺序,每 provider 一个 last-sample 槽做同一步替换(跨档位不重复计费),并按「日 × 路由」分桶(days)供今日金额;金额、币种、时段与官方价格链接在 wire.view() 阶段计算,不进入折叠状态;通过 module augmentation 把 contextUsage 折叠态并进 SessionProjectionStateMap。
- src/projection.ts —— 共享类型 + SessionProjectionMap(客户端 wire 视图)表 merge;src/usage-fold.ts 另 augment SessionProjectionStateMap(主机折叠态)。host 注册、client useProjection('contextUsage') 共用同一 wire 类型表。
- src/bridge.ts —— host 侧 loopback 桥(仅回环、仅 POST):设置 /api/dsh-context-show/settings/describe|mutate(直连 settings seam、镜像官方错误码)、模型目录 /settings/models、跨会话花费 /settings/spend(返回账本聚合快照)。
- src/bridge-protocol.ts —— host / client 共享的桥线协议类型(纯类型 + 前缀常量,双 tsc program 共用)。
- src/spend.ts —— 跨会话花费聚合:把每会话样本按「日 + 工作目录(cwd)+ 路由」折成面板快照(今日、累计、按模型明细)。
- src/spend-ledger.ts —— 持久账本:容错解析、按会话幂等覆盖、临时文件 + rename 原子写、1s 防抖与卸载 flush;路径由官方 dshHomePath() 解析。
- src/spend-protocol.ts —— host / client 共享的花费快照类型(纯类型;client 侧只 import type,不把 host 代码带进 bundle)。
- src/client/price-input.ts —— 价格单元格的十进制解析(允许 0.、.5 等输入中间态,非法文本忽略并保留上一个有效值)。
- src/client/index.ts —— 浏览器半:locale 注册 + conversation.session.header.utilities 槽注册(面板)+ settings.plugin.item 槽注册(插件配置卡片,order: 1000 排在最后)。
- src/client/bridge-scope.ts —— rc.6 兼容 settings scope:官方 scope 为主,报 unavailable 且浏览器为回环时回退到桥控制器(串行队列 + revision 栅栏 + 失败重读)。
- src/client/ContextShowMeter.tsx —— 触发器 + 可拖动持久面板(抓手 pointer 拖拽、fixed 定位、省略/详细两态、Escape / 按钮关闭,aria-*,focus-visible)。
- src/client/ContextShowSettings.tsx —— 插件配置卡片:默认收起的可折叠外壳(对齐官方 PluginCard 样式),展开后编辑币种、峰谷开关与时段、默认价 / 供应商价 / 模型级覆盖(闲时+高峰双列表格)、保存 / 恢复默认。
- src/client/estimate.ts —— 客户端快照估价(与 token-meter 固定密度启发式同口径)+ 按工具名聚合。
- src/client/formats.ts —— token 紧凑格式 + 币种感知金额格式(CNY/USD/EUR/…)。
- cordis.patch.yml —— bundle 层:context-show 行插入配置树,含当前峰谷默认价格表与官方价格链接。
验证
pnpm verify 覆盖:双 tsc 类型检查、usage-fold 的重放确定性 / 路由归因 / 同一步替换(含跨高峰档位替换)/ 未归属桶 / 缓存桶 / 分时与平价金额计算 / 默认价回退 / 币种与官方价格链接 / 高峰时段判定(含跨午夜与北京时区)、快照估价与工具聚合、token/金额格式化。
其中 test/cost.test.ts 用官方价手算核对金额(四桶、峰谷、替换、跨日一致性)、test/spend.test.ts 与 test/spend-ledger.test.ts 覆盖跨会话聚合与账本「序列化 → 重读」往返、test/price-input.test.ts 覆盖价格输入解析(0./.5/非法文本)。
另外:
- node test/smoke-built.mjs / test/smoke-config.mjs / test/smoke-real-log.mjs 校验构建产物、patch 配置与真实日志折叠;
- 桥路由用假 settings seam 验证 describe / mutate / unset / 非回环 403;
- 无头浏览器(Playwright)验证:设置 → 插件 → 插件配置 中卡片位于最后、默认收起、点击展开显示表单、卡片背景色与官方卡片一致,且控制台无崩溃。扫码进群