deepseek-harness-model-config

27Star1Fork0Issue0Watching

为 DeepSeek Harness Web UI 新增"模型高级配置"页,添加自定义 OpenAI/Anthropic 端点并按模型配置上下文与推理强度。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
MIT
分支
main
dsh-plugindsh-plugin-marketdsh-plugin-verifydsh-plugins

安装

$ dsh plugin --profile web add github:MarvekG/deepseek-harness-model-config

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 MarvekG/deepseek-harness-model-config:先查看仓库 https://github.com/MarvekG/deepseek-harness-model-config.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

为 DeepSeek Harness Web UI 增加一个"模型高级配置"设置页,可以在不重启 DSH 的情况下新建自定义模型端点(OpenAI/Anthropic 协议),拉取端点公开的模型列表,并按模型设置上下文窗口、最大输出、推理强度等能力。

核心能力

  • 新增自定义端点:填写名称、URL、API Key 和协议,保存后立即可被会话选择器使用
  • 支持三种 API 协议:openai-completions、openai-responses、anthropic-messages
  • 一键拉取模型候选:通过 OpenAI 兼容的 GET /models 拉取候选列表,提供全选/反选/全不选
  • 按模型编辑能力参数:上下文窗口、最大输出、输入模态(文本/图片)、推理强度
  • 从 models.dev 自动补全:拉取后用 https://models.dev/api.json 自动补全缺失的上下文、最大输出和推理信息
  • API Key 仅走 Harness 凭据系统:不会写入 settings.yaml,也不会出现在配置预览

