前言¶
用 DSH(DeepSeek Harness)接第三方模型供应商时,很多人先会遇到两件小事:设置里的 Models 页只能写不能读,API Key 保存后不再回显;更麻烦的是保存动作走的是 schema 投影,模型上没有声明过的字段会被直接丢掉,于是想调一个 reasoningEfforts 或某个兼容开关,只能自己去翻 cordis.patch.yml 手写。
下面介绍的 realchendahuang/dsh-provider-studio 就是针对这个缺口做的第三方设置页。它不改变 DSH 本身的模型调用逻辑,而是在设置面板里另开一页,直接读写 llm-pi-ai.providers 和 DSH 凭据服务。
这是什么¶
dsh-provider-studio 由 realchendahuang 维护,是一个面向 DSH 的第三方供应商管理插件,分类属于模型推理。它把 DSH 自带的 Models 设置页换成自己的「供应商管理」页,界面分两级:一级是供应商列表,二级是所选供应商的编辑页。
它解决的问题很集中:让密钥可以看见和管理、让模型未声明的字段不被丢弃、让连通性测试跑的是真实请求路径,以及免去新建供应商时查 Base URL 和协议的功夫。
核心功能¶
下面这些能力都来自仓库 README。
密钥可见、可管。 官方面板只写不回显,这个插件默认掩码,点一下可显示,支持复制、更换、清除;清除前会弹确认。密钥只写入 DSH 凭据服务,不写进 llm-pi-ai 配置,也不落在插件自己的文件里。
参数按归属分开,且不被 schema 投影丢掉。 插件直接解析 profile 里的原始配置,而不是 schema 投影后的结果。模型自己的 reasoningEfforts(思考等级)和 compat(兼容开关)放在模型弹窗里,供应商自己的请求头、传输与重试、图片预算放在供应商页里。
一个页面管完供应商和模型。 可以新增、重命名、删除供应商,编辑 Base URL、协议、密钥,模型增删改,单模型连通性测试,以及从端点批量拉取模型。
新建即可读模型。 填好 Base URL 和密钥后点「读取模型」,插件会向端点要一份模型列表,从下拉里挑首个模型即可,不必先去别处查 model id。
配置可导出。 标题右侧 … →「复制配置」,导出一段可直接贴进 cordis.patch.yml 的 YAML,只带 apiKeyEnv 凭据名,不含密钥明文。
探针与真实请求一致。 测试和拉取按 pi-ai 的实际路径拼 URL,并把「请求设置 → 请求头」一起发出去,避免 DSH 能调通但插件报失败的情况。
内置供应商模板。 读入 models.dev 全量目录里的 223 个模板(常用 / 国内 / 海外 / 网关),带品牌 logo,选一下就把 Base URL、协议、环境变量名填好。
随时退回官方页。 官方 Models 页由 bundle patch 隐藏,改一行配置就能恢复,不删包、不影响 llm-pi-ai / llm-deepseek 适配器。
安装与启用¶
仓库里已经带有构建好的 client.js,安装不需要先构建。DSH 按 profile 隔离插件,命令里的 --profile 要和实际启动的那个一致。
dsh plugin --profile desktop add github:realchendahuang/dsh-provider-studio
完整地址写法是:git+https://github.com/realchendahuang/dsh-provider-studio.git。想固定版本可带 commit:github:realchendahuang/dsh-provider-studio#<commit-sha>。
安装后需要完整退出并重新启动 DSH,而不是只刷新窗口:Host 端代码只在 DSH 启动时加载,刷新窗口只会重载浏览器端的 client.js。首次安装后如果测试报 404 或 transport failure,说明 Host 端还是旧的,重启 DSH 即可。
确认是否安装成功:
dsh plugin --profile desktop why dsh-provider-studio
能列出这个包,说明依赖和 bundle 都注册了。
卸载则用:
dsh plugin --profile <profile> remove dsh-provider-studio
重启 DSH 后官方 Models 页会恢复。
仓库 package.json 显示的版本是 1.1.2,engines.dsh 要求 >=0.2.1-rc.5,许可证为 MIT。README 注明该插件在 DSH 0.2.1-rc.5 与 0.2.2-rc.1 上实测。
典型用法¶
打开后,设置 →「供应商管理」。页面列出当前 profile 的所有 llm-pi-ai 供应商,另有一个内置的 DeepSeek 官方行(来自 llm-deepseek,可编辑、不可删除)。
新建供应商的步骤:
- 列表底部点「+ 新增供应商」。
- 选模板(按分组浏览或搜索名称 / 域名),或选「自定义供应商」从空白开始。
- 填写表单,注意 Base URL 的填法随协议变化:
OpenAI 兼容 /chat/completions 填到 /v1,如 https://api.openai.com/v1
OpenAI Responses /responses 填到 /v1
Anthropic Messages /v1/messages 填根地址,如 https://api.anthropic.com,/v1/messages 由客户端补
Python 式的误填 …/v1 会在输入框下方提示。API Key 可以留空稍后补,但填了才能用「读取模型」。
- 点「创建」,成功后自动进入详情页。
拉取模型时,插件用当前 Base URL + 密钥 + 请求设置里的自定义请求头去取列表(OpenAI 系 GET {baseURL}/models,Anthropic 为 GET {root}/v1/models)。弹窗里可搜索、全选或逐个勾选,点「加入所选」并入模型表。注意这时还只是草稿,点「保存」才写盘。
模型行右侧的「测试」会发一个真实最小请求:聊天类协议发 max_tokens: 1,Responses 类发 max_output_tokens: 16,20 秒超时。成功显示 ✓ 延迟,失败显示红色徽章,鼠标悬停看具体 HTTP 错误,结果约 6 秒后自动消失。
模型高级参数里,思考能力三选一:继承内置目录(默认,不在配置里声明)、不支持思考(写 reasoningEfforts: false)、自定义等级(逐条声明「等级 → 实际发送值」)。至少要保留一个 off 以外的等级,否则保存会被拦下。兼容开关 compat 的字段随协议变化,OpenAI 兼容 19 项、Responses 4 项、Anthropic 7 项,不设置就交给 pi-ai 自动判断。
导出配置得到的是这种形状:
- id: llm-pi-ai
name: "@deepseek-ai/dsh-llm-pi-ai"
config:
providers:
my-gateway:
displayName: My Gateway
api: openai-completions
baseURL: https://api.example.com/v1
apiKeyEnv: MY_GATEWAY_API_KEY
models: ...
内容取自 profile 的 patch 文档而不是 schema 投影,手写的 reasoningEfforts、compat、请求头都会原样带出来;内置 DeepSeek 行同样可导出,形状是 - id: llm-deepseek。本机已有同名条目时需要手动合并。
适用场景与注意¶
适合的场景大致是:需要接多个第三方供应商或网关、依赖未在 schema 里声明的模型字段、希望密钥在界面上可管理、以及不想反复手改 cordis.patch.yml 的 DSH 用户。
使用时需要注意几点。插件是第三方页面,替代的是官方 Models 页而不是适配器本身,卸载后官方面板即可恢复。它以当前 DSH 进程的权限运行,能读取配置、凭据服务并发起模型请求,因此安装前应打开仓库核对源码,确认 index.js、client.js、cordis.patch.yml 的行为与预期一致,并留意许可证(仓库标注 MIT)。安装和更新都要求完整重启 DSH。
结尾¶
dsh-provider-studio 的价值在于把供应商、密钥、模型这三类日常改动收进一个页面,同时保留配置文件里的原始字段。它没有改变 DSH 的插件机制,只是把原来需要手改 patch 的工作接进了设置界面。
目录页:https://www.skillhub.cn/plugins/realchendahuang/dsh-provider-studio
仓库:https://github.com/realchendahuang/dsh-provider-studio
社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。