前言¶
DSH 支持插件扩展,但免费层级的 API 经常在使用中途耗尽。手动切换很繁琐。dsh-poor-router 将这些资源池化,追踪使用情况,监控健康状况,并自动切换。
插件简介¶
dsh-poor-router 是一个预算 LLM 池路由器,用于 DeepSeek Harness。它由 yishengdaxiaonengjihui 维护。插件解决的核心问题是:免费模型分散且寿命短,需要在请求失败时无缝切换。它提供自动记账、健康追踪和基于 Thompson 采样的自适应路由。
核心能力¶
-
自动记账
插件会记录每个条目的调用次数、成功/失败/中止状态、首字生成延迟(EMA)以及 Token 的流入流出。首次发现的模型会自动注册到pool.json。 -
Thompson-sampling 自适应路由
路由决策基于每个条目的 Beta 后验分布和高斯近似采样。决策时考虑首字生成延迟惩罚(3000ms/ttft)和当前小时的桶权重。34% 的概率会注入一个未使用的同层新模型。 -
每小时桶 v2
拥塞判断仅基于当日的小时桶(YYYY-MM-DD:HH本地时间),并配合 7 天滚动修剪。这避免了因历史数据导致的“幽灵”拥塞。 -
同质量阶梯
模型通过tier: S/A/B/C标签分类。路由优先选择同层模型,其次按 A→B→C 降级,仅在必要时爬升。阶梯可在 Web 面板中实时编辑。 -
执行器池
标记为role: executor的廉价高配额模型会被加入执行器池。琐碎或辅助请求会被路由到剩余配额最厚的模型。每 6 次这样的请求中,有一次会进行 epsilon 探索。 -
付费护栏
标记为paid: true的模型拥有每日限额。它们不会出现在候选列表中,仅作为“转义舱”使用。当所有免费候选都失效时,插件会切换到最便宜的付费模型,并触发 SMS 警告。 -
提供者断路器
针对认证失败(AUTH)、配额不足(QUOTA)和 429 错误分别设置了冷却时间(10 分钟、90 分钟),冷却状态会持久化。 -
取证与日志
插件维护一个保留 50 条的切换日志(环缓冲区)和 TS 样本记录,所有取证数据持久化到磁盘。 -
Web 面板与重定向徽章
提供设置页仪表盘,显示可用性排名、分组 Ledger 和最近切换记录。输入框左侧显示 ⚡ 重定向徽章,展示最近一次请求的来源和原因。
安装与启用¶
在 DSH 环境中运行以下命令安装插件:
dsh plugin --profile web add github:yishengdaxiaonengjihui/dsh-poor-router
或者手动编辑 package.json,添加依赖并运行 pnpm install。
配置¶
配置文件主要位于 pool.json(与模型配置同级)和插件的默认路径 <cwd>/poor-router/。插件级路径可在 cordis.patch.yml 中覆盖。
cordis.patch.yml 示例¶
- id: poor-router
name: dsh-poor-router
config:
dataDir: 'D:/my-data/poor-router' # 基础目录
layerRules:
- { match: 'deepseek-official/', layer: 'backbone' }
- { match: 'tokenrouter/', layer: 'matchstick' }
pool.json 字段说明¶
| 字段 | 含义 |
|---|---|
id |
provider/model,必须与 Harness 提供的 ID 一致 |
expiresAt |
ISO 格式日期,用于排序和面板倒计时 |
grantRemaining / grantUnit |
执行器池的预算配置 |
tier |
质量阶梯 S/A/B/C |
role |
"executor" 加入执行器池 |
layer |
backbone(永不烧) / burn / matchstick |
paid + priceInYuanPerM + dailyCapYuan |
付费护栏配置 |
escapeHatch |
允许作为最后手段使用的付费模型 |
代理工具¶
插件注册了两个会话工具,可通过 CLI 调用:
pool_status:获取完整的快照,包括摘要和每个条目的统计。pool_control:用于覆盖配置,如setTier(设置质量)、setRouting(设置路由模式)、setBadge(显示徽章)、setExpiry(设置过期)、clearProviderCooldown(清除冷却)等。
注意事项¶
- 无状态路由:路由决策是每次请求无状态的,不会永久修改配置。
- 转义舱:当所有免费模型失效时,插件会切换到最便宜的付费模型,并通过
text_me发送 SMS 提示。 - 无头运行:插件可以在没有 Web GUI 的情况下运行,CLI 工具依然可用。