Bundle
dsp-deepseek-peak
DeepSeek API 计费峰谷提示:常驻显示当前峰/谷时段;峰时段使用 DeepSeek V4 Pro 提交任务时弹窗二次确认(支持今日不再提醒)
- Source
- Heldea-xianmiao
- License
- MIT
- Updated
- Updated 3 days ago
Readme
# dsp-deepseek-peak
> DeepSeek API 计费峰谷提示 · 一个为 [DeepSeek Harness](https://github.com/deepseek-ai/dsh) Web GUI 制作的插件
DeepSeek API 采用**分时段计费**:北京时间每天 `09:00–12:00` 与 `14:00–18:00` 为**峰值时段**(价格更高),其余时间为**谷值时段**。本插件在你的 DSH 界面里常驻显示当前处于峰还是谷,并在**峰值时段**用 **DeepSeek V4 Pro** 提交任务时弹出二次确认,避免在最高价的时间段不知不觉跑完高成本任务。

## 功能特性
- **常驻峰/谷徽章**:显示在输入框下方的状态栏(`conversation.composer.dock`),绿点 = 谷时段,橙点 = 峰时段,附实时北京时间与峰时段范围,每 30 秒自动刷新。
- **峰值时段二次确认**:满足以下全部条件时,提交任务会在第一步开始前弹窗确认:
1. 当前为峰值时段(北京时间 09:00–12:00、14:00–18:00);
2. 当前会话使用的模型是 **DeepSeek V4 Pro**(跟随 composer 模型选择,实时生效);
3. 是你新提交的回合(子代理、工具续步、重试均不会重复弹窗)。
- **三个选项**:
- **继续使用** — 按当前配置立即开始任务;
- **今日不再提醒** — 继续使用,且**北京时间当天之内**不再弹窗;
- **取消本次** — 本次任务不执行(回合以 blocked 结束,消息保留在会话中)。
- **「今日不再提醒」跨重启生效**:选择后写入浏览器 `localStorage`,并与宿主内存双向同步;页面刷新、DSH 宿主重启都不会丢失,北京时间零点自动失效。
- **完全 fail-open**:任何判断异常(无弹窗组件、会话异常、模型读取失败)都会直接放行,绝不卡住你的任务。
## 工作原理
```
┌───────────────────────── DSH Host ─────────────────────────┐
│ agent/pre-step 拦截(新回合第一步) │
│ → 峰时段? → V4 Pro? → 今日不再提醒? │
│ → userQuestions.ask 弹窗(继续 / 今日不再提醒 / 取消) │
│ → 取消 = { kind: 'reject' },任务不执行 │
│ webServer 同源路由: │
│ GET /dspk/state → { noRemindDate, peakNow, ... } │
│ POST /dspk/no-remind → 上报浏览器侧的「今日不再提醒」 │
└─────────────────────────────────────────────────────────────┘
▲ 同源 HTTP(本机回环)│ 镜像
┌───────────────────────── DSH Client ───────────────────────┐
│ composer.dock 峰/谷徽章(30s 刷新) │
│ localStorage 持久化「今日不再提醒」 │
│ 页面加载 / connection/reset 时上报 Host │
└─────────────────────────────────────────────────────────────┘
```
- 峰谷判断使用**北京时间(UTC+8)**,由 Host 与 Client 各自独立计算,不依赖系统时区设置。
- 模型来源:`agentDefaultModel.currentSelection()`(composer 选择模型会同步为默认选择),兜底读取会话最近一次请求头。
## 安装
### 方式一:手动加入 profile(推荐)
1. 将本仓库克隆(或复制)到任意位置,例如:
```bash
git clone https://github.com/Heldea-xianmiao/dsp-deepseek-peak.git
```
2. 在你的 DSH profile(如 `$DSH_HOME/profiles/web`)的 `package.json` 中添加依赖与 bundle:
```jsonc
{
"dependencies": {
"dsp-deepseek-peak": "link:<本仓库的绝对路径>"
},
"dsh": {
"profile": {
"bundles": [ /* ...原有列表... */, "dsp-deepseek-peak" ]
}
}
}
```
3. 在 profile 目录执行 `pnpm install`(或按需手动建立 `node_modules/dsp-deepseek-peak` 链接)。
4. **重启 DSH**。重启后输入框下方即出现峰/谷徽章;改 Host 侧代码需再次重启,仅改 `lib/client.js` 刷新页面即可。
### 方式二:`dsh plugin` 命令
```bash
dsh plugin --profile web add file:/path/to/dsp-deepseek-peak
```
(该命令转发给 pnpm;仍需在 profile 的 `dsh.profile.bundles` 中补一行 `dsp-deepseek-peak`,并重启 DSH。)
## 自定义
| 想改什么 | 改哪里 |
| --- | --- |
| 峰谷时段(如改为 08:00–10:00) | `lib/index.js` 的 `isPeakNow()` 与 `lib/client.js` 的 `isPeak()` |
| 触发弹窗的模型(如只对 V4 Pro 生效) | `lib/index.js` 的 `isDeepseekV4Pro()` |
| 弹窗文案 | `lib/index.js` 的 `askConfirmation()` 中的选项与问题 |
| 徽章刷新间隔(默认 30s) | `lib/client.js` 中的 `window.setInterval(..., 30000)` |
修改后重启 DSH 生效。
## 隐私说明
- **纯本地运行**:所有计算(峰谷判断、模型判断、弹窗)都在你自己的 DSH 宿主与浏览器内完成,**没有任何数据上传**。
- 浏览器侧仅使用 `localStorage` 存储一个「今日不再提醒」的日期字符串(如 `2025-09-06`)。
- Host 与 Client 通过 DSH 内置的 `webServer` 在本机回环地址通信,不经过任何第三方。
- 本仓库不含任何凭据、令牌或本地路径。
## 兼容性
- DSH Web profile(`rc.6+`),依赖宿主服务:`agentDefaultModel`、`userQuestions`、`webServer`、`agents`。
- 无任何第三方运行时依赖,Host 为纯 ESM,Client 为标准 ModuleLoader bundle。
## 许可证
[MIT](LICENSE) © Heldea-xianmiao
---
## English
A DSH (DeepSeek Harness) web plugin that shows whether DeepSeek API is currently on **peak** or **off-peak** billing (Beijing time 09:00–12:00 / 14:00–18:00 = peak), and asks for a second confirmation before starting a task with **DeepSeek V4 Pro** during peak hours — with a "don't remind me today" option. Everything runs locally; no data leaves your machine.
Install
dsh plugin --profile web add github:Heldea-xianmiao/dsp-deepseek-peak#14dac9ac7e1364308c43d62db3efe7c68f6bc9a4
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsp-deepseek-peak from the hub