技术实现

  • 语言: JavaScript(ESM type: "module"
  • 关键依赖: DSH 内置 client 插件 @deepseek-ai/dsh-client-runtime / @deepseek-ai/dsh-client-ui-settings / @deepseek-ai/dsh-client-locale / @deepseek-ai/dsh-api-remotes(通过 window.__ModuleLoader__.load 注入)
  • 架构模式: Cordis 双端插件,host 端仅声明 Loader 名 models-config-plugin、不注册任何服务,所有读写走宿主已有的 settings RPC;client 端在 settings.section 槽位注册"Advanced model config"页面
  • 入口文件: src/index.js(Host,8 行)+ src/client.js(Client,1661 行 React)+ cordis.patch.yml(bundle 注入声明)

适用场景

当你需要把 DSH 对接到本地的 OpenAI 兼容网关(如 one-api / new-api / 自研代理)或 Anthropic 兼容服务时,只在 UI 文本里增减模型、不愿意手写 settings.yaml;又或者想让某些模型支持自定义推理强度、自定义 Header,或给未声明容量的端点设置默认上下文/最大输出时使用。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness未声明插件走 dsh.bundle.patch,要宿主已加载 llm-pi-ai 适配器并支持 settings.section / settings.mutate / credentials.set 等扩展点
Node.js未声明插件代码本身只用到 export const 语法
平台macOS / Windows / Linux跨平台,源码中没有 OS / CPU 平台校验或原生模块
原生模块仅使用浏览器端 React 和宿主内置 RPC

安装方式

dsh plugin --profile web add github:MarvekG/deepseek-harness-model-config

配置项

配置类型说明默认值
端点名称string作为 provider 路由的显示名与派生凭据引用的词干,必须以小写字母开头
端点 URLstringProvider 请求与模型发现使用的根地址,需 httphttps 协议,如 https://gateway.example/v1
API 协议enum可选 openai-completions / openai-responses / anthropic-messagesopenai-completions
API Keystring写入 Harness 凭据系统,不会进入配置文件
自定义 Headerkey/value调用模型时附带,GET /models 时不附带
默认上下文窗口整数当模型条目和内置模型都没有上下文大小时的回退值262144
默认最大输出整数当模型条目和内置模型都没有最大输出时的回退值32768
默认输入模态enum模型未声明时回退的输入类型(文本/图片)[text]
默认推理强度enumProvider 路由级默认推理强度,从 offmax
推理预算key/value为支持预算的推理服务设置各级别 token budget
推理兼容objectopenai-completions 路由有效,控制 thinkingFormatsupportsReasoningEffort
缓存保留enumnone / short / longpi-ai 默认
传输方式enumsse / websocket / websocket-cached / autopi-ai 默认
请求超时整数(毫秒)Provider SDK/HTTP 请求超时0(由底层决定)
WebSocket 连接超时整数(毫秒)WebSocket 握手超时
流空闲超时整数(毫秒)单次 provider 读取允许的最大空闲时间300000
重试策略object含重试模式、可重试状态码、最大次数、退避初始/上限、抖动比例dsh-llm-retry 默认
每模型上下文整数该模型可承载的最大上下文由路由默认或内置模型继承
每模型最大输出整数模型最大输出能力,并作为该模型请求默认 maxTokens由路由默认或内置模型继承
每模型输入模态enum支持的输入类型列表(文本/图片)由路由默认或内置模型继承
每模型推理强度mapoff/minimal/low/medium/high/xhigh/max 中选级别并设置对应的"网络拼写"来自 models.dev 匹配或用户手工声明

端点高级参数与每模型参数的完整字段表见 docs/llm-pi-ai-parameters.md

常见问题

Q: 这个插件和 DSH 自带的 Models 设置页冲突吗?

A: 在标准 Web profile 下两者会同时可见,DSH 设计上明确把它们互斥。本插件在 profile 层禁用 ui-settings-models 那一行后即可独立运行,否则会出现两套 UI 改同一份配置(src/client.js:1232docs/model-config-plugin-design.md:188)。

Q: API Key 写到哪里,会不会泄露到 settings.yaml?

A: 不会。插件仅通过 Harness 的 credentials 服务写入凭据引用(如 MY_ENDPOINT_API_KEY),真实密钥只在内存里提交一次,settings.yaml 和配置预览中都不会出现明文(package.json:5-7README.md:18)。

Q: 支持哪些 API 协议?

A: 当前提供三种下拉选项:openai-completionsopenai-responsesanthropic-messages。拉取模型候选时 anthropic-messages 会被自动改用 OpenAI 兼容 GET /models,因为模型列表普遍是 OpenAI 形态(src/client.js:1375-1377, 1181)。

Q: models.dev 不可达时还能正常工作吗?

A: 能。端点返回的模型仍然可以手动勾选和编辑,只是上下文、输出、输入模态、推理能力不再自动补全,提交后会提示"端点结果仍可编辑"(src/client.js:136, 270, 1184README.md:37)。

Q: 编辑已保存端点时 API Key 字段留空,会覆盖原 Key 吗?

A: 不会。留空表示"继续使用现有凭据",只有填写了新值才会调用 credentials.set 更新(docs/model-config-plugin-design.md:140)。

Q: 卸载和更新怎么操作?

A: 都是先 remove 再 add:

dsh plugin --profile web remove dsh-models-config-plugin
dsh plugin --profile web add github:MarvekG/deepseek-harness-model-config
dsh web

README.md:62-77

Q: 重新拉取模型时,已勾选的会被清掉吗?

A: 不会。已勾选的模型保留勾选,本次新出现的模型默认不勾选,端点不再返回的模型也会保留显示,避免刷新误删(src/client.js:1171-1174README.md:13)。

Q: 能给一个端点配全局自定义 Header 吗?拉取模型时也会带上吗?

A: 端点高级参数里可以加自定义 Header,但 Header 只在调用模型时附带,不会出现在 GET /models 请求里(README.md:30docs/llm-pi-ai-parameters.md:37)。

上手难度

入门 — 在 Web UI 里填表单即可,无需手写 YAML;懂 DSH 的 profile / plugin 概念、有现成的 OpenAI/Anthropic 兼容网关地址即可上手。

已知问题与限制

  • 拉取模型仅覆盖 OpenAI 兼容的 GET /models;其他协议(如纯 Anthropic 协议端点)的模型列表需要手动编辑(docs/model-config-plugin-design.md:225
  • models.dev 没有给出某模型的推理信息时,UI 不会替用户猜测能力;用户需要自己添加推理级别(docs/model-config-plugin-design.md:226
  • 独立插件形态与 DSH 自带的 ui-settings-models 互斥:profile 启用本插件时应禁用原 Models 设置行,否则两套 UI 会同时改同一份配置(docs/model-config-plugin-design.md:188, 227
  • 模型发现存在 4MB 接收上限;401/403 被归因为凭据问题,不可达/非 JSON 被归为"拉取失败"(docs/model-config-plugin-design.md:198

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/MarvekG/deepseek-harness-model-config)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录