dsh-bailian-models
已验证dsh-bailian-models · v1.5.0 · MIT
Alibaba Bailian (DashScope) model catalog preset + auto-adapter for DeepSeek Harness — reasoning effort levels, thinking budgets, context windows, auto-adaptation of existing Bailian routes, a configurable context ceiling
安装
dsh plugin add dsh-bailian-models 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
作者
说明文档
dsh-bailian-models
English | 中文
DeepSeek Harness(DSH)插件:**阿里云百炼(DashScope)**适配包——
- 预置路由:一条开箱即用的
bailianprovider 路由,内置 36 个主流文本模型的完整目录(上下文窗口、最大输出、按模型家族适配的推理强度控制); - 自动适配器:自动识别你已有的 provider 路由中 baseURL 指向百炼的(如
dashscope.aliyuncs.com),无需手动修改配置,即为其补齐正确的方言、推理档位与上下文声明——你已填写的字段一律保留; - 智能压缩(依赖
dsh-smart-compact一并安装):到上下文阈值先提示用户再压缩,摘要按事件线 + 短期/长期记忆分级;详见 dsh-smart-compact。
安装后在 DSH 的模型选择器里直接选用百炼模型,推理强度档位出现在会话的推理强度控件中;不需要手写任何 settings.yaml。
为什么需要它
DSH 自带的 pi-ai 适配器不认识 dashscope.aliyuncs.com 这个端点:直接配置百炼 URL 时会按 OpenAI 默认方言发送请求(错误的 store/developer 字段、不会发 enable_thinking),模型条目也没有上下文窗口和推理能力信息——表现就是"只能跑标准大小、调不了推理强度"。本插件把每个模型的正确方言、推理档位与容量声明补齐。
安装
DSH 桌面端 / Web(社区市场):在市场里搜索 dsh-bailian-models,确认安装即可(安装后按提示重载 profile)。
命令行:
dsh plugin --profile web add dsh-bailian-models
手动(调试插件本身时):把本仓库克隆到本地,在 profile 的 package.json 里 pnpm add <本仓库路径>,并把 dsh-bailian-models 追加到 dsh.profile.bundles。
安装后设置 API Key(插件只引用环境变量名,永不落盘密钥):
export DASHSCOPE_API_KEY=sk-...
也可以在 DSH 设置 → 模型里编辑 bailian 路由、改用自己的环境变量名或地域端点。
自动适配已有路由
除了预置的 bailian 路由,插件还挂载了一个自动适配器:它监听 llm-pi-ai 设置分节,凡是 baseURL 主机名匹配百炼端点(dashscope.aliyuncs.com / dashscope-intl / dashscope-us / *.maas.aliyuncs.com)的已有路由,都会被自动补齐:
- 路由级
compat方言(thinkingFormat: qwen、supportsStore: false、supportsDeveloperRole: false); - 目录内已知模型的
contextWindow/maxTokens/input/reasoningEfforts/ 模型级compat(支持-0902、-2026-05-20这类快照后缀自动匹配母型号); - 预算型模型所需的路约级
thinkingBudgets档位映射。
上下文阈值 maxContext:百炼不少模型支持 1M 上下文,而工程上 1M 与 400k 效果相近、却远好于 262k 默认值。在插件 config 设 maxContext: 400000 后,目录里超过它的 contextWindow 一律钳制到阈值,其余不动——既享受大上下文红利又不滥用。仅钳制目录源的值,你显式写过的 contextWindow 不受影响。
只补空缺,永不覆盖你写过的值;模型 id 不在目录里的条目原样保留。写入前会经过 dsh-llm-pi-ai 自己的 schema 校验,写不进去就保留现状并告警,绝不弄坏配置。不想用可以在 profile 的用户 patch 里禁用 bailian-models-autoadapt 行,或把它的 config.autoAdapt 改为 false;自托管网关可用 config.extraHosts 添加自定义主机名;config.maxContext 设上下文阈值。
注意:自动补齐的内容写入的是 settings 的用户层(即你的
settings.yaml),卸载插件后这些已补齐的字段会保留(无害),而预置的bailian路由会随插件卸载消失。
推理强度是怎么映射的
百炼不同模型家族的思考参数互不兼容,插件按官方文档分成四类适配:
| 类型 | 线上参数 | DSH 档位行为 |
|---|---|---|
| A. 等级型 | enable_thinking + reasoning_effort |
选档即发送对应 effort;Off 关闭思考 |
| B. 预算型 | enable_thinking + thinking_budget |
档位映射 token 预算:minimal 1024 / low 4096 / medium 16384 / high 65536(按模型上限钳制) |
| C. 开关型 | 仅 enable_thinking |
Off / High 两档(High = 开思考) |
| D. 仅思考型 | 模型始终思考,无参数 | 不提供档位(发任何开关参数都可能被 400 拒绝),思考内容正常显示 |
未选择档位时,A/B/C 类模型会显式发送
enable_thinking: false(即可预测地关闭思考,控制成本);D 类模型不受影响。
模型速查表
数据来源:阿里云百炼官方文档(各模型信息页 + 深度思考模型的用法)。上下文 / 最大输出 单位均为 token。
A. 等级型(reasoning_effort)
| 模型 | 可选档位 | 上下文 | 最大输出 | 输入 |
|---|---|---|---|---|
| qwen3.8-max | off · low · medium · xhigh | 1,000,000 | 131,072 | 文+图 |
| qwen3.8-max-0902(快照) | 同上 | 1,000,000 | 131,072 | 文+图 |
| qwen3.8-flash | 同上 | 1,000,000 | 131,072 | 文+图 |
| glm-5.3 | low · high · max(不能关闭思考) | 1,000,000 | 131,072 | 文 |
| glm-5.2 / glm-5.2-us / glm-5.2-fast-preview | off · minimal · low · medium · high · xhigh · max | 1,048,576 | 131,072 | 文 |
| glm-5.1 | off · minimal ~ xhigh | 202,745 | 131,072 | 文 |
| glm-5 | 同上 | 202,752 | 16,384 | 文 |
| deepseek-v4-pro / -0813、deepseek-v4-flash / -0731 | off · high · max | 1,000,000 | 393,216 | 文 |
| deepseek-v4.1-flash | minimal · low · medium · high · xhigh · max(→ ultra) | 1,000,000 | 393,216 | 文+图 |
deepseek-v4.1-flash 的档位口径:官方文档写的是「
reasoning_effort取 1~100 的整数」,但线上compatible-mode端点实测拒绝整数('reasoning_effort' must be an object with 'effort' field or a String),只认枚举minimal/low/medium/high/xhigh/max/ultra—— 其中ultra比文档多一档。⚠️ harness 的档位上限是 7 且
off独占一格(pi-ai 的EXTENDED_THINKING_LEVELS = off/minimal/low/medium/high/xhigh/max,未声明档位会被剔除)。官方恰好有七级枚举,但「不要 off、minimal→ultra 正好七档」在 harness 里物理上做不到 —— 那样会变成 8 档。只能是「off + 6 档」或「无 off、6 档」。本目录选后者:滑动条最低档 =minimal(不可关闭思考),最高档max映射到官方ultra,等于丢掉高位的max、保留低位minimal。实测enable_thinking:false确实能关思考,所以这是主动取舍;想恢复「可关思考」,给reasoningEfforts补一行空的off:即可(此时最高只见xhigh)。glm-5.3 的档位口径:官方只支持
low / high / max,且不支持关闭思考。文档写「传入enable_thinking=false不会生效」,但线上实测是直接 400 (InternalError.Algo.InvalidParameter: The value of the enable_thinking parameter is restricted)—— 本目录以实测为准,只提供三级、不声明off。因为 harness 的
qwen方言在「未选档位」时会发enable_thinking: false(必然 400),这一条目的 compat 里把thinkingFormat从路由的qwen覆盖为openai:pi-ai 于是只在选了档位时发reasoning_effort,未选档位时什么都不发,走模型默认(默认即思考模式)。实测档位确实在调深度:同一道难题下low≈10 /high≈59 /max≈686 思考 token。
B. 预算型(thinking_budget)
| 模型 | 档位 | 上下文 | 最大输出 | 思维链上限 |
|---|---|---|---|---|
| qwen3.7-max / plus / flash | off · minimal · low · medium · high | 1,000,000 | 131,072 | 262,144 |
| qwen3.6-plus / flash | 同上 | 1,000,000 | 65,536 | 81,920 / 131,072 |
| qwen3.5-plus / flash | 同上 | 1,000,000 | 65,536 | 81,920 |
| qwen3-max | 同上 | 262,144 | 65,536 | 81,920 |
| qwen-plus | 同上 | 1,000,000 | 32,768 | 81,920 |
C. 开关型(off / high)
qwen-flash(1M / 32k)、qwen-turbo(128k / 16k)、deepseek-v3.2 / v3.2-exp / v3.1(128k / 65k)、kimi-k2.6、kimi-k2.5(256k / 16k,支持图片)。
D. 仅思考型(无档位,始终思考)
kimi-k3(1M / 1M)、kimi-k2.7-code(256k / 16k,支持图片)、kimi-k2-thinking(256k / 16k)、MiniMax-M2.5 / M2.1(204.8k / 32k)、deepseek-r1 / r1-0528(128k / 16k)、qwq-plus(128k / 8k)。
自定义与覆盖
插件写入的是组合的 base 层;你在 ~/.dsh/settings.yaml 的 llm-pi-ai: 分节(或设置界面)里的任何修改都按 provider 键合并覆盖它,重启前即生效。常见覆盖:
llm-pi-ai:
providers:
bailian:
# 换地域端点(新加坡)
baseURL: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
# 换凭据环境变量
apiKeyEnv: MY_BAILIAN_KEY
# 收窄模型列表。注意:settings 合并时数组是整体替换的,这份清单会盖掉
# base 层目录;清单里没写的字段由自动适配器按 id 从目录补回来(含
# reasoningEfforts),所以只写 id 就够了。
models:
- id: qwen3.8-max
⚠️ 在设置界面的模型页改百炼列表要留神:GUI 保存时会把当时解析出来的清单整份回写进
settings.yaml的models,从而盖掉 base 层目录(这就是"本来 37 个模型、改完只剩几个"的原因)。本包的适配器会在随后的设置变更里按 id 补齐被盖住条目缺失的字段,所以推理档位不会丢;但如果你本意是"整个目录都要",最干净的做法是直接在用户层删掉models:这一段。
设上下文阈值
在 profile 的用户 patch 里覆盖本插件的 bailian-models-autoadapt 行,把 maxContext 设为你想的上限(比如 400000)。所有百炼路由(预置的 bailian 和自动适配到的已有路由)里目录源的 contextWindow 超过它的都会被钳到该值:
- id: bailian-models-autoadapt
name: dsh-bailian-models
config:
autoAdapt: true
maxContext: 400000 # 1M 上下文的模型按 400k 用;262k 以下的不动
卸载:市场/命令行卸载本插件后,bailian 路由随 base 层一起消失;你在用户层对 bailian 的覆盖仍会保留但不再有任何效果,可一并删除。
工作原理(给维护者)
两部分:
- 纯配置 bundle 预置:
package.json的dsh.bundle.patch指向cordis.patch.yml,按 id 覆盖 dsh-base 组合里休眠的llm-pi-ai行(该行无 config),把bailian路由注入组合 base 层。name字段是防漂移护栏:若未来 base 组合在该 id 挂载了别的插件,本 patch 会被跳过并告警而非静默写坏配置。 - 自动适配器(
src/index.js,同一个 patch 的insert行挂载):监听settings/document-updated事件,对llm-pi-ai分节里的用户路由做主机名检测与缺口补齐(computeRoutePatch纯函数,幂等)。模型目录从cordis.patch.yml生成(npm run build产出src/catalog.mjs),YAML 是唯一事实源。运行时零依赖。
请求的实际序列化由 @deepseek-ai/dsh-llm-pi-ai(pi-ai 运行时)完成:thinkingFormat: qwen 方言下发送 enable_thinking / reasoning_effort / thinking_budget;思考内容经 reasoning_content 回流显示。
本地校验(改动 patch 后跑一遍):
npm install
npm test # schema 校验 cordis.patch.yml + catalog 同步性 + 自动适配器行为(22 项断言)
已知的百炼平台约束
- 思考模式必须流式调用:DSH 始终流式,不受影响。
reasoning_effort与thinking_budget在 qwen3.8 系列上互斥,因此 A 类模型不提供预算档。- 部分模型(kimi-k3、deepseek-r1、MiniMax-M2.x、qwq-plus 等)是仅思考模式,不能关闭思考——这是平台行为,不是插件缺陷。
- 插件不查询余额/不感知模型下线;百炼下线某模型后,在设置里删掉对应条目即可。
贡献
新增/修正模型条目只需改 cordis.patch.yml:参照同家族现有条目补 contextWindow / maxTokens / reasoningEfforts,数据请附百炼官方文档链接。提交前跑 npm run validate。
License
MIT