deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Eligahyu/deepseek-peak-valley-router
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 简体中文
DeepSeek Harness 的峰谷定价自动模型路由插件:自动识别 DeepSeek API 当前处于高峰还是空闲时段,并据此自动选择模型——高峰时段用便宜的 deepseek-v4-flash 省钱,空闲时段用更强的 deepseek-v4-pro 提质量。你显式选择的模型始终优先,插件绝不剥夺你的选择权。
背景:DeepSeek 自 2026-08-17 起对 V4 系列 API 实行峰谷定价——高峰时段价格为空闲时段的 2 倍。官方高峰时段按北京时间定义为
09:00-12:00与14:00-18:00,其余为空闲时段。本插件据此自动调度,无需手动换模型。
Asia/Shanghai,可配置)换算任意系统时区/夏令时下的当前时刻,判定高峰/空闲deepseek-v4-flash;空闲 → deepseek-v4-proagent-default-model 设置的变更事件识别agent/request 瀑布的正式返回,记录进会话 request/header 事件,不是静默漂移peakvalley_status — 查询当前时段、参考时区时间、目标模型、路由模式(auto / respect)、你显式选择的模型peakvalley_reset — 恢复自动路由(清除内存中的用户选择记录,直到你再次在界面选模型)timeZone 配置自动回退默认时区并告警,绝不会让请求失败;启动兜底采用懒加载,与宿主服务加载顺序无关reasoningEffort(flash 可能仅支持 off),避免请求被拒绝| 时段 | 北京时间 | 定价 | 自动路由 |
|---|---|---|---|
| 高峰 | 09:00–12:00、14:00–18:00 | 全价(空闲的 2 倍) | deepseek-v4-flash |
| 空闲 | 其余时间 | 半价 | deepseek-v4-pro |
价格以 DeepSeek 官方公告为准,见文末参考链接。若官方调整时段,修改
lib/timezone.js中的PEAK_WINDOWS即可。
在 Harness 对话里用 cordis_define 工具创建插件,把 dynamic/host-code.js 中 HOST_CODE 的完整内容粘贴到 code.host 参数,然后 cordis_run 激活即可。
本包是标准 DSH bundle(声明了 dsh.bundle 与 cordis.patch.yml),用官方安装路径即可:
# 本地 checkout
dsh plugin --profile web add ./deepseek-peak-valley-router
# 或从 GitHub
dsh plugin --profile web add github:Eligahyu/deepseek-peak-valley-router
# 发布到 npm 后(推荐,无需构建授权):
dsh plugin --profile web add deepseek-peak-valley-router
dsh --profile web # 重启生效
时区配置(可选,默认 Asia/Shanghai):在 profile 自己的补丁层覆盖即可:
# ~/.dsh/profiles/web/cordis.patch.yml 追加
- id: deepseek-peak-valley-router
config:
timeZone: 'America/New_York'
依赖:运行在 DeepSeek Harness 内,
@deepseek-ai/dsh-tools由宿主提供(见 package.json 的 peerDependencies),经 launcher 维护的扁平模块回退自动解析,无需手动安装。
agent-default-model 设置,插件监听该设置的变更事件;一旦检测到,同一 provider 下的所有请求都直接路由到你选择的模型(请求当前配置来自会话/子代理的冻结值时也不例外)。插件启动后首个请求若发现默认模型已是 pro(非出厂默认 flash),也会视为你的历史选择。lib/timezone.js 用 Intl.DateTimeFormat(IANA 时区,hourCycle: 'h23')把机器墙钟时间换算到参考时区,任何系统时区/夏令时下都正确;非法时区回退默认时区,Intl 不可用时回退 UTC+8 偏移(Asia/Shanghai 无夏令时)——请求路径上绝不抛错。agent/request 瀑布事件——next() 产出冻结的 LlmCallConfig,返回替换对象即完成切换,循环会把切换记录进 request/header。installModelSelection)保证优先;插件在自身 respect 检查里主动路由到用户选择,双保险。已知运行时说明:插件激活之前就已创建的会话,其模型由会话自身的"选择冻结"机制主导——你手动选模型立即生效且插件尊重;自动路由在下次页面刷新/重连(agent 重建)后对该会话生效,对新会话和所有子代理立即生效。这是 Harness 模型路由架构(冻结配置 + 会话选择优先)的既定行为。
双版本差异:动态版额外暴露
harness.handle('peak-valley-status')Host 通道(供后续 Client UI 查询);组合版没有 Host 通道,状态查询通过对话级工具peakvalley_status完成。其余行为完全一致。
npm test(Node ≥ 20,node --test,21 个用例:时区纯逻辑 + 路由行为)peak-valley: 进入高峰时段(...),DeepSeek 模型路由 -> deepseek-v4-flash;每次切换打印 peak-valley: deepseek-v4-flash -> deepseek-v4-pro (...)peakvalley_status 查看当前状态request/header 事件记录每个请求实际使用的模型deepseek-peak-valley-router/
├── .github/workflows/test.yml # CI:Node 20/22/24 上自动跑 node --test
├── cordis.patch.yml # bundle patch(官方 dsh plugin add 安装入口)
├── lib/
│ ├── index.js # 组合安装版插件(ESM,配置文件读 config.timeZone)
│ └── timezone.js # 纯逻辑:时区换算 + 峰谷判定(零依赖,可独立测试)
├── dynamic/
│ └── host-code.js # 动态安装版(cordis_define code.host 原文)
├── test/
│ ├── timezone.test.js # 时区换算、边界时刻、跨午夜
│ └── router.test.js # 路由行为:自动路由/用户选择优先/时区容错/工具
├── package.json
├── CHANGELOG.md
├── README.md # 中文文档
├── README.en.md # English docs
└── LICENSE
request/header 可查)。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。