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

用量教练与回执 marksimZ/dsh-usage-kit

DeepSeek Harness
marksimZ13 天前有提交已提供中文文档扫描:未发现敏感能力

提示上下文余量并压缩,逐回合显示步数与费用

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    src/client.js:326
    const response = await fetch(RECEIPTS_ROUTE + '?session=' + encodeURIComponent(sessionId), {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

DSH 插件:输入框上方有一个可操作的上下文教练,每个完成的回合下方有一份用量回执(步数、token、缓存命中、费用、耗时)。

README

由 DeepSeek 最新模型翻译生成
dsh-usage-kit 一个 DeepSeek Harness 插件,包含两个小巧、互相独立的组件,都围绕一次对话正在消耗什么: 1. 上下文教练 —— 输入框上方一行提示,只在有事可做时出现:上下文快满了、预计下一次请求可能触发压缩,或者缓存命中率太低导致重复输入变贵。点一下就能运行 /compact。 2. 回合回执 —— 每个完成的回合下方一行安静的文字: 8 步 · 955.0k tok · 缓存 97% · ¥0.32 · 2m14s,可展开查看四个计费 token 桶、路由到的模型,以及峰时/闲时时段。 两个组件打包在同一行插件里,但由各自独立的 effect 注册,所以关掉其中一个不影响另一个(widgets.coach: false / widgets.receipt: false);想删掉某个组件,只需从 src/client.js 里移除对应的注册块。 为什么是这两个 DSH 已经在输入框里内置了 14px 的上下文圆环,上方还有 todo/goal 停靠区。这套工具不重复它们: - 圆环只显示数字;教练补上动作(无事可做时保持隐藏,不会变成第二个仪表); - 内置的回合用量面板只有 token,而且藏在点击之后;回执是一行内联文字,带金额和耗时,价格取自 DeepSeek 官方价目表。
展开完整文档(README 剩余 1 节)
dsh-usage-kit

一个 DeepSeek Harness 插件,包含两个小巧、互相独立的组件,都围绕一次对话正在消耗什么:

1. 上下文教练 —— 输入框上方一行提示,只在有事可做时出现:上下文快满了、预计下一次请求可能触发压缩,或者缓存命中率太低导致重复输入变贵。点一下就能运行 /compact。
2. 回合回执 —— 每个完成的回合下方一行安静的文字: 8 步 · 955.0k tok · 缓存 97% · ¥0.32 · 2m14s,可展开查看四个计费 token 桶、路由到的模型,以及峰时/闲时时段。

两个组件打包在同一行插件里,但由各自独立的 effect 注册,所以关掉其中一个不影响另一个(widgets.coach: false / widgets.receipt: false);想删掉某个组件,只需从 src/client.js 里移除对应的注册块。

为什么是这两个

DSH 已经在输入框里内置了 14px 的上下文圆环,上方还有 todo/goal 停靠区。这套工具不重复它们:

- 圆环只显示数字;教练补上动作(无事可做时保持隐藏,不会变成第二个仪表);
- 内置的回合用量面板只有 token,而且藏在点击之后;回执是一行内联文字,带金额和耗时,价格取自 DeepSeek 官方价目表。

界面

composer area
┌─────────────────────────────────────────────────────────────┐
│ 上下文已用 83% · 历史消息约 42.0k 可压缩 [压缩] │ ← coach (only when triggered) ├─────────────────────────────────────────────────────────────┤ │ … input card … │ └─────────────────────────────────────────────────────────────┘

transcript, under a completed turn
✓ 3 files changed · 2 commands 8 步 · 955.0k tok · 缓存 97% · ¥0.32 · 2m14s ▾ ← receipt 未缓存输入 30.0k 缓存读取 900.0k 输出 25.0k 模型 deepseek-flash 时段 峰时价

环境要求

- 一个组合了 webServer 和 sessionProjections 的 DSH 客户端(Desktop 客户端和 dsh web 都满足)。教练只需要内置的会话投影;回执需要 Host 那一半来折叠每回合用量。
- Node 20+ 仅用于测试/安装脚本;插件本身没有构建步骤。

安装

git clone https://github.com/marksimZ/dsh-usage-kit.git dsh-usage-kit

一次性运行:

dsh web --patch /absolute/path/to/dsh-usage-kit/cordis.patch.yml

永久安装到某个配置档的补丁层(该配置档存在时安装器选 desktop,否则选 web):

node scripts/install.mjs # writes $DSH_HOME/profiles/<profile>/cordis.patch.yml
node scripts/install.mjs --dry-run

验证运行中的 GUI 是否已加载:

node scripts/verify-deployed.mjs --url http://127.0.0.1:<GUI 端口>

Host 那一半是新增的插件行,所以会在下次客户端启动时加载;浏览器那一半会重新加载普通刷新页面即可。现有 dsh-balance-guard 不受影响。

配置

每个键都可选,默认值写在 cordis.patch.yml 里。

| 键 | 默认值 | 含义 |
| widgets.coach | true | 注册上下文教练行 |
| widgets.receipt | true | 注册回合回执行 |
| coach.occupancyWarn | 0.8 | 触发压缩建议的占用率 |
| coach.projectedWarn | 0.9 | 触发压缩建议的下一请求预测占用率 |
| coach.cacheHitFloor | 0.8 | 缓存命中率低于此值时,显示「重复输入」提示 |
| coach.minPromptTokens | 20000 | 提示词 token 数达到此下限才值得显示该提示 |
| cnyPerUsd | 7.2 | 回执金额的显示换算汇率 |
| holidays | [] | 全天按低谷计费的 UTC 日期(中国法定节假日) |
| turnsKept | 300 | 每个会话为回执保留的已完成回合数 |

价格写在 src/pricing.js 里(美元 / 1M token,deepseek-flash 和 deepseek-v4-pro 各有高峰与低谷两行),由 scripts/pricing-spec.mjs 锁定。高峰时段为周一至周五 UTC 01:00–04:00 和 06:00–10:00,holidays 除外。

架构

Host half (src/index.ts)
ctx.on('session/event')
request/context → the routed model for the turn
turn/start → open a turn (steps, running usage total)
assistant/message → add its billed usage sample (retries add another)
turn/end → price the turn and publish a receipt
src/pricing.js → price catalog, peak calendar, billing math (pure)
└─ GET /dsh-usage-kit/receipts?session=<id> → { byTurn, bySeq } receipts
└─ globalThis.__DSH_USAGE_KIT_CONFIG__ → widget switches for the browser half

Browser half (src/client.js)
conversation.input.dock → context coach (reads contextPressure / contextBreakdown / tokenUsage)
conversation.chat.turnTail → turn receipt (fetches the session's receipts, cached 10s)

为什么还需要 Host half? 浏览器里的 tokenUsage 投影是累计值,推不出每回合的用量。所以 Host 从服务商上报的 assistant/message.usage 样本里逐回合汇总,算出价格再发布。教练不需要 Host 数据,完全跑在现成的投影上。

为什么用两个查找键? 对话记录条目拿到的是收尾 node 的 seq,不是 turn/end 事件的 seq,只按 seq 建索引会漏。所以回执同时按回合号(主键)和结束 seq(兜底)发布,浏览器再从收到的 TurnLocation 里稳妥地解析出回合 id。

为什么选 conversation.chat.turnTail 和 conversation.input.dock? 这两个文档座位本来就接收 useProjection 和输入/聊天钩子;注册新的 id 会在现成条目旁边加一条,而不是替换它们(replaceRisk: none)。

测试

npm test # pricing spec + client spec + bundle smoke + theme tokens + visual tokens
npm run test:host # folds three turns on a mock context and drives the real receipts route
npm run verify # read-only probe of a running GUI

| 脚本 | 固定住什么 |
| scripts/pricing-spec.mjs | 官方价格表、高峰/低谷日历、计费算法、用量增量 |
| scripts/client-spec.mjs | 教练建议规则(占用 / 预估 / 缓存)、对话轮次身份、回执摘要与详情、格式化器、注入开关 |
| scripts/client-smoke.mjs | 打包契约、单一样式表、两个席位注册、按控件开关 |
| scripts/host-smoke.mjs | 从助手样本累计用量(重试会累加)、从请求/上下文取模型、byTurn/bySeq 键、成本、注入、路由边界 |
| scripts/theme-tokens.mjs | 每个 var(--dsw-*) 都由随包发布的主题声明 |
| scripts/visual-tokens.mjs | 不用原始颜色,圆角/字号只取自主题刻度,不用无限动画 |
| scripts/verify-deployed.mjs | 运行中的 GUI 能提供打包产物和回执路由 |

限制

- 回执从插件加载时开始。 Host 那一半挂载之前完成的轮次没有折叠回执,所以它们的尾行干脆不渲染(不做任何猜测)。
- 教练只给建议,不自动执行。 它从不自行压缩;按钮运行随包发布的 /compact 命令,拒绝时以行内文本呈现。
- 金额是按标价估算,不是账单:用的是目录价和轮次结束时的时段,不是服务商的延迟结算。
- 一行,两个控件。 删除控件要改源码(移除它的注册块)或改配置开关;按设计没有按控件安装的行。

许可证

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓marksimZ/dsh-usage-kit
分享 · DeepSeek Harness Hub
marksimZ/dsh-usage-kit

提示上下文余量并压缩,逐回合显示步数与费用

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