按 provider 令牌桶主动限速,超限请求在发出前延迟排队而非失败,避免触发上游 429。
安装
# npm 包(预构建)
dsh plugin --profile web add @xidong-ai/dsh-rate-limiter
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Xidong-AI/dsh-rate-limiter
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness(dsh)的主动限速插件:在模型请求发出之前按 provider 控制请求速率(令牌桶),超限时延迟排队而不是失败,从而避免触发上游 429。
与官方 dsh-llm-retry(失败后指数退避)互补:限速在前(预防),退避在后(兜底),互不干扰。
特性
- 按 provider 令牌桶限速,且在请求发出之前生效(主动预防)
- 超限请求延迟排队而非拒绝(不触发 429、不丢请求)
- 未配置的 provider 原样放行(零侵入)
- 排队等待响应取消信号,用户停止时立即中断
- 手写预约式令牌桶(并发安全),零第三方限速库依赖
- 挂载
agent/request,与dsh-llm-retry天然共存
安装
从 npm 安装:
dsh plugin --profile web add @xidong-ai/dsh-rate-limiter
npm registry 的 URL 区分大小写,请使用小写包名。
或直接从 GitHub 安装:
dsh plugin --profile web add github:Xidong-AI/dsh-rate-limiter
本地开发时直接添加当前目录:
dsh plugin --profile web add .
安装后 dsh --profile web --dump-config 应能看到插件行:
- id: rate-limiter
name: @xidong-ai/dsh-rate-limiter
config:
enabled: true
providers: {}
配置
在 profile 的 cordis.patch.yml(或本插件 cordis.patch.yml)中按 provider 配置令牌桶:
- id: rate-limiter
config:
enabled: true
providers:
nvidia:
rate: 2 # token/秒(长期平均 QPS)
burst: 5 # 桶容量(允许的突发请求数)
oc-zen:
rate: 1
burst: 3
rate:补充速率(token/秒),即长期平均请求速率。burst:桶容量,允许的突发请求数。- 未列出的 provider 不限速,请求原样放行(零侵入)。
enabled: false可整体关闭插件。
工作原理
插件挂在 agent/request waterfall 上:先 await next() 拿到含 provider 的调用配置,再按 provider 做令牌桶检查,不足则延迟排队(等待期间响应取消信号,用户停止时立即中断),然后原样返回配置——不修改请求内容、不改路由、不吞错误,只控制"何时发出"。
限速算法为手写令牌桶(预约式,并发安全),零第三方限速库依赖。
与 dsh-llm-retry 的关系
| 插件 | 时机 | 行为 |
|---|---|---|
dsh-rate-limiter |
请求发出前 | 超限延迟排队(预防 429) |
dsh-llm-retry |
请求失败后 | 指数退避重试(兜底) |
两者挂载点不同(agent/request vs agent/request-error),天然共存。
卸载
dsh plugin --profile web remove @xidong-ai/dsh-rate-limiter
开发
npm install
npm run typecheck # tsc --noEmit
npm run test # vitest run
npm run build # esbuild 转译 lib/*.ts → lib/*.js
鸣谢
感谢 Linux.do 社区的支持。
链接
同类插件
bowenliang123/dsh-context★ 249
DSH 上下文洞察面板:Context 仪表盘 + /context命令 + Context 浏览器,查看 Context的分类组成、内容详情、演进趋势、压缩/注入事件、统计等一站式 Context 全生命周期管理。
zh667/TokenLedger★ 95
侧边栏用量面板:把 Token 归属到实际服务该请求的中转站,站点从已有的 provider 配置中读出,无需额外配置;含今日/本月/累计三窗口、按站点与模型下钻、一年活跃度热力图,以及 New API / Sub2API / DeepSeek 余额。
Han-1413141/dsh-cost-meter★ 90
会话与当日 API 费用统计、预算图框(已用%)、官方余额、历史看板,支持峰谷计价与官方价格一键同步。
Ychris12138/dsh-usage-stats★ 68
多供应商用量看板:按供应商/模型统计 Token 与日期下钻,统一展示账户余额,并追踪 OpenCode Go / Z.ai 订阅额度。
feibi-mochi/deepseek-harness-control-center★ 31
DeepSeek Harness 监控、提醒、充值与会话控制中心:查看官方余额、本会话花费与 token、第三方 token 合计,提供完成提醒、官方充值、灵活布局及 Agent 辅助的会话控制。
zhu168/dsh-save-money#plugin★ 31
自定义时间窗口自动暂停/恢复任务,高峰时段节省 API 费用;含账户余额显示和 10 分钟粒度的消费柱状图。