前言¶
DeepSeek Harness(dsh)是 DeepSeek AI 开源的 agent harness,目前处于开发者预览阶段。官方仓库把核心理念写得很清楚:一切皆插件。模型、工具、会话循环和 Web UI 都可以拆成可替换的插件。社区里因此出现了一批独立目录站点,用来发现和安装第三方插件;它们与 DeepSeek / 幻方没有官方从属关系,安装前需要自己核对源码和许可证。
接入自定义提供方时,官方「模型」页已经能管提供方、API 密钥和模型行。但有几项按模型声明的原生能力,界面上一直缺入口:这个模型支持哪些推理强度档位、每档发往端点时怎么拼写、能不能吃图片、上下文窗口和最大输出 token 到底是多少。官方文档的做法是去改 $DSH_HOME/settings.yaml。手工声明的模型如果没写 input,默认按纯文本处理,带图会话会直接拒绝切换,提示类似 Model ... does not accept image input;没写 reasoningEfforts 时,会话输入框的模型选择器也不会给出推理强度控件。
better-model-provider 做的事情很具体:在设置页增加一栏「模型能力」,按模型把这几项声明写进提供方 profile,不必手改 YAML,也不必改 harness 运行时。
这是什么¶
better-model-provider 是一款面向 DeepSeek Harness 的模型与提供方插件,由 sanshanya 维护,仓库地址是 https://github.com/sanshanya/better-model-provider ,社区目录页在 https://deepseek-harness-plugin.com/zh-CN/plugins/better-model-provider/ 。主要语言是 TypeScript,许可证为 MIT,当前公开版本号是 0.0.1(2026-08-15 的首个公开发布)。GitHub 仓库当前 6 星。
它针对的是 OpenAI 兼容提供方上、由用户手工声明的模型。插件本身是 UI 插件:宿主机一侧只挂一个空的 keepalive 行,真正的读写走 harness 已有的 settings.describe / settings.mutate 和 llm.providers 契约,不引入运行时依赖,也不碰 API 密钥。
核心能力¶
对照仓库 README、CHANGELOG 和设置页文案,当前能在界面里声明的能力有三项。
1、推理强度档位(reasoningEfforts)
为每个模型勾选它接受哪些档位,并给每档填「取值」(wire spelling),也就是发往网关时的拼写。引擎本身支持按模型声明档位,官方模型选择器也能正确展示;缺口在于自定义提供方的模型编辑器原先不暴露这个字段。档位没声明时,选择器不会出现推理强度控件。
界面上推理强度有三种写法:使用提供方默认、无推理(false)、自定义。选自定义后展开多选列表。仓库特别提醒:只勾 { high } 时,选择器就只有 High;如果还需要 Off,要再勾 off(取值为空,写入 null)。
2、请求模态(input)
可选 text / image。手工声明的模型默认纯文本;视觉模型需要勾上 image,宿主机的图像准入才会放行。官方指南写过同一件事:表单没有这个字段,只能在 settings.yaml 里给模型加 input: [text, image]。这个插件把这一行搬到了设置页。
声明只是对端点能力的声明,插件不会去探测网关到底支不支持图片。模型勾了 image、端点却不收图,请求会在提供方那边被拒,这和官方文档的行为一致。
3、token 容量(contextWindow / maxTokens)
上下文窗口和最大输出 token 可以按模型填写。提供方默认值不对时直接改;留空表示继承。拼写跟官方「模型」页同一套:K 表示千、M 表示百万,例如 380K、1M。写入前会校验为正整数计数。
以上三项作用在你已经声明的模型上,一行配完一个模型。提供方和模型的增删、API 密钥,仍然只在官方「模型」页管理;本页不碰凭据。
安装与启用¶
社区目录页给出的安装命令是:
dsh plugin add github:sanshanya/better-model-provider
仓库 README 写得更完整。这个插件的客户端声明了 platform: web,需要装进 web profile:
dsh plugin --profile web add github:sanshanya/better-model-provider
本地联调可以用 link: 指向仓库绝对路径:
dsh plugin --profile web add link:<本仓库绝对路径>
装完后重启 dsh web,浏览器硬刷新,设置侧边栏会出现「模型能力」。
目录页也提示:如需可复现安装,请固定 commit 哈希。当前 main 最新提交为 13e37c69055155e27ce6cdd0c29f5d85306e8a6f(2026-08-17),写法如下:
dsh plugin --profile web add github:sanshanya/better-model-provider#13e37c69055155e27ce6cdd0c29f5d85306e8a6f
卸载:
dsh plugin --profile web rm better-model-provider
插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。
典型用法¶
仓库给出的操作顺序如下。
- 先在官方「模型」页把提供方配好,密钥只在那边保存。本页不读写凭据。
- 打开 设置 → 模型能力。如果还没有任何提供方,页面会提示「暂无提供方」,并让你先去官方「模型」页配置。
- 展开目标模型行:推理强度选「自定义」并勾选档位;视觉模型把输入模态的
image勾上;提供方默认的上下文窗口 / 最大输出不对时,按380K、1M这类写法填进去。 - 点「应用」。选择器会立刻只提供所声明的档位;图像准入也会按声明放行。写失败时草稿会留在页面上,冲突时会提示设置文档已在别处变更,对照刷新后的状态再应用一次。
目录提供方上、模型列表只存在于组装基线层的行,本页按只读展示,不会把它们物化进用户设置。未知路由会禁用能力编辑。这些行为写在插件的贡献说明和界面文案里,不是额外功能,而是为了避免改到官方「模型」页不该由本插件负责的部分。
适用场景与注意事项¶
比较适合这几类用法:
- 公司网关、自建 OpenAI 兼容服务,或目录里没有的提供方,模型是自己在「模型」页手工加的。
- 同一条路由上既有纯文本模型、又有视觉模型,需要按模型声明
image。 - 网关的推理档位拼写和 DeepSeek / pi-ai 默认不一致,例如某档在线上要发
ultra而不是max。 - 不想每次改
settings.yaml里的reasoningEfforts、input、contextWindow、maxTokens。
使用时注意下面几点。
DeepSeek Harness 仍是开发者预览,官方 README 写明未来会有破坏兼容性的变更。本插件对照 harness master 提交 47f943859b(2026-08-13)做过验证,对应发布线是 0.1.0-rc.6。已知最低可用契约包括 settings.describe/mutate、llm.providers、{ rpcId, result } 信封和模型行 schema。settings.section 的注册形态被当作实验兼容面:更新版本的 harness 如果不提供该面,插件会静默降级,而不是把设置页弄坏。换新版本后如果侧边栏没有「模型能力」,先核对 harness 版本,再看插件是否还匹配当前契约。
插件只编辑模型能力,不负责提供方生命周期。密钥、base URL、模型增删仍走官方「模型」页。能力声明也不会替你验证端点是否真的支持图片或某个推理档位。
社区目录是独立站点,不是官方应用商店。目录页与 GitHub 上的星标、最近推送时间可能不同步;安装命令以你实际使用的来源为准,本文同时给出了目录页原文和仓库 README 中带 --profile web 的写法。
小结¶
自定义提供方在 DeepSeek Harness 里并不难配,难的是把「这个模型到底能干什么」写进 profile。官方界面管密钥和模型列表,reasoningEfforts 与 input 过去只能手改 YAML。better-model-provider 在设置页加了一栏「模型能力」,按模型声明视觉输入、推理档位和 token 容量,写的还是同一份 settings,不改 harness 运行时。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/better-model-provider/
GitHub:https://github.com/sanshanya/better-model-provider