DeepSeek Harness Budget and Handoff Plugin: dsh-budget-handoff

前言

DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。在长时间运行智能体任务时,预算失控或任务突然中断且无记录是常见痛点。ziostudio/dsh-budget-handoff 是一个 Session budget brake 插件,它根据官方价目表实时计算消费,在预算耗尽时停止运行,并留下一份可恢复的交接快照。

安装与启用

安装该插件需要指定 profile。安装完成后需重启 DSH。

dsh plugin --profile <你的profile> add dsh-budget-handoff

安装过程中若看到 missing peer 告警,属于结构性噪音,不影响使用。若需要固定版本,可在命令末尾添加版本号。

核心功能

该插件提供以下能力:

  1. 按官方价目表计费:监控每一次调用,对照官方价格表计算成本。
  2. 预算耗尽拦截:当会话预算用完时,立即停止任务执行。
  3. 交接快照:拦截时生成一份包含上下文、文件改动和进度的快照文件,便于后续恢复。
  4. 预算管理:支持设置、查询和临时提高预算。
  5. 80% 预警:当消费达到预算的 80% 时发出提醒,但不会停止任务。

使用方法

基础命令

在 DSH 会话中发送以下命令(大小写与空格不敏感):

  • /budget 5:将本会话预算设为 5 元。
  • /budget:查询当前剩余预算与已用金额。
  • /budget 20:提高预算上限(需大于已花掉的金额)。

如果不设置,每个会话默认预算为 10 元。

预算管理细节

  • 格式校验:/budget abc 会明确提示格式错误并给出用法。
  • 下限限制:/budget 0 或 /budget -1 会被拒绝,下限为 0.0001 元。
  • 跨会话隔离:不同会话的预算互不影响。

预警与拦截机制

  1. 80% 预警:当已用金额达到预算的 80% 时,插件会发送一条提醒,说明剩余金额和预计拦截点。任务会继续运行,此提醒仅在会话中触发一次。
  2. 100% 拦截:当预算真正耗尽时,任务执行会被停止。此时 CLI 的退出码为 1。

预算耗尽后的处理

1. 生成交接快照

当预算耗尽时,插件会在本地生成两个文件:

  • <你的工作目录>\BUDGET-STOPPED-handoff-snapshot.md
  • <$DSH_HOME>\storages\dsh-budget-handoff\last-stop.md

快照包含以下信息:

  • 生成时间与会话 ID。
  • 触发位置(turn/step)。
  • 累计消费与预算对比。
  • 任务目标描述。
  • 干到哪了(工作目录、回复次数、最近动作)。
  • 动过哪些文件。
  • 怎么接着干(恢复步骤)。

2. 恢复任务

要继续之前的工作,需满足以下条件:

  1. 提高预算:使用 /budget <新金额> 提高上限,新金额必须大于已花掉的金额。
  2. 输入指令:发送指令 继续。

由于交接快照已注入模型上下文,模型可以基于此断点继续执行,无需从头开始。

配置

若需修改全局默认预算,可在 profile 的 cordis.patch.yml 中添加配置:

- insert:
    - id: dsh-budget-handoff
      name: dsh-budget-handoff
      config:
        budgetCNY: 20.0

配置项说明:
* budgetCNY:每会话预算,单位人民币元,默认 10.0,下限 0.0001。
* verbose:是否将逐笔用量输出到 stdout,默认 false。

计费规则与限制

计费覆盖范围

插件仅覆盖 deepseek-official provider 下的特定模型:
* deepseek-flash
* deepseek-v4-pro
* deepseek-v4-flash
* deepseek-v4-flash-vision-exp

如果使用其他 provider 或模型,插件无法计费,提示预算保护失效。

价格表与时段

价格基于 src/pricing.json,单位为人民币元 / 百万 token。包含缓存命中/未命中、高峰/空闲两档价格。

  • 高峰时段:北京时间(UTC+8)周一至周五 09:00–12:00、14:00–18:00。
  • 空闲时段:除高峰时段外的时间(含周末)。
  • 节假日处理:插件未建模法定节假日。节假日白天会被按高峰价(2 倍)计费,可能导致预算提前用完。

已知限制

  1. 单步会话不会触发拦截:闸门在“下一步开始前”生效。如果会话只有一步,执行完即结束,不会触发拦截。
  2. 跨进程不累计:累计消费与预算均为内存值,进程重启后归零。
  3. 价格不自动更新:官方调价需手动修改配置文件并重新构建。

目录与源码

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

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

Xiaoye