DSH(DeepSeek Harness)采用“一切皆插件”的架构。在开发或使用智能体时,精确掌握每笔请求的成本至关重要。dsh-cost 插件直接部署在对话界面底部,通过计算“发生时间 × 当时模型单价”来提供逐笔准确计费,并区分高峰与空闲时段,解决了传统统计口径过于粗略的问题。
核心功能¶
该插件基于 DSH 的 conversation.composer.dock 槽位注入,提供以下能力:
- 按笔准确计费:不使用当前价格套全程,而是记录请求发生时的具体时刻与模型,按当时的单价累加。
- 分时段计价:将费用划分为高峰、空闲、历史三档。自北京时间 2026-09-10 12:00 起,Flash 系列降价,空闲与高峰单价不同;此前时段按旧价计费。
- 分时段明细卡:点击底部的“费用”药丸,展开高峰/低谷/历史的明细卡片,底部以小条展示金额占比。
- 模型归属与读图金额:自动拆分各模型的调用次数与金额,并将视觉输入(图片)的 token 单独记账。
- 账户余额:药丸显示当前余额。点击药丸可立即刷新余额与费用明细(硬币图标会旋转动画)。刷新频率默认每 5 分钟一次。
- 官方同款外观:使用 14px 图标、
border-radius:24px的“药丸”样式,与 DSH 官方统计行并列显示在同一行,不换行。
安装与启用¶
插件自带 dsh.bundle.patch,无需手动编写 profile 补丁。安装后重启 dsh web 进程即可生效。
dsh plugin --profile web add github:david0702/dsh-cost
安装后,客户端刷新页面即可看到新增的费用药丸。
验证安装¶
在浏览器控制台运行以下命令,确认插件已进入 DSH Boot 组合:
__DSH_BOOT__.entries.map((e) => e.id).filter((id) => /cost/i.test(id))
// 期望输出: ["@david0702/dsh-cost"]
开发与热更¶
如需本地开发,建议使用 pnpm link 将仓库直接链入 profile,避免“副本与仓库漂移”。
dsh plugin --profile dev add /path/to/dsh-cost
不同文件的改动生效机制如下:
| 改动文件 | 生效方式 |
|---|---|
lib/client.js |
热更新:保存即生效,刷新浏览器即可见,无需重启服务 |
lib/index.js |
需重启:宿主插件不支持热载,必须重启 dsh web |
package.json (dsh 字段) |
需重启:profile 组合在启动时合成 |
权限与安全风险¶
权限范围¶
- 网络:仅访问
https://api.deepseek.com(用于拉取余额)。 - 凭据:读取环境变量
DEEPSEEK_API_KEY,仅用于余额请求,不暴露给浏览器。 - 客户端:只向同源的
/api/dsh-cost/read和/api/dsh-cost/balance发送请求,不加载第三方脚本。
安全风险¶
插件注册的 /api/dsh-cost/* 路由为精确路由(kind: 'exact'),优先于官方的 /api 前缀栅栏(kind: 'prefix')。
这意味着,在同机运行 dsh web 且配置了 DEEPSEEK_API_KEY 的情况下,同机上的其他进程可能无需凭据即可读取当前的会话费用与账户余额。建议不要将 dsh web 绑定到不可信网络。
兼容性说明¶
插件依赖 DSH 的特定版本与约定:
* 客户端:使用 conversation.composer.dock 槽位、props.useProjection 等。
* 宿主:使用 ctx.webServer.register、ctx.credentials.resolve。
安装前请检查 package.json 中的 dsh.compatibility.dshReleases。当前已验证兼容的版本包括 0.1.5-rc.1 和 0.2.0-rc.2。
总结¶
dsh-cost 是一个为 DSH 用户提供精细化成本观测的工具。它通过药丸组件直观展示费用与余额,并通过精确路由与 API Key 的隔离,在提供便利的同时保留了基本的配置灵活性。