把每分钟限流错误转为有界等待重试,避免回合中断
30.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/wsfangyou/dsh-tpm-quota-retry.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(135 字)↓
DSH 宿主侧插件:把 qwen-token-plan 的每分钟 TPM 限流(429 Allocated quota exceeded / insufficient_quota)从终止失败救回为有界重试等待,白名单之外的 provider 与真正的额度耗尽一律原样放行
README
由 DeepSeek 最新模型翻译生成dsh-tpm-quota-retry
把 qwen-token-plan 的每分钟 TPM 限流从终止失败救回为有界重试等待。只接管这一个 provider,其他模型行为零变化。
它解决什么
qwen3.8-flash 在长智能体回合里会撞上百炼的每分钟 Token 限流,上游回 429:
429: {"message":"Allocated quota exceeded, please increase your quota limit. …#token-limit",
"type":"insufficient_quota","code":"insufficient_quota"}
这一串在 DSH 里会走成终止失败:dsh-llm 的 isQuotaExceededError 命中 exceed…quota 措辞 → 归类为 QUOTA(语义是账户额度耗尽)→ dsh-llm-retry 的 normal mode 只重试 EMPTY_RESPONSE/RATE_LIMIT/SERVER/TIMEOUT/TRANSPORT,QUOTA 不在集合内 → next() 放行 → 智能体 loop 抛终止 LlmError,回合结束,界面显示「当前请求的额度已用尽」。
展开完整文档(README 剩余 1 节)
dsh-tpm-quota-retry
把 qwen-token-plan 的每分钟 TPM 限流从终止失败救回为有界重试等待。只接管这一个 provider,其他模型行为零变化。
它解决什么
qwen3.8-flash 在长智能体回合里会撞上百炼的每分钟 Token 限流,上游回 429:
429: {"message":"Allocated quota exceeded, please increase your quota limit. …#token-limit",
"type":"insufficient_quota","code":"insufficient_quota"}
这一串在 DSH 里会走成终止失败:dsh-llm 的 isQuotaExceededError 命中 exceed…quota 措辞 → 归类为 QUOTA(语义是账户额度耗尽)→ dsh-llm-retry 的 normal mode 只重试 EMPTY_RESPONSE/RATE_LIMIT/SERVER/TIMEOUT/TRANSPORT,QUOTA 不在集合内 → next() 放行 → 智能体 loop 抛终止 LlmError,回合结束,界面显示「当前请求的额度已用尽」。
而阿里云百炼限流文档写明:Allocated quota exceeded 与 You exceeded your current quota 表示触发了每分钟 Token 消耗(TPM)限流,通常一分钟内自动恢复;429 是限速拒绝,403 才是额度耗尽。于是「等一分钟重试」才是正确处理,模型本身没问题。
机制
挂在智能体 loop 的 agent/request-error waterfall(与 dsh-llm-retry 同一个扩展点):
1. 失败满足全部三条才接管:provider 在 providers 白名单内、failure.code === 'QUOTA'、failure.message 命中 TPM 措辞表;
2. 先向会话追加 llm/retry 事件(可重放),再等待 —— 对齐到下一个限流窗口边界,第 n 次重试多等 n-1 个完整窗口;providerRetryAfterMs 有效时优先遵守;
3. 返回 { kind: 'retry' },loop 在同一打开的轮次里重跑该步骤,随后追加 llm/retry-started。
不影响其他模型
- provider 白名单:默认只有 qwen-token-plan。deepseek / xiaomi / lm 等 provider 完全不走这段逻辑。
- code 闸门:只认 QUOTA。若某天适配器把这类 429 标成 RATE_LIMIT,那 dsh-llm-retry 的默认策略本来就该管它,本插件自动让位。
- 措辞闸门:只认 TPM 限流的两种报法。Arrearage、Access denied, please make sure your account is in good standing.、isv.OUT_OF_SERVICE、out of credits 等真正的余额耗尽措辞一律放行终态 —— 真问题不会被掩盖。
- 预算有界:每个 (provider, turn, step) 最多 maxRetries(默认 4)次;耗尽后原样交给终止路径,界面照常提示。
- 可取消:turn 取消或插件释放会立刻中止等待,且不返回重试决定。
- 可关闭:enabled: false 或 maxRetries: 0 都等价于没装。
配置
补丁层(cordis.patch.yml)可覆盖全部字段:
| 字段 | 默认 | 含义 |
| enabled | true | 总开关 |
| providers | ["qwen-token-plan"] | 白名单 provider 名 |
| windowMs | 60000 | 限流窗口宽度(ms) |
| maxRetries | 4 | 同一 (provider, turn, step) 的最大等待次数 |
| maxDelayMs | 300000 | 单次等待上限(ms) |
| minDelayMs | 1000 | 单次等待下限(ms) |
默认节奏下四次等待各约 1、2、3、4 分钟,总预算约 10 分钟。若某个 provider 配置档也吃这套限流,把它的名字加进 providers 即可,例如:
- id: tpm-quota-retry
name: dsh-tpm-quota-retry
config:
providers:
- qwen-token-plan
- qwen-other-plan
安装
插件源码放在工作区,配置档用 junction 引用(与本机其他插件一致):
powershell -NoProfile -ExecutionPolicy Bypass -File install.ps1
脚本做三件事,且可重复运行:在 profiles\web\node_modules 建 junction、把 dsh-tpm-quota-retry 加进配置档 package.json 的 dsh.profile.bundles、跑 test\verify-install.mjs 验证解析与配置。bundle 列表在启动时读取,装完需要重启 DSH(Desktop 应用)才生效。
(脚本刻意全 ASCII:Windows PowerShell 5.1 会把无 BOM 的 UTF-8 脚本按 ANSI 解码,中文会变成假的语法错误。)
依赖不走 pnpm:node_modules\@deepseek-ai\{schemastery,cosmokit} 与 node_modules\@standard-schema\spec 是从 profile 同级 node_modules 复制来的同版本副本,Node 按 realpath 解析依赖时正好命中它们。升级 profile 的 schemastery 后如果想同步,重跑一次复制即可。
卸载:删掉 junction 与 bundles 里的那一行。
验证
node test/smoke.mjs # 行为:21 项
node test/verify-install.mjs # 安装:解析 / 清单 / bundles / YAML / 导出
冒烟覆盖:真实 429 报文命中、欠费措辞与 ACCOUNT_QUOTA/RATE_LIMIT 放行、其他 provider 放行、预算耗尽放行、maxRetries: 0 与 enabled: false 关闭、providerRetryAfterMs 遵守、取消与释放中止等待、畸形负载不抛。安装验证需要先设 DSH_PROFILE / DSH_SOURCE(install.ps1 会设好)。
已知限制
- 只处理 QUOTA code;若上游换措辞(例如又造一个新句子),需要往 THROTTLE_PHRASES 里补一条。
- 等待期间不产出模型可见内容,界面只在会话里留下 llm/retry 记录,没有独立的倒计时提示。
- 预算账本在进程内存里(以 session 为弱键)。进程重启后同一步骤重新计数,最多多花一轮等待预算;不会无限重试。
许可
MIT
本仓库不含 node_modules:依赖由 DSH profile 的扁平层解析。克隆后走设置页「导入插件…」选中本目录,或手动复制到 <数据目录>/profiles/web/node_modules/,再把包名加进该 profile package.json 的 dsh.profile.bundles。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
wsfangyou/dsh-tpm-quota-retry
把每分钟限流错误转为有界等待重试,避免回合中断
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件:无需 API key,零成本,多引擎可切换。 这是一个插件,给…
★ 969已汉化DSH
69.1
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 953已汉化DSH
68.7
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 441已汉化DSH
67.9
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 387已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。