npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-inhibition

v0.1.2

Published

Rate-limit plugin for DeepSeek Harness: FIFO queue per provider/model bucket with minIntervalMs and maxConcurrent

Downloads

237

Readme

dsh-inhibition

npm GitHub

DeepSeek Harness (DSH) 模型请求限流插件:在 llm/stream waterfall 接缝上为每个 provider/model 桶建立 FIFO 队列,用 minIntervalMs + maxConcurrent 人为控制 API 请求下发频率,避免触发第三方 API 限频。

安装

# 在官方仓库中运行 CLI(或使用你已安装的 dsh)
dsh plugin --profile <名字> add /path/to/dsh-inhibition

# 验证加载
dsh --profile <名字> --dump-config | grep -A 5 inhibition
dsh plugin --profile <名字> why dsh-inhibition

建议为插件开发使用独立 profile(如 dev),不影响日常的 web profile。

配置

在 profile 的 ~/.dsh/profiles/<名字>/cordis.patch.yml 中添加:

- id: inhibition
  config:
    enabled: true            # 总开关,默认 true;false = 全部直通
    default:                 # 所有未命中桶的兜底(缺省 = 不限流)
      minIntervalMs: 3000
      maxConcurrent: 1
    providers:
      deepseek:
        minIntervalMs: 5000
        models:
          deepseek-chat:     # 模型级覆盖
            minIntervalMs: 2000
            maxConcurrent: 2
      openrouter:
        minIntervalMs: 1000

参数语义

| 参数 | 语义 | |---|---| | minIntervalMs | 相邻两次请求开始下发的最小间隔(毫秒),即频率的倒数 | | maxConcurrent | 桶内同时在途请求上限;1 = 严格串行队列;缺省 = 不限制 |

字段级继承

每个字段独立沿 models[model] → providers[provider] → default 取就近定义值。例如 deepseek-chat 只覆盖了 minIntervalMs,则其 maxConcurrent 继承 providers.deepseek 或 default 的值。完全未配置的 provider(无 default 时)不限流、零开销。

⚠️ 桶拆分的聚合效应

只有当多个模型解析出相同参数时,它们才共享同一个队列。一旦给某个模型设置覆盖,它会分裂成独立的桶:例如 provider 级 minIntervalMs: 5000 + 两个模型各自覆盖,则两个模型各有一条 5s 间隔的独立队列——对同一个 API 的聚合速率可达 2.5s 一次,可能超出你的预期。

如果你要限制的是 provider 整体的请求速率(多数第三方 API 的限频口径),请把参数配在 provider 级或 default 级,不要给模型配覆盖,这样该 provider 的所有模型共享一条队列。

工作原理

  • 插件注册一个 llm/stream waterfall 监听器,包裹每一次流式模型调用;请求先进入对应桶的 FIFO 队列,同时满足间隔与并发约束后才放行到真实 adapter。
  • 排队期间请求被取消(AbortSignal 中止)时,该请求立即出队且不消耗限流名额。
  • 实际等待 > 0 的派发会记录日志:inhibition: deepseek/deepseek-chat dispatched, waited 2340ms (in-flight 1, queued 2)。
  • 插件卸载时唤醒所有排队请求(放行为直通,由 adapter 按 abort 语义处理),不留悬挂定时器。

发布与分发

三种方式,按覆盖范围递增:

  1. 本地/私有: dsh plugin --profile <名字> add /path/to/dsh-inhibition
  2. npm: npm publish --access public 后,用户执行 dsh plugin --profile web add dsh-inhibition(本包产物 lib/ 已提交、无 prepare 脚本,git/npm 安装均无需构建)
  3. dsh-plugin.org 插件中心: 推送到公开 GitHub 仓库 → 仓库添加 topic dsh-plugin → README 含安装命令(✅)且插件导出 apply(ctx)(✅),爬虫自动收录

开发

npm install
npm test        # vitest 单测 + LlmRuntime 集成测试
npm run build   # tsc 产物输出 lib/(已提交,本地安装无需构建)

设计文档见 docs/superpowers/specs/,实现计划见 docs/superpowers/plans/。

License

MIT