dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
装上此插件并进入插件设置内授权即可让你的DeepSeek Harness获得任务完成后使用系统通知能力,还有每个模型的使用情况
DeepSeek Harness 插件:代理任务完工通知 + 顶部提示横幅 + 按 Provider(Key)的 Token 消耗统计 + 价格编辑 + 使用分析。
0.3.14 更新:
nextPlan,自动/手动续费时提升)。perCallModels)真正透传到客户端(此前该区块永远显示「暂无」);「性价比计算」区块标题恢复。priceFor 按价格快照缓存、峰谷取档去掉 Date 分配、使用分析单条金额只算一次且不再复制全量账本、客户端派生数据 useMemo 化——2 万条账目的使用分析由约 8.5s 降到约 0.05–0.08s,5 万条约 0.12s。0.3.12 新增:
tokens / cost(旧配置里残留的金额字段读取时直接丢弃);上一轮 / 历史周期 / 待确认账本的金额一律在每次读取时按账本 × 当前价格现算——改价格后回本进度、上一轮与历史周期、每日费用、通知金额立即变化,不会出现旧金额。package.json 的 description 与 dshhub.summary(改为一段功能概述,不再堆叠历版说明)。0.3.11 新增:
fail,红色左边条,带本轮已消耗 tokens、金额与失败原因);用户主动中止(停止/打断)不打扰。data-slot + :has() 结构选择器实现,不依赖宿主哈希类名;折叠窄轨不受影响)。0.3.10 新增:
0.3.8 新增:
sf- 前缀键:DeepSeek-V4-Flash / DeepSeek-V4-Pro / GLM-5.2 / GLM-4.5-Air / Kimi-K2.7-Code / Kimi-K2.6 Pro / MiniMax-M2.5 / Step-3.5-Flash / Qwen2.5-7B及以下),V4-Flash-Vision 按 CSV(7) 空闲/高峰成对价重列(2026-09 降价:基础价 ¥1/¥4/缓存命中 ¥0.02,高峰 ¥2/¥8);目录总计 268 条。0.3.7 新增:
显示名称(Provider ID + 模型名称):所有界面的名称优先取全局模型设置里的自定义显示名——Provider 显示名 = 该 Provider 的 displayName(如 scnet → 超算互联网、bitdance-ark → BitDance Ark MaaS),模型显示名 = 该 Provider 下该模型的 name(如 ark-code-latest → 「GLM-5.3-Flash」,deepseek-flash → 「DeepSeek-V4.1-Flash」);悬停始终可见原始模型 ID。全局模型设置未给显示名时回退官方价格目录显示名(厂商 + 模型名称),再回退模型 ID。
模型归属的 Provider ID 修复:「哪个模型属于哪个 Provider」以全局模型设置的模型清单为准(Provider ID 管理 / 价格编辑的 Provider ID 子卡片 / 消耗统计的显示名同源),账本观测只作补集;Provider 目录不再退化成「只记录调用过的模型」——启动抓取撞上服务注册竞态时自动重试,缓存过期或全局模型设置变更(llm-* 命名空间)时自动重扫。使用分析 / Token Plan 的消耗汇总严格按目录归属:每个 Provider ID 下方的模型自动来自全局模型设置,模型消耗先按目录判定归属的 Provider ID(命中即归到该 Provider 名下,运行时路由只作目录未收录时的兜底);模型品牌显示 = 目录里归属 Provider 的显示名——不再按模型名前缀绑定厂商,Provider ID 是用户自己设置的,一律读本地数据。
价格表大小写不敏感:价格计算查找价格表(models 段)时不再区分模型名大小写——自定义价保存的大小写与调用记录不同也命中同一条价格。
峰谷计价 v2:主体峰谷规则支持逐日生效日(每条规则可选 工作日 / 自定义(勾选星期)/ 每天)、自定义时区(UTC 偏移小时,默认 8 = UTC+8,生效星期与高峰小时都按它判定)与峰时价格方式(倍率 / 自定义——自定义直接填峰时价,留空字段按原价);规则仍为条件格式式,自上而下首个命中生效。
自定义价格倍率:勾选「自定义价格」后可选 自定义(逐字段价)/ 倍率——倍率模式下实际价 = 该模型默认价格 × 倍率(默认价 = 官方价,未收录回退全局默认价),页面只读展示计算结果;Provider ID 子卡片新增价格倍率(默认 1,对该 Provider 的最终价整体缩放)。
旧版本价格数据迁移:升级后第一次启动自动把旧峰谷规则 / 价格配置应用到新版本结构(独立脚本 lib/pricing-migrate.js,经 pricingVersion 标记只执行一次,幂等)。
性价比修复:Token Plan 的 Provider 下,性价比 = 该模型调用量 ÷ 加权后的使用金额 = 1 块钱可兑换的 tokens 数量(订阅费按各模型按模型价的金额占比摊薄)——修复旧版同计划所有模型性价比恒同、无法区分的问题。
完工通知:代理每完成一轮任务(或目标 goal 完成)时,在 Web 界面弹出通知,并经浏览器 Web Notifications API 发送 Windows 系统通知(桌面右下角横幅 + 操作中心;需页面授权,点击通知回到本页),展示本次任务消耗的 tokens(缓存输入 / 缓外输入 / 输出 / 合计)与金额。
顶部提示横幅(0.3.6):常驻 DeepSeek Harness 页面顶部居中(shell.overlay 帧级浮层,所有页面显示,可 × 关闭):① 通知权限横幅——系统通知开关开启但浏览器尚未授权时提示「开启权限获得完整能力体验」,点击横幅即自动执行索权动作,任何结局都立即可见(等待中横幅文字立即变为「正在请求授权」;授权成功自动开启系统通知并直发「系统通知已开启」系统通知回执;授权弹窗被关闭未选择时明确提示再次点击选择「允许」、被浏览器静默拦截时提示到地址栏站点设置修改;被拒绝时提示到地址栏站点权限中允许);② 模型价格横幅——当前使用的模型没有规定价格(未激活自定义、官方目录未收录、也没有 Provider 专属价)时提示设置价格,点击横幅直接弹出该模型的价格编辑弹窗(五个单价字段预填全局默认价,留空字段继续继承全局默认价),「保存并确定」即写入配置并立即生效,消耗统计 / 使用分析 / 完工通知金额马上按新价格计算。「当前使用的模型」= 最近一次完工帧携带的模型(实时)∪ 最近 7 天账本中最新使用且未定价的模型(刷新页面后仍能提示)。
操作提醒:对话需要你处理时同样提醒——代理发起权限请求(批准/拒绝)或提问(等待你回答)时,页内弹窗 + 系统通知(遵循系统通知开关与发送时机设置)。实现上只读观察官方 UI 的当前待处理交互(uiSession.sessionStatus,兼容旧版 pendingInteractions),不参与 approval/request、user-questions/request 的应答链,绝不干扰审批/提问对话框。
数据进制规则(0.3.2):所有数字展示(统计 / 分析 / 弹窗 / 价格)统一按「K M B T」进制——0-99,999 无单位;≥100,000 用 4 位数字 + 单位(千/百万/十亿/千亿),超出部分四舍五入,优先小单位(如 120,050 → 120.1K、980,920 → 980.9K、9999K 下一个是 10.00M);鼠标悬停在含单位的数据上会浮现精确值。此规则只作用于显示,后台程序仍用精确数据计算。
Key 身份 = Provider ID(0.3.2):统计 / 分析 / Token Plan 里的「Key」指全局模型设置中的 Provider 路由(如 scnet / ten / deepseek-official),显示名用该 Provider 的 displayName(如 超算互联网 / DeepSeek),环境变量名(apiKeyEnv,如 SCNET_API_KEY / DEEPSEEK_API_KEY)只作辅助展示;旧账目 / 旧套餐的 key 标签自动迁移兼容。
消耗统计:每次模型调用结束后记录其 usage,并按调用实际使用的 Provider 归集。插件设置页支持 1 年 / 6 个月 / 3 个月 / 1 个月 / 15 天 / 1 周 / 24 小时 / 自定义 时间范围,查看所有 Provider(Key)的 tokens 消耗量(分「缓存输入 / 缓外输入 / 输出」),附带调用次数、按 Provider 的按模型明细与跨 Provider 的按模型消耗总览。
使用分析(顶部导航切换):在 设置 → 任务通知与消耗 页顶部通过导航栏切换到「使用分析」页,分析规定时间范围内各大模型的使用资金状况:① 消耗金额展示——模型消耗金额占比饼图(鼠标悬停饼图块查看该模型具体使用情况:调用次数、各类 tokens、金额与占比)+ 饼图下方各 Provider 消耗额度表;② Token Plan 回本提示——每个设置为 Token Plan 的 Provider 一张子卡片(显示名、名下每个模型的消耗金额、是否回本、每 Credit 对应 tokens、重置当前周期按钮;0.3.3 起重置需输入 4 位数字验证码 + 两次点击不同位置的确认按钮才执行,重置后可「撤回重置」——同样验证码 + 两次确认,撤回恢复周期边界并把重置期间产生的消耗并入当前周期);0.3.4 起每个计费周期有唯一 TID(插件内部身份,不向用户显示),回本只统计当前生效 TID,旧 TID 数据冻结并经卡片「历史」按钮展开查阅;模型调用返回 402/429(Token Plan 错误码) 时该 Provider 标记待确认并弹「需要重置 Token Plan 吗?」,未回应则下次正常调用弹「是否已续费?」,期间消耗计入临时账本(卡片待确认横幅:已续费 / 没续费,回应后并入原周期合并显示);③ 性价比计算——1 元(CNY)能兑换多少 tokens(消耗 Token 总数 ÷ 消耗金额),相同品牌的大模型放在一起比较,Token Plan 的 Provider 只用当前生效计费周期(当前 TID)的 tokens 与订阅费加权摊薄,周期尚无数据时用当前消耗 ÷ 金额并标注「正在统计」;④ 每日费用消耗表——微型日历中代表一天的正方形的填充颜色深度区分每天用量的多少,日历下方列出每个日期的各模型消耗金额(Token Plan 的模型按加权平均计算,加权平均严格限定同一 TID:订阅费 ÷ 该 TID 周期总 tokens × 当天 tokens,同一天同一 Provider 出现在不同 TID 时相加合并为同一 Provider 显示),每个日期的数据默认堆叠,表格一次显示最近 6 天,其余用鼠标滚轮滚动查看;每日记录每个模型行前有颜色图例(0.3.3,与堆叠色条一致),429/402 待确认的临时账本行标「待确认」(0.3.4)。
今日消耗(0.3.3,顶部导航第一位):在 设置 → 任务通知与消耗 页顶部导航栏第一个标签「今日消耗」,展示今天的模型消耗金额占比饼图、今日各模型 tokens 消耗量(缓存输入/缓外输入/输出/合计)与今天的消费情况(总 tokens / 调用次数 / 金额);数据按今日 00:00(本地)至现在的账本计算,金额按当前价格与峰谷档现算。饼图只有一个模型时显示完整 100% 圆环;下方附今日消耗明细——每次模型调用产生消耗的单条记录(时间 / 模型 / Provider / 各类 tokens / 金额,时间倒序)。
顶部导航(0.3.3 顺序):在 设置 → 任务通知与消耗 页顶部通过导航栏按「今日消耗 → 消耗统计 → 使用分析 → 价格编辑 → 设置」切换视图;导航栏 sticky 常驻页面顶部,往下翻阅时右侧出现「回到顶部」箭头按钮,点击平滑回到页面顶部;「设置」页含插件配置(全部开关、弹窗时长、保留天数等)、Token Plan Key 管理(0.3.2,取代原「价格编辑-Token订阅」)、Provider ID 管理(0.3.2)与清除记录数据(安全流程:滑条拖到底 → 输入随机 8 位验证码 → 连续两次确认,才清空全部消耗统计账本;价格/套餐/峰谷/Provider 目录配置保留)。
价格编辑(顶部导航切换):在 设置 → 任务通知与消耗 页顶部点击「价格编辑」导航切换。模型价格跨 Provider 合并——不同 Provider 使用同一模型的调用都按该模型的价格计费,同一模型只有一行价格;未激活自定义的模型默认按内置官方价格目录计费(DeepSeek / OpenAI / Anthropic / Gemini / Kimi / Qwen / GLM / MiniMax / Seed / ERNIE / 混元 等 80+ 模型,双币种,含 DeepSeek 峰谷档;默认价以《主流大模型API官方价格汇总.xlsx》2026-09 为基准),点击「激活自定义」解锁该模型的价格编辑(基础价 + 峰时/谷时子档),「添加模型」可手动加入未出现过的模型。首次启动 / 无数据时,Provider 目录里已配置的模型也会列出,可提前定价。点「保存价格」后立即生效:汇总卡片、按 Provider 表、按模型表与完工通知金额马上按新价格重算。旧账目按低谷价:0.1/0.2 版本记录的旧消耗没有峰谷语义,默认按低谷价计算金额,不会被按峰时价回溯计费。
Token Plan Key 管理(0.3.2,设置页):管理所有 Key(Provider 目录 ∪ 消耗记录 ∪ 已有计划键)的 Token Plan 设置——勾选订阅、订阅费、套餐包含 Credit、套餐起效时间与有效期(默认按 31 天计算,也可选择每月 1 号(UTC+0)自动重置),并按统计金额与订阅费对比判断有没有回本(进度条 + 已回本/未回本)与「换算 1 Credit = ? Tokens」;每个 Key 都可删除原有的 Token plan 属性(删除后不再按订阅计费,消耗记录与金额保留)。周期到期自动归档为「上一轮」,使用分析页可手动重置当前周期(重置后之前的消耗不再计入现在的回本计算,不影响消耗总额统计)。
Provider ID 管理(0.3.2,设置页):插件自维护 Provider 目录(Provider ID + 显示名 + 环境变量名 + 所含模型——显示名与所含模型取自全局模型设置,模型列显示「显示名(模型 ID)」),支持重置(重新抓取全局模型设置 + 账本观测并持久化)与手动删除失效 Provider ID(移出目录 + 删除其 Token Plan,重扫不再复活);首次启动 / 无数据时也会自动抓取已配置 Provider 的 ID / 显示名 / 所含模型,全局模型设置变更或目录退化(只剩账本观测)时自动重扫。
峰谷计价:实行峰谷计价的模型(如 DeepSeek)按每次调用的时刻取「峰时 / 谷时」价,窗口与生效日规则可配置(默认即 DeepSeek 官方规则);0.3.7 起主体峰谷规则支持逐日生效日(工作日/自定义/每天)、自定义时区(默认 UTC+8)与峰时价格方式(倍率/自定义,自定义留空字段按原价)。
推荐:打包成 tarball 安装(Windows 下 dsh plugin add <路径> 会被 pnpm 变成 link: 依赖,而 junction 的真实路径会破坏 Node 的模块解析——tarball 安装可避免):
# 1. 在插件源码目录执行,产出 tarball(文件名形如 dsh-task-notice-<版本>.tgz)
pnpm pack
# 2. 安装:把 <tarball 路径> 替换为上一步产出的文件的实际路径
# (路径含空格时请加引号;要装到非默认 profile 时加 --profile <profile 名>)
dsh plugin add <tarball 路径>
dsh plugin add会先pnpm add安装依赖,再把声明了dsh.bundle.patch的包加入dsh.profile.bundles层栈。完成后重启 DSH(如dsh web)生效——即使该 profile 的patchReload为 live,依赖变更也需要重启。直接用
dsh plugin add <目录>也可以安装,但要用完整功能请用上面的 tarball 方式。
卸载:
dsh plugin remove dsh-task-notice
# 装到了非默认 profile 时,加上对应参数,例如:
# dsh plugin --profile <profile 名> remove dsh-task-notice
打开 设置(Settings)→ 任务通知与消耗,即可:
口径:缓存输入 =
cacheReadTokens(命中缓存);缓外输入 =inputTokens(未命中缓存);输出 =outputTokens。消耗按每次模型调用的 provider 上报 usage 记账,并按该调用实际使用的 Provider(全局模型设置路由)归集(Key 身份 = Provider ID,0.3.2;环境变量名如DEEPSEEK_API_KEY只作辅助展示)。
在 设置 → 任务通知与消耗 页顶部点击「使用分析」导航切换到使用分析视图,分析规定时间范围内各大模型的使用资金状况(时间范围:24小时 / 1周 / 15天 / 1个月 / 3个月 / 6个月 / 1年 / 自定义,与分析页共用一套查询):
周期口径:Token Plan 的回本 / 性价比 / 每日加权摊薄按计费周期(当前 TID)计算,不受当前选中的展示时间范围影响;饼图与 Provider 额度表按展示范围统计。TID 为插件内部周期身份,不向用户显示。
在 设置 → 任务通知与消耗 页顶部点击「价格编辑」导航切换到价格编辑视图:
1-4,6-10,按主体时区的小时)与峰时价格方式(倍率 / 自定义——自定义直接填五个峰时单价,留空字段按原价计费);规则自上而下逐条判定,首个命中调用时刻的规则生效,无命中按基础价(Provider 规则优先于集体规则,主体规则优先于官方目录内嵌峰谷档),退出本页即保存此页的一切更改;启用后对应卡片显示「峰谷」徽标与规则摘要。金额口径 = 各类 tokens × 对应单价 ÷ 1M,价格按「每 1M tokens」计;改价只影响展示与通知标题,不改动原始 usage 账本。
旧账目(0.1/0.2)默认按低谷价:旧版本记录的账目没有峰谷语义,插件对无版本标记的旧条目统一取低谷价(模型未配置峰谷档时即基础价),避免旧数据被按峰时价回溯计费;0.3 起记录的消耗(账目带
ver)按每次调用的时刻取峰/谷档。
deepseek-flash 别名,模型名 deepseek-flash 的调用按 deepseek-v4.1-flash 官方价计费(缓存命中 ¥0.02 / 缓外输入 ¥1 / 输出 ¥4,每 1M tokens)。打开 设置 → 任务通知与消耗 页,在顶部导航切到「设置」视图即可调整:
| 字段 | 说明 | 默认 |
|---|---|---|
| 插件总开关 | 关闭后停止通知与记账 | 开 |
| 每轮任务弹窗 | 每完成一轮任务即弹窗 | 开 |
| 目标完成弹窗 | 目标(goal)完成时弹窗 | 开 |
| 权限请求提醒 | 代理请求权限时通知你处理 | 开 |
| 提问提醒 | 代理提问需要你回答时通知 | 开 |
| 弹窗时长(秒) | 弹窗自动消失秒数(3–120,滑块) | 15 |
| 浏览器系统通知 | 经 Web Notifications API 发送系统通知(需页面授权;Edge 横幅 + 操作中心) | 开 |
| 仅后台时发送 | 页面在前台时只显示页内弹窗,切到后台/最小化后才发系统通知 | 开 |
| 账本保留天数 | 消耗账本保留天数(1–3650,滑块) | 365 |
清除记录数据(0.3.1):设置页底部可清除全部 Token 消耗统计账本。为防误操作,必须依次完成:① 拖动图形验证码滑块(按住滑块拖到最右端,松手后变绿锁定);② 输入随后出现的随机 8 位英文数字验证码(区分大小写,可点「换一个」);③ 连续点击两次「确认清除」。清除后「消耗统计」「使用分析」与完工通知金额全部归零并自动刷新,价格 / 套餐 / 峰谷配置不受影响。若宿主进程尚未重启(remote 无 clearUsage),面板会提示重启 DSH。
$DSH_HOME/storages/task-notice/usage.json(追加式,原子写,按保留天数裁剪;0.3.1 起每条账目带 ver 标记,旧账目按低谷价计费;0.3.1 修复 Key 归因后,启动时会按真实路由配置重算一次历史记录的归属;0.3.2 起 Key 身份 = Provider ID,账本旧 key 标签在读取侧自动迁移)。$DSH_HOME/storages/task-notice/config.json(由设置页写入,含价格、Token Plan(0.3.2 起以 Provider ID 为键;0.3.4 起每个周期含内部 TID、冻结历史 cycles、429/402 待确认 pending 与撤回快照 _undo)、峰谷配置与插件自维护的 Provider 目录(0.3.2,providers 段:list + removed 黑名单);0.3.7 起含顶层 pricingVersion 标记——价格配置结构版本,旧版本价格数据迁移(独立脚本)据此只在升级后第一次启动执行一次)。lib/
index.js 宿主插件入口(name / apply;零顶层外部 import,依赖解析失败只停用本插件)
store.js 消耗账本(usage.json,原子写、保留裁剪)
accounting.js llm/stream 瀑布捕获(usage 块 → 记账;流抛错时识别 402/429/QUOTA 等 Token Plan 错误码,0.3.4)
fold.js 会话日志折叠(turn/end、goal/change → 通知帧)
notify.js 通知枢纽(推送队列 + 流订阅)
keys.js provider → 凭证引用(API Key)解析(按真实路由配置:llm-* 命名空间 providers[route].apiKeyEnv)
providers.js Provider 目录(0.3.2):从全局模型设置抓取 Provider ID / 显示名 / 环境变量名 / 所含模型(0.3.7:模型条目带显示名 name,目录重扫判定,模型归属 Provider ID 判定 providerOfModel);Key 身份归一、旧 env 键 → Provider 迁移
service.js taskNotice RPC 服务(getHealth/getConfig/updateConfig/getUsageStats/getUsageAnalysis/resetPlanCycle/undoPlanCycle/renewPlanCycle/dismissPlanPending/clearUsage/subscribeNotifications/getPriceCatalog/getProviderDirectory/refreshProviderDirectory/deleteProviderId)
typert.host.js 手动注册的 Typert 清单工厂(zod v4 编解码)
pricing.js 价格计算(模型跨 Provider 合并 / 官方价默认 / 大小写不敏感查找 / 倍率模式与 Provider 倍率 / 旧账目低谷价 / 峰谷 v2 取档(生效日+时区+峰时价格方式) / 金额折算 / Token Plan 计费周期)
pricing-migrate.js 0.3.7 旧版本价格配置迁移(独立脚本:升级首启自动把旧峰谷规则 / 倍率字段应用到 v2 结构,pricingVersion 标记只执行一次)
pricing-catalog.js 内置官方价格目录(268 条,双币种 + 显示名,峰谷子档;默认价以《大模型API定价对比(7).csv》为基准,0.3.8 与该 CSV 逐条核对并补入新增的硅基流动条目)
analysis.js 使用分析计算(模型聚合 / 消耗聚合严格按 Provider 目录归属 / 品牌读目录显示名(0.3.7)/ Token Plan 计费周期轮换与重置 / TID 周期身份与冻结历史 / 429/402 临时账本 / 性价比(0.3.7 修复:计划 Provider 按模型调用量 ÷ 加权金额)/ 每日同 TID 加权平均摊薄)
client.js 浏览器端(顶部提示横幅(0.3.6:通知权限一键授权 / 未定价模型点击直弹价格编辑弹窗)+ 完工弹窗 + 今日消耗 + 消耗统计 + 使用分析(含 Token Plan 重置保护/撤回 + 429/402 提示弹窗/续费确认 + 历史周期 + 待确认横幅)+ 价格编辑(0.3.7:模型显示名 / 自定义-倍率方式 / Provider 价格倍率 / 峰谷规则 v2)+ 设置:插件配置 / Token Plan Key 管理 / Provider ID 管理 / 清除数据)
cordis.patch.yml 本包的 profile 层补丁(挂载一行)
依赖纪律:宿主入口零顶层外部 import(只 import Node 内建模块与自身模块);运行期可用的服务(session/settings/credentials/typert/loader/llm)一律经 ctx 访问。唯一的外部包 zod(Typert 编解码)只在 lib/typert.host.js 顶层 import,而该文件由 typert-loader 直接加载、不经宿主入口——即使依赖解析失败(如 Windows link: 安装的 junction realpath 陷阱),也只让本插件的 Typert 清单注册失败,DSH 照常启动。
MIT