前言¶
在使用 DeepSeek Harness (DSH) 进行开发时,免费模型经常会触发速率限制(Rate Limit),导致请求失败或任务终止。内置的重试机制往往难以处理这类持续性的限流问题。
下面介绍 dsh-camel 插件。它是一个针对 DeepSeek Harness 的可选插件,由 JuwanXu 维护。该插件专门解决免费模型的速率限制恢复问题,提供基于提供者和模型的自适应配额学习、主动请求节流以及 Retry-After 感知的重试机制。
核心功能¶
该插件提供以下能力:
* 免费模型速率限制恢复。
* 提供者和模型感知的自适应配额学习。
* 主动请求节流。
* 支持 Retry-After 的重试机制。
* 可见的重试状态。
* 任务范围配置。
* 基于会话的活动和配额事件记录。
* 精确的(提供者,模型)学习隔离。
* 暂停和恢复控制。
* 安全的回退机制。
安装与启用¶
插件通过以下命令安装到指定配置文件中:
dsh plugin --profile <profile-name> add dsh-camel
使用方法¶
插件安装后,所有可执行策略默认为禁用状态。需要通过命令或配置启用。
命令行控制¶
可用命令取决于宿主是否提供可选命令服务。这些命令是任务本地的,不会修改配置文件:
/camel preset recover:启用无限速率限制重试,禁用节流模式。/camel preset adaptive:启用无限速率限制重试和自适应节流,禁用固定节流。/camel preset bounded:启用 5 次速率限制重试,禁用节流模式。/camel off:持久禁用当前任务的所有 Camel 策略。/camel reset:移除当前任务的覆盖,恢复插件默认值(可能重新启用全局策略)。/camel set:设置任务配置,将camel/config追加到内存覆盖前。
配置与优先级¶
配置优先级为:任务会话覆盖 > 插件默认值 > 内置值。
插件内置了节流、重试和自适应节流的数值,但所有三个 enabled 值默认为 false。需要通过配置文件显式开启。
示例配置片段:
- id: camel
config:
defaults:
retry:
enabled: true
mode: unlimited
fallbackDelayMs: 60000
throttle:
enabled: true
maxRequests: 20
windowMs: 60000
scope: route
adaptive:
enabled: false
initialRequests: 10
minRequests: 1
maxRequests: 20
windowMs: 60000
safetyRatio: 0.85
decreaseRatio: 0.7
increaseAfterWindows: 3
stateTtlMs: 86400000
routes:
- provider: provider-a
model: model-v3
enabled: true
initialRequests: 8
maxRequests: 12
- provider: provider-b
model: model-r1
enabled: true
initialRequests: 4
maxRequests: 6
自适应节流说明¶
当针对某个解析后的路由启用自适应节流时,该路由的节流由自适应模式接管,固定节流不再重复应用。自适应准入使用 max(minRequests, floor(learnedRequests × safetyRatio))。匹配的 RATE_LIMIT 会使用 decreaseRatio 降低学习计数。当窗口被清理后,increaseAfterWindows 次后可提升计数。
适用场景与注意事项¶
- 专注速率限制:该插件专注于速率限制处理,不替代通用的模型错误重试。
- 无 LLM 调用:插件不会调用 LLM 来分类失败或调整策略。
- 边界工作:插件在代理请求错误/重试边界工作,不会注入用户提示或需要浏览器 UI。
- 自动重试:插件执行自动速率限制等待/重试,不会重写消息或分叉对话。
结语¶
dsh-camel 为 DSH 插件生态中的速率限制处理提供了具体的工具,特别是在处理免费模型时,能够通过自适应学习和主动节流提高成功率。