在 DSH 环境中使用模型时,有时会遇到特定模型端点受网络区域限制,需要通过代理访问,而同一提供者的其他模型直连正常的情况。若通过全局环境变量配置代理,会影响所有请求;若直接修改 baseURL,则可能隐藏真实上游。dsh-plugin-model-proxy 解决了这一问题,它允许在传输层对特定的提供者/模型对进行代理路由,其他请求保持直连,且不会修改配置中的 baseURL。
这是一个社区 DSH 插件,由 biyuhao 维护。它提供了一套规则系统,用于将特定的模型请求路由到指定的代理服务器,并内置了设置界面以支持批量与分组管理。
核心功能¶
插件支持基于规则的精细化路由,匹配优先级为:精确模型 > 前缀匹配 > 通配符。
- 路由规则:支持
{provider, model, proxyUrl, enabled}格式配置,精确模型匹配优先级最高。 - 目的过滤:支持在规则中添加
purpose字段,例如compaction,让特定类型的请求走代理,而对话等请求保持直连。 - 凭据集成:支持通过
credentialRef引用 DSH 凭据服务中的user:password条目,将代理密码与配置解耦。 - 连通性测试:新增代理规则后会自动进行探测,检查 CONNECT 或 SOCKS 握手是否成功,结果记录在主机日志中。
- 协议支持:支持
http://、https://、socks5://和socks5h://。 - 实时生效:修改规则后,下一次
llm/stream调用即可生效,无需重启进程。 - 设置界面:通过
Settings → Plugins → Model Proxy访问,提供提供者选择器(下拉菜单或自定义文本)和批量管理功能。
安装¶
推荐使用 DSH 的 profile 管理方式安装,该方式会自动处理依赖并注入加载条目。
dsh plugin --profile <name> add dsh-plugin-model-proxy
配置¶
通过 UI 配置¶
进入 Settings → Plugins → Model Proxy 页面,通过界面选择提供者、模型、代理地址并启用规则。
通过文件配置¶
在 ~/.dsh/settings.yaml 中添加 model-proxy 配置段。配置项 proxyUrl: "" 表示直连(免代理)。
model-proxy:
enabled: true
debug: false
defaultProxy: ""
rules:
- provider: opencode
model: muse-spark-1.2-contributor
proxyUrl: socks5://127.0.0.1:1080
enabled: true
- provider: opencode
model: "*"
proxyUrl: ""
enabled: true
注意事项与手动安装¶
插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证。
- 手动安装:如果需要手动管理配置,需先在 profile 目录安装依赖,然后创建或修改
~/.dsh/cordis.patch.yml,插入一行 loader 条目。
# ~/.dsh/cordis.patch.yml
- insert:
- id: model-proxy/host
name: dsh-plugin-model-proxy
config: {}
- 字段名与嵌套:loader-entry 的标识字段为
name:,而非module:。新插入的行必须嵌套在insert:下。注意,仅主机半部分是 loader entry,浏览器半部分由dsh.client自动发现。 - 避免冲突:不要手动添加
model-proxy/client行,这会导致浏览器代码在 Node 进程中运行。此外,不要将手动配置路径与上述推荐的 profile 管理安装方式混合使用,否则会在启动时产生冲突。
该插件通过劫持 fetch 并监听 llm/stream 事件实现路由,不修改 baseURL,保持了配置的原貌。完整源码与目录可查看 GitHub。