편집자 노트

AlexShang1992/dsh-offpeak

A live peak/off-peak pricing readout for the DeepSeek Harness Web GUI: one status pill under the composer, with the effective prices on hover. · DeepSeek Harness

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-offpeak

English | 中文

CI release license node

DeepSeek 按 UTC 定义的两个每日时段计价。本插件把这件事放到你看得见的地方:在 DeepSeek Harness Web GUI 的输入框下方显示一个状态浮标,给出当前时段、价格倍率与距下次切换的倒计时;鼠标悬停时展开当前有效价格和切换时间。

插件就这些。它不注册任何工具与命令,不向任何模型请求贡献内容,不写任何文件,也不发起任何网络请求。

高峰时段(×2)错峰时段(×1)
高峰时段的状态浮标,悬停展开详情错峰时段的状态浮标

计价时段

时段UTC 时间价格
高峰08:30 – 16:30peakMultiplier × 基础价(官方值 2
错峰16:30 – 08:30基础价

时段边界取自 DeepSeek 公布的窗口,固定写在 src/pricing.ts 中;倍率、三档基础价、显示货币和显示时区都是设置项。windowKindAt 将边界时刻归入从该时刻开始的那个时段:08:30:00.000 UTC 属于高峰,16:30:00.000 UTC 属于错峰。

浮标显示的价格是你自己填的价格乘以倍率。插件不读取计价页,也不读取账单,因此官方调价后需要你自己更新。

安装

需要 Node.js ≥ 22.19 上的 DeepSeek Harness Web profile。

dsh plugin --profile web add https://github.com/AlexShang1992/dsh-offpeak/releases/latest/download/dsh-offpeak.tgz

每个 release 都会带上这个打包好的 tarball;把 latest 换成 tag (.../download/v0.1.0/dsh-offpeak.tgz)即可钉住某个版本。本包尚未发布到 npm。

直接安装 github: 引用不可行:仓库不提交构建产物,包需要靠自己的 prepare 脚本构建,而 pnpm 10 默认拒绝执行依赖的生命周期脚本,除非使用方显式放行。 tarball 则不需要任何构建步骤。

重启 dsh --profile web。进入会话后浮标出现在输入框下方,计价表单出现在 设置 → 错峰计价

浮标显示什么

横条本身显示当前时段、以 ×N 表示的倍率,以及距下次切换的时间。悬停(或聚焦——它可由键盘访问,并通过 role="status" 播报)会展开详情面板:当前时段下输入、缓存命中、输出每 1M tokens 的有效价格,以及下一个时段开始的钟表时间(按你设置的显示时区)。

这些全部由浏览器根据下方设置和浏览器自身时钟推导得出,走的是 host 侧校验过的同一个纯模块——因此浮标不可能与它读取的设置脱节。

配置

offpeak 设置命名空间以 applies: 'live' 注册:每个字段改动即刻生效,无需重启。

错峰计价设置面板

设置项默认值含义
enabledtrue是否显示浮标
currencyUSD显示货币(USDCNY,按 cnyPerUsd 换算)
cnyPerUsd7.1美元→人民币系数,仅用于展示
inputPricePerM0.28输入(缓存未命中)基础价,USD / 1M tokens
cacheHitPricePerM0.028缓存命中基础价,USD / 1M tokens
outputPricePerM0.42输出基础价,USD / 1M tokens
peakMultiplier2高峰时段的价格倍率(1–100)
displayUtcOffsetMinutes480展示切换时间所用的时区偏移;时段本身按 UTC 定义

默认值取自撰写时 DeepSeek 公布的价格,请及时更新。

组合方式

- id: dsh-offpeak
  name: dsh-offpeak

cordis.patch.yml 会把这一行挂载在 Web app 层之后,于是 profile 的 Loader 能解析到该包,Web 服务端也会从 /plugins/dsh-offpeak/client.js 提供浏览器侧代码——不需要第二行配置。

Host 侧注入 settingstypert:注册设置命名空间,并挂载 offpeak Typert Remote 服务,其全部接口就是 getSettingsupdateSettings。浏览器侧注入 remoteslotslocalesessionsconnection,并以 order 40 向 conversation.composer.docksettings.section 各贡献一个条目。Host 与 client 共用 src/contract.ts 中的 zod 编解码器与 invocation 描述符,两个调用都在传输层被校验。

设置通过 harness 自身的 settings provider 以 offpeak 命名空间持久化。插件不写任何自己的文件,卸载后除了那一段设置外不留痕迹。

模型体验

模型所见内容

无。插件不注册工具、不注册命令、不贡献系统提示词段落,既不调用 agent.steer(),也不向会话日志追加任何内容。浮标只是浏览器对用户所填设置的一次渲染,模型无从得知它存在。

Token 影响

每次请求都是零。

KV Cache 影响

无。插件不贡献任何请求文本,因此既不会延长也不会失效任何可复用前缀。

开发

pnpm install          # 通过 prepare 脚本顺带完成构建
pnpm run check        # typecheck + test + lint + build,与 CI 等价
pnpm run test:watch
src/
  pricing.ts     纯时段计算与展示助手——host 与浏览器共用
  contract.ts    传输契约:设置类型、zod 编解码器、Typert invocation
  settings.ts    `offpeak` 设置命名空间
  runtime.ts     OffpeakRuntime——`offpeak` Typert Remote 服务
  index.ts       host 插件入口
  client/        浏览器侧:状态浮标、设置面板、中英词典、样式
tests/           时段边界、Remote 接口、样式表与词典契约

构建产物:lib/index.js(host ESM)、lib/client.js(浏览器 bundle)、lib/types/(类型声明)。

单元测试看不到真正容易坏的接缝——插槽渲染、主题 token、传输校验——所以改动后请先在真实 profile 里跑一遍再下结论,两条命令见 CONTRIBUTING.mddocs/screenshots/ 中的截图取自真实运行的 harness,替换前请先阅读 docs/screenshots/README.md

已知限制与后续工作

  • 价格是你填的,不是 DeepSeek 给的。 没有任何机制会拿它与官方计价页或你的实际账单核对,价格表过期时显示的就是自信而错误的数字。
  • 时段边界固定在代码中。 只有倍率与价格可配置;若服务商调整时段窗口,需要改代码。
  • 倒计时依据浏览器时钟。 机器时钟严重不准时,显示的时段也会严重不准。
  • 仅限 Web。 浮标与设置面板都是浏览器界面;没有 Web app 的 profile 会加载插件但什么也看不到。

安全

安装插件意味着以你自己的权限运行第三方代码。本插件不写文件、不发起网络请求、不收集任何数据,唯一的持久痕迹是它自己的设置段。详见 SECURITY.md

许可

MIT © 2026 Alex Shang。与 DeepSeek 无隶属关系。

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

prepare이(가) 감지되었습니다. 설치 전에 스크립트를 검토하세요.

주의 사항lifecycle-scripts