leaves615/dsh-llm-ctl ↗★ 1

@leaves615/dsh-llm-ctl

提供并发限流排队与请求自愈功能 适合需要精细控制多模型服务商并发、处理排队预算及自动重试的用户。

套件
@leaves615/dsh-llm-ctl
相容性
待驗證
Harness 依賴範圍
^0.1.2-rc.1
Cordis 依賴範圍
^4.0.2
版本
0.2.0
授權
MIT
最近更新
2026年9月29日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:leaves615/dsh-llm-ctl

配置

完整配置长这样,每项都有默认值,不写就是下面这个效果:

- id: llm-ctl
  name: '@leaves615/dsh-llm-ctl'
  config:
    queue:
      # 每个 provider 几个并发。不写 default 就是全不限流,0 也是不限流。
      perProviderConcurrency: { 'zen-free': 1 }
      maxQueueDepth: 50          # 队满报 QUEUE_FULL
      # 唯一的等待预算:排队愿意等多久,也愿意接受多长的冷却。
      # 明确要等更久就直接报 QUEUE_TIMEOUT,不白等。
      maxWaitMs: 120000
      honorRetryAfter: true      # provider 的提示优先于本地退避
      backoff: { initialDelayMs: 500, maxDelayMs: 10000, jitterRatio: 0.1 }
    # 没装 dsh-llm-retry 时的兜底:auto = 下游没人管才自己上(默认 3 次);
    # off = 从不;数字 = 每步最多几次。
    reactiveRetry: auto
    visibility:
      # 启动预置的隐藏规则,用户层只读。通配符只有 '*',大小写不敏感,
      # 'provider:model' 或裸模型名都行。
      hiddenPatterns: ['*-test-*']

排队是严格 FIFO,先到先得,不分前后台优先级。

触发冷却的失败码跟 dsh-llm-retry 默认集一致:RATE_LIMIT / SERVER / TIMEOUT / TRANSPORT / EMPTY_RESPONSE。直接抛错的算数,包在 SSE 流里回来的 terminal finish chunk(OpenRouter 转发上游 429 就是这样)也算数。AUTH、QUOTA 这类码不排队,原样透传。

等多久听 provider 的:优先用 adapter 透出来的 failure.providerRetryAfterMs(DeepSeek 的 adapter 已经给了),没有就本地指数退避。

上游进展:Retry-After、x-ratelimit-reset 这些 header 的解析器已经写好测过,就等 adapter 把原始响应头放进 LlmError.details,接上就能用,插件这边已经收 headers 包了。