- Início
- Plugins
- Uso e cobrança
- dsh-provider-quota
dsh-provider-quota
fulisike/dsh-provider-quota
一个更好用的供应商限额设置插件
Instalar
dsh plugin --profile web add github:fulisike/dsh-provider-quotaREADME
DSH provider quota
English · 中文
DeepSeek Harness 的提供方共享限流插件,带原生 GUI 设置入口。所有模型共享滚动 RPM、输入与输出合计 TPM、7 天 token 额度;跨进程串行请求并持久记账。官方 dsh-llm-retry 负责恢复,本插件不会在同一 waterfall 中重复调用 next()。
安装
需要 Node.js 24.9+ 和兼容的 DSH 0.2.2。在 DSH 的“插件 → 添加插件”输入仓库 URL,或用 DSH 的命令安装:
dsh plugin --profile web add github:Fulisike/dsh-provider-quota#main
仓库提交了包含运行依赖的 ESM 产物,安装时无需构建,也不依赖嵌套的 node_modules 链接。安装后重启 DSH 并刷新页面,在“设置 → 提供方限流”选择已经配置的提供方,调整参数并点击“保存并应用”。新安装默认不限制任何提供方;第一次保存会启用所选提供方的共享额度。界面支持中英文,字段变更走 DSH 原生配置表单,保留密钥和其他提供方设置。
从源码安装也可以:
git clone https://github.com/Fulisike/dsh-provider-quota.git
cd dsh-provider-quota
npm install --omit=dev --ignore-scripts
dsh plugin --profile web add .
源码版 DSH 从 DSH 仓库根目录运行 pnpm dsh plugin --profile web add /absolute/path/to/dsh-provider-quota;GitHub 安装命令也可在该目录用 pnpm dsh 执行。Desktop 通过自己的插件管理器安装;不要用普通 npm CLI 修改保留的 desktop profile。
超过 30 万 token 时
单分钟额度包含输入和输出。LOCAL_REQUEST_TOO_LARGE 表示本地预计的一次调用已经超限,还没有发送;多等一分钟不能缩小这次调用。页面中的“输入 token”累计值也不等于单次请求大小。
默认先计算完整请求的输入估计、最大输出和 4096 token 余量。单次可以容纳时保留历史,仅滚动窗口余额不足时排队等待;单次预算放不下时,通过 DSH 原生压缩服务生成摘要,每步最多恢复一次。Web 从当前 Agent 绑定的预设读取隔离的压缩服务;headless 使用自身上下文中的服务。主请求默认最大输出为 16384 token,实际结算改用提供方返回的 usage。
可选的固定提前压缩阈值位于高级设置,默认 -1,表示只按单次预算触发插件压缩。关闭插件的自动压缩开关不会关闭 DSH 自身的压缩策略或 /compact。若单个用户输入、工具结果或固定提示本身太大,原生服务可能找不到可压缩范围;此时需要拆分输入或开新会话。摘要请求同样经过共享额度检查,摘要输出上限由原生压缩后端配置决定;profile 层的 compaction-basic 配置不会修改 Web 预设内的独立后端。
常用设置与高级设置
默认显示三个共享额度、单次最大输出、自动压缩开关、无输出等待时间和最多重试次数。三个额度均支持 -1 表示不做该项限制;0 无效。最大输出仍须为正数,以便发送前预留预算。只取消一个额度不会取消其他额度、文件锁串行或提供方返回的 429 冷却。
| 参数 | 默认值 |
|---|---|
| 滚动 60 秒请求数 | 10 |
| 滚动 60 秒 token 总数 | 300000 |
| 滚动 7 天 token 总数 | 1000000000 |
| 自动压缩 | 开启 |
| 主请求最大输出 | 16384 token |
高级设置保留以下粒度:
| 参数 | 默认值 |
|---|---|
| 最短发送间隔 | 7000 ms |
| 固定提前压缩阈值 | -1,仅按预算压缩 |
| 单次额外余量 | 4096 token |
| 初始输入估计系数 | 1.25 |
| 窗口边缘余量 | 250 ms |
| 文件锁检查间隔 | 500 ms |
| 429 共享冷却下限 | 60000 ms |
最短发送间隔也支持 -1,表示不额外设置发送间隔;固定提前压缩阈值的 -1 表示取消固定阈值,预算不足时仍可自动压缩。余量、安全系数、队列轮询、冷却、超时和重试次数不接受 -1。重试次数为 0 时关闭失败重试。
连接区提供 900 秒无输出等待、1800 秒单次最长等待和 12 次有界重试的建议值。秒数字段支持 3 位小数,底层仍保存整数毫秒;初始与最大退避及抖动比例位于高级设置。保存使用 normal 策略并沿用既有重试错误码。限流与连接设置分别校验和保存,后者失败会明确提示前者是否已经保存。
限流参数保存后在线生效,正在发送的请求保留其已捕获的参数。更换提供方前先保存或放弃当前修改。高级配置仍可写入 profile 的 cordis.patch.yml;不要同时启用其他限流插件。
存储与限制
计数默认存放在 $DSH_HOME/storages/provider-quota,默认 home 为 ~/.dsh;也可在 provider-quota.config.stateDirectory 配置绝对目录。代码和仓库不包含密钥、会话或个人用量。使用同一统计目录的进程共享文件锁,每个提供方最多一条请求在途,跨进程不保证 FIFO。
发送前保存输入估计与输出预留,结算时使用实际 usage;缓存读写计入输入,reasoning 不会重复相加。缺少 usage 的尝试保留预留,可能高估;输入估计会根据实际 usage 向上校准。token 窗口保守地从结算时起算,RPM 从发送时起算。计数损坏会阻止调用,崩溃留下的预留不会被当作零消耗。
本地计数无法覆盖其他客户端、其他机器或安装前未记录的用量,也无法完全复现提供方 tokenizer 和限流口径;仍可能遇到 429。周额度不足时停止并显示最早释放部分额度的时间。排队可取消,卸载会等待在途请求结算。关闭插件不会删除账本。
开发与验证
npm install --ignore-scripts
npm run build
npm test
npm pack --dry-run
修改 index.js 或 config.js 后,运行 npm run build 并提交 dist/index.js 和 THIRD_PARTY_NOTICES.txt。包测试把发布文件复制到没有依赖的临时目录,再运行同一组行为测试,验证实际导出入口不需要 node_modules。
端到端测试需要本地 DSH 源码及已经构建的产物;通过 DSH_SOURCE_ROOT 指定仓库目录,再运行 npm run test:integration。测试只请求本机模拟 HTTP 服务,验证 429 恢复、失败尝试、日志与实际输出上限,不调用真实 API。GUI 通过 DSH 的 slots、locale、configForms 和认证 connection 注册,不增加独立应用入口。
同样设置 DSH_SOURCE_ROOT 后,npm run test:git-install 会建立一次性 Git 仓库和全新 DSH home,通过 DSH 自带的 pnpm 执行 Git 安装,验证 Web 激活、原生设置保存,再对安装后的入口运行模拟 429 恢复测试。
npm run test:web 在真实 Web profile 中验证标准模式对话,以及隔离预设内“超大请求 → 原生摘要 → 继续回复”的完整链路;Git 安装测试也运行这条用例。测试只使用本机模拟服务。
从 2.0.x 升级
重新执行安装命令并重启 DSH。原有额度、账本和明确配置的提前压缩阈值保留。新建配置默认采用预算驱动压缩;既有配置如需同样行为,将高级设置中的固定提前压缩阈值改为 -1。Web 的自动压缩通过预设服务接口接入,不再要求 Agent 根上下文直接提供压缩服务。
许可证:MIT。
Plugins relacionados
DeepSeek-Balance-Whale-Widget
meteornox/deepseek-balance-whale-widget
dsh-context
bowenliang123/dsh-context
dsh-cost-meter
han-1413141/dsh-cost-meter
dsh-damage-pulse
wssfk12138/dsh-damage-pulse