dsh-session-budget:为 DSH 会话补上 token、费用与时长的硬上限

前言

DeepSeek Harness(DSH)在 goal 模式下,round 驱动会持续开新轮次直到目标完成。官方文档也写明:round 上限「不是资源预算」——token、金额、耗时和供应商配额仍是各自独立的策略。长时间跑任务时,模型可能在不知不觉中把一轮会话的用量推高,既没有预警,goal 模式也会继续自动续跑。

dsh-session-budget(维护者 laiyouxing,GitHub:laiyouxing/dsh-session-budget)就是为 DSH 补这一层:按会话设置 token、费用和墙钟时间三类预算,任一触顶即停止本轮模型会话;并可选用 DeepSeek 公布的峰谷时段,在峰值窗口内暂停任务、谷段自动恢复。下面介绍它的定位、能力与用法。

这是什么

这是一款面向 DeepSeek Harness 的插件,分类上可归为模型推理相关的用量与成本控制。状态落在本机 ~/.dsh 下的 JSON,无额外联网遥测。

核心功能

三类独立预算

每个会话可任意组合配置:

维度 计入内容 说明
tokens 每条 assistant/message 的 uncachedInput + cacheRead + cacheWrite + output 同一步重试会覆盖采样,不重复计数
money 上述四桶用量 × 设置页中的四个「每百万」单价 四个单价须全部配置,否则金额不累计;有钱上限但单价全为 0 时会提示
time 自设定预算起的墙钟分钟数 与 token 无关,由插件定时器检查

字段留 0 表示该维度不限制。

触顶行为:硬停止,而非提示

触达任一上限时,插件会:

  1. 在 agent/pre-step 返回 { kind: 'reject' },模型调用不会发生,回合以 blocked 结束。
  2. 阻塞或暂停会话的 goal(budget-exhausted 或 onExceed: pause),goal 模式无法自动续跑。
  3. 对进行中的回合调用 agent.cancel({ kind: 'hook', reason }),界面显示为已中止。
  4. 在提高上限、reset、或谷段开始后,由本插件造成的停止可被清除并恢复 goal;因 round-limit、用户编辑等原因被阻塞的 goal 不会由此插件恢复。

会话中途改预算

在会话中途设置预算时,会从该会话已有日志回填已记录的用量,上限针对整段会话而非仅设置之后。

DeepSeek 峰谷时段

默认对齐 DeepSeek 定价文档 中的峰值定义:UTC 周一至周五 01:00–04:00、06:00–10:00(中国公休日除外);对应 Asia/Shanghai 为工作日 09:00–12:00、14:00–18:00。默认窗口可通过 peakWindows、peakTimezone、peakWeekdays、peakSkipDates 等调整;设置页可同步官方价表与节假日日历(holiday-cn 等)。

峰值窗口内会话暂停并取消当前回合;谷段开始时在满足条件时自动恢复 goal。会话级可用 /budget peak on|off|auto 覆盖插件默认。

三个入口

  • 输入框上方一行摘要条(用量、峰值暂停提示、「设置上限」)。
  • 聊天命令 /budget。
  • 设置侧栏「会话用量预算」(插件包页、patch 行配置亦可进入同一设置页)。

环境与依赖

  • 带 Web UI 的 DSH(dsh web 或 DSH Desktop)。
  • Node.js 22+(仓库测试在纯 Node 上运行,无构建步骤、无额外依赖安装)。
  • @deepseek-ai/schemastery 由宿主以 peer 方式提供。

许可证:MIT(package.json 当前版本 1.6.0)。

安装与启用

在应用内插件管理器中添加下列 spec(须使用 profile;勿与 Desktop 混用终端 profile):

dsh plugin --profile <profile> add github:laiyouxing/dsh-session-budget
  • DSH Desktop: 在应用内 Settings → Plugins 粘贴 github:laiyouxing/dsh-session-budget,不要用针对 web profile 的终端命令。
  • 纯 dsh web: 执行上述命令后重启 dsh web。
  • 本地目录: dsh plugin --profile <profile> add /absolute/path/to/dsh-session-budget。

安装后刷新页面;输入框上方应出现摘要条,设置中出现「会话用量预算」。

典型用法

摘要条

一行示例(README 中的示意):

[dot] 预算 3.2M / 50M · ¥1.40 / ¥5 · 42m / 3h   [峰值暂停 · 12 分钟后恢复]   [设置上限]

已配置维度显示 已用 / 上限;触顶或峰值暂停会有对应标签;「设置上限」可内联编辑三项并 reset、clear。

/budget 命令

命令 作用
/budget 或 /budget status 查看上限、用量、剩余与峰谷安排
/budget set tokens=500k money=5 time=120 设置子集;token 支持 200k、1.5m 后缀,money 为金额,time 为分钟
/budget peak on / off / auto 本会话峰谷策略
/budget reset 保留上限,用量从零重计
/budget off 移除本会话预算并恢复因本插件停止的 goal

设置页

可编辑插件默认值:各类上限、单价与货币、触顶动作、峰谷窗口与时区、工作日与节假日跳过、tick 间隔、数据文件等;保存写入插件自有存储,不重启宿主。可按 CNY/USD 从官方价表同步四个「每百万」单价。

适用场景与注意

适合在 DSH goal 模式或长会话里需要明确「最多花多少 token、多少钱、多少时间」的场景,以及希望在 DeepSeek 峰值单价时段自动暂停、谷段续跑的场景。

安装前建议自行查看仓库源码与 MIT 许可证。插件与当前 dsh 进程同权限运行,能读写 ~/.dsh 下状态;设置页同步价表与节假日时会发起网络请求,日常计账与拦截逻辑仍在本地完成。

结尾

dsh-session-budget 把 DSH 文档里仍独立的「资源策略」落成可操作的会话级上限与峰谷暂停,触顶即停 goal、拒掉后续 pre-step,避免静默烧穿一轮任务。目录与源码:

  • 社区目录:https://www.skillhub.cn/plugins/laiyouxing/dsh-session-budget
  • GitHub:https://github.com/laiyouxing/dsh-session-budget

DSH 生态以「一切皆插件」为方向;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。按需选用即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