DeepSeek Harness 动态输出额度插件:dsh-adaptive-max-tokens

前言

在 DeepSeek Harness (DSH) 的长上下文开发中,一个常见的问题是固定预留的输出额度(例如 384K)与不断增长的输入文本发生预算碰撞,导致服务端在输入尚未被压缩时便直接拒绝请求。dsh-adaptive-max-tokens 是一个插件,旨在将固定的输出预留变为动态额度,通过根据上下文估算动态调整 maxTokens,在压缩策略生效前释放出被占用的上下文空间。

插件定位

这是一个由 3289192-bot 维护的模型推理类插件。它运行在 DSH 的 Web profile 下,通过读取宿主内存中的请求元数据和会话事件来计算剩余空间,不主动联网、不写入文件、也不读取凭据。该插件仅调整输出额度,不改变模型的推理强度,也不增加模型的真实上下文容量。

核心功能

该插件主要解决以下具体问题:

  1. 动态调整 maxTokens:根据当前输入估算、上下文容量和安全余量计算允许的最大输出长度。
  2. 压缩后恢复额度:在压缩策略生效后,重新按配置和当前模型的输出上限计算,避免一直沿用之前缩小的数值。
  3. 中断续聊保持校准:利用已有的 usage 记录辅助估算,避免因单次无 usage 的回复丢失有效的校准点。
  4. 识别并重试超限错误:对代码中识别的上下文超限错误格式进行拦截,尝试缩小输出额度并重试一次;其他情况交回宿主处理。
  5. 路由兼容:在切换模型时,遵守当前路由和 agent 的显式上限约束。

安装与启用

在安装前,请确认当前 DSH 版本。该插件仅支持 0.1.6-alpha.1 或 0.1.7-rc.2。

1、检查版本:

dsh --version

2、安装插件:

dsh plugin --profile web add github:3289192-bot/dsh-adaptive-max-tokens#v0.1.0

安装后,默认对该 profile 的 agent 请求生效。

3、重启实例:
在任务空闲时重启对应的 DSH Web 实例,再开始新会话。如果之前手动安装过旧版,请先从自定义预设中移除或禁用旧的 adaptive-max-tokens.mjs 行,再启用本包。

卸载命令:

dsh plugin --profile web remove dsh-adaptive-max-tokens

默认参数与计算逻辑

插件内置了一套默认参数用于计算输出预算。以下是基于 1,000,000 上下文预算和 384,000 输出上限的典型配置:

参数 值 说明
effectiveContextWindow 1,000,000 配置的上下文预算上限,取它与适配器声明值中的较小值
maxOutputTokens 384,000 配置的输出上限,同时受当前适配器和 agent 上限约束
safetyTokens 32,768 为估算误差保留的空间
minOutputTokens 16,384 期望最低额度,空间不足时仍会继续收缩
pendingWeight 1 待接收输入的最低估算权重
log true 输出预算变化日志

计算逻辑简化为:输出额度 = max(1, min(输出上限, 上下文预算 − 安全余量 − 输入估算))。

适用场景与限制

适用场景:需要处理长上下文对话,且希望减少因固定输出预留导致的上下文溢出错误的场景。

重要限制:
1. 无法保证不溢出:插件基于估算计算,包含误差。附件、新工具及大段新输入可能超出估算,无法保证每次请求都不会超限。
2. 不增加容量:插件不增加模型真实上下文容量,也不修改官方压缩策略或摘要参数。
3. 重试范围:重试仅支持代码中识别的上下文超限错误格式,未知格式直接交回宿主。
4. 隐私安全:插件仅读取内存中的请求元数据和 usage 数据,不涉及凭据读取,但启用日志后会记录会话标识与错误信息。

总结

dsh-adaptive-max-tokens 是一个为解决长对话中输出预算冲突而设计的实用工具。它通过动态收缩和恢复机制,让输出额度让位于输入,配合官方压缩策略使用,能显著提高长上下文任务的稳定性。更多详情与兼容性说明可查阅 GitHub 仓库。

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

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

小夜