DSH AI Providers 0.3.0 支持 DSH 0.2.1
DSH AI Providers 0.3.0 已发布。它同时支持 DSH 0.2.0-rc.2 和 DSH 0.2.1-rc.2,把声明支持的 DSH 范围收窄到实际测试过的版本,并让语言模型路由向 DSH 报告更多信息。
为什么需要发布新版本
DSH 0.2.1 在启动时会检查每个插件声明的要求,并把本项目 0.2.0 版的 @dsh-ai-providers/runtime 禁用了。该软件包把 @deepseek-ai/dsh-llm 固定为恰好 0.2.0-rc.2,其他 DSH 版本都无法满足。源代码本身无需修改即可运行:这些软件包针对两个 DSH 版本都能通过类型检查和测试。
DSH 读取的字段也与这些软件包之前使用的不同。它读取顶层的 engines.dsh,存在时由它单独决定,而不读取 dsh.engines。0.3.0 把 engines.dsh 声明为 >=0.2.0-rc.2 <0.2.1 || >=0.2.1-rc.2 <0.2.2。范围止于下一个补丁版本,而不是下一个次版本,因为 DSH 仍处于稳定版之前,一个补丁版本就可能改变提供方所依赖的内容。@deepseek-ai/dsh-* 的 peer 范围列出这两个测试过的版本,发布检查现在会在每个软件包中强制这些约束。
两个命令保证这一点不流于形式。pnpm check:dsh <版本> 会把工作区复制到临时目录,针对另一个测试过的 DSH 版本做类型检查和测试,CI 会对较旧的版本运行它。如果某项改动无法同时服务两个版本,就会明确放弃较旧的那个,而不是靠运气维持。
路由现在向 DSH 报告什么
之前的版本只用模型和很少的其他信息注册路由。现在适配器覆盖了更多 DSH 自带模型适配器提供的内容:
- 重试策略。 路由可以用 DSH 自己的结构设置
retry。不设置时使用 DSH 的默认值;策略有误会使路由不可用,并说明原因。 - 每次调用只读取一次。 模型信息与随后的请求来自同一次对路由的读取,因此两者之间的编辑不会把它们混在一起。
- 可配置提供方。 每个路由都出现在 DSH 的可配置提供方目录中,附带其连接的地址以及妨碍它提供服务的问题。
- 模型发现。 DSH 可以向某个设置区域询问模型。已配置的路由用自己的模型作答;草稿端点通过
GET /models询问,所用密钥只用一次且不保存。 - 对话中的系统提示。 如果模型的聊天模板会把对话中任意位置改变的系统消息当作完整的系统提示,可以用
systemInHistory说明,DSH 就能在不重写缓存对话开头的情况下更改系统提示。默认关闭,因为许多本地聊天模板要求系统消息必须放在最前面。
路由编辑器新增了重试策略字段和 systemInHistory 复选框。现有配置无需任何改动即可继续使用。
在 DSH 0.2.1 上行为不同的地方
- DSH 凭据库中保存的密钥现在优先于同名的已导出环境变量,即使该变量已导出也可以保存密钥。在 DSH 0.2.0 中则是已导出的环境变量优先。
- DSH 期望模型的推理等级按推理强度从低到高排列,并把第一个等级用于会话标题等轻量任务。请按这个顺序列出路由的等级。
未覆盖的内容
图片按存储原样发送,所以提供方不声明图像缩放,也不声明图像计费;每个请求都携带完整的工具列表。这两点都是有意为之:多声明会承诺线路代码并未实现的行为。两个被测试的 DSH 版本都是预发布版本,提供方已配合 LocalAI 做过实际验证。各项设置见语言模型指南。
