前言¶
在 DeepSeek Harness 中,一次 Prompt 调用可能通过子代理(Subagent)的递归调用,展开成一个庞大的会话树。这种结构虽然能处理复杂任务,但也容易导致资金快速流失:单个会话可能在短时间内产生大量模型请求,或者树结构的搜索和委托操作消耗大量 API 配额。
如果没有针对会话树的独立控制,开发者很难在树结构失控前及时止损。dsh-session-budget-guard 正是为了解决这一问题而设计,它作为“熔断器”介入运行时,确保会话树的总支出和支出速率在可控范围内。
插件定位¶
- 名称:dsh-session-budget-guard
- 定位:DeepSeek Harness 的会话树级预算与支出速率熔断器
- 维护者:erya2000
- 分类:admin-security
- 许可证:MIT
核心功能¶
该插件主要提供以下控制能力:
- 支出监控:监控整个会话树(根节点 + 所有子代理)的累计支出和支出速率。
- 熔断拒绝:当累计支出或支出速率超过预设限制时,拒绝执行下一次模型请求或委托操作。
- 结构限制:限制树结构的深度、节点数量以及搜索次数,防止过度配额的委托或搜索。
- 管理手段:通过日志记录和通知机制进行管理。
- 自定义通知:支持通过 Shell 模板自定义通知命令。
安装与配置¶
安装¶
使用官方安装命令将插件添加到指定 Profile:
dsh plugin --profile web add github:erya2000/dsh-session-budget-guard
或者,通过本地挂载方式使用(无需安装步骤),在 cordis.patch.yml 中配置路径:
# ~/.dsh/cordis.patch.yml
- insert:
- id: session-budget-guard
name: /absolute/path/to/dsh-session-budget-guard/lib/index.js
配置示例¶
配置项均为可选,具体参数参考其源码默认值。以下是一个启用强制执行(enforce)模式的配置示例:
config:
mode: enforce
treeWarnCny: 5
treeStopCny: 10
maxDelegationDepth: 1
适用场景与注意¶
适用场景¶
适用于需要严格控制单次 Prompt 调用成本,或需要防止子代理无限递归展开的场景。
关键注意点¶
- 进程内运行:这是一个进程内的守卫插件。一旦 Harness 进程重启,会计数据不会恢复,之前的预算记录将丢失。
- 模式差异:默认模式为
notify(仅记录日志和发送通知)。如果启用enforce模式,插件会直接取消会话并拒绝请求,这可能会导致正在运行的任务中断。建议先在notify模式下观察日志,调整阈值后再开启enforce。 - 速率限制依赖:速率限制需要至少一个旧样本数据。因此,插件刚加载时的第一个时间窗口可能无法触发速率限制,但累计支出和结构限制依然生效。
- 分支排除:普通分支(
origin=fork)被故意排除在树结构统计之外,不计入预算限制。 - 环境要求:需要 Node.js 版本大于等于 20。
结语¶
dsh-session-budget-guard 为 DeepSeek Harness 的多智能体协作提供了资金与结构的防线。通过设置累计支出和支出速率的双重熔断阈值,可以有效避免因树结构失控导致的 API 消耗激增。更多细节与源码可参考 SkillHub 插件目录 或 GitHub 仓库。