dsh-llm-newapi:给 DeepSeek Harness 增加 NewAPI 提供方

前言

如果你在用 DeepSeek Harness(dsh)的 web profile,希望把 NewAPI 这类 OpenAI 兼容网关接进来,但不想改 dsh 本体,可以看一下这个插件。

DSH 的理念是「一切皆插件」;社区目录是独立站点,与 DeepSeek / 幻方没有官方从属关系。dsh-llm-newapi 是一个 LLM Provider 插件,为 dsh 增加一个 NewAPI 提供方,provider route id 为 newapi,显示名为 NewAPI。README 描述它为 “zero modifications to dsh itself”。

这是什么

  • 仓库路径:wenzetan/dsh-llm-newapi
  • 许可证:MIT
  • 插件类别:LLM Provider
  • 定位:为 dsh 增加 NewAPI 提供方,不改 dsh 本体
  • 接口形态:实现 @deepseek-ai/dsh-llm 中的 LlmAdapter seam,用于 OpenAI-compatible gateway
  • 调用地址:
  • POST {baseURL}/chat/completions
  • GET {baseURL}/models
  • baseURL 需要包含 /v1
  • 结构:host-side adapter、chat-only model discovery,以及 dsh web 中的 NewAPI 设置页
  • 安装渠道:npm registry、versioned GitHub tags、release tarball、local link development
  • API key:通过 web settings page 配置,固定 credentials reference 名称为 newapi,不从环境变量读取

核心功能

  1. 增加 NewAPI 提供方
    插件在 dsh 中注册 provider route id newapi,显示名 NewAPI

  2. 接入 OpenAI-compatible gateway
    它实现 LlmAdapter seam,使用 POST {baseURL}/chat/completionsGET {baseURL}/modelsbaseURL 需要包含 /v1

  3. 双端结构
    host 侧提供 LLM adapter 和 chat-only model discovery;browser 侧在 dsh web 的设置面板中提供 NewAPI 页面。

  4. 模型发现
    通过 GET {baseURL}/models 获取模型列表,只采纳可服务 chat-completions 的模型。embeddingrerankranker 类模型按命名约定过滤,除非通过配置调整。

  5. Web 设置页配置
    安装后可在 dsh web 中打开 NewAPI 设置页,填入 API key 和 gateway 地址,使用 Fetch model info 拉取模型列表,选择 chat models 后保存。

  6. 可配置项
    配置可以定义:
    - baseURL
    - models
    - modelExcludePatterns
    - defaultContextWindow
    - maxTokens
    - providerHints

  7. 写入校验
    在 settings 写入时,配置校验会拒绝非 http(s)baseURL,以及空的 filter 条目。

  8. API key 行为
    API key 不读环境变量。没有 key 时,第一次请求会失败,错误为 MISSING_CREDENTIAL,并指向 settings page。

安装与启用

README 要求 dsh 版本不低于:

dsh ≥ 0.1.0-rc

下面以 dsh web profile 为例。

安装 stable 版本

使用 npm registry:

dsh plugin --profile web add dsh-llm-newapi

然后编辑:

$DSH_HOME/profiles/web/package.json

dsh.profile.bundles 数组中加入:

"dsh-llm-newapi"

最后重启 dsh web。

安装 stable GitHub tag

使用 moving GitHub tag:

dsh plugin --profile web add "github:wenzetan/dsh-llm-newapi#latest"

安装后同样需要把 dsh-llm-newapi 加入 dsh.profile.bundles,并重启 dsh web。

安装 prerelease 版本

使用 npm next channel:

dsh plugin --profile web add dsh-llm-newapi@next

安装后同样需要注册 bundle 并重启 dsh web。

README 还支持 release tarball 或 local link development 方式,但安装后的 bundle 注册和重启步骤一致。

安装时可能出现的 missing-peer warning

安装时看到 missing-peer warnings 是预期情况。reactcordisdsh-llmdsh-settingsschemastery 等 runtime peers 由 dsh host app 在运行时提供。

不要手动安装这些 peers,也不要启用 autoInstallPeers。这样做可能导致 duplicate cordis services,并造成插件失败。

不要使用无 tag 的 GitHub shorthand

github:wenzetan/dsh-llm-newapi 这种无 tag 形式会安装 main HEAD。README 标记其不推荐用于 release use。

典型用法

安装并完成 bundle 注册后,打开 dsh web 的 NewAPI 设置页:

  1. 填入 API key。
  2. 填入 gateway 地址,地址中需要包含 /v1
  3. 点击 Fetch model info,拉取 GET {baseURL}/models 的模型列表。
  4. 选择需要使用的 chat models。
  5. 保存。

保存后,newapi 提供方下的模型可在 dsh web 中作为该 provider 的模型使用。

配置项示例如下,实际填写时按你的网关地址和模型目录调整:

- id: llm-newapi
  name: dsh-llm-newapi
  config:
    baseURL: http://gateway.local:3000/v1
    # models: []
    # modelExcludePatterns:
    #   - embed
    #   - rerank
    #   - ranker
    # defaultContextWindow: 128000
    # maxTokens: 8192
    # providerHints: {}

其中:

  • baseURL 必须包含 /v1
  • models 是 suggested catalog。
  • modelExcludePatterns 用于 chat-only model discovery 的过滤。
  • defaultContextWindow 用于目录中没有对应模型条目时的 context window。
  • maxTokens 用于模型调用参数。
  • providerHints 用于 provider hints 配置。

API key 不在配置项中填写。它位于固定 credentials reference newapi 下,唯一配置入口是 web settings page。

适用场景与注意

适合以下情况:

  • 使用 dsh web profile。
  • 需要接入 NewAPI 或兼容 OpenAI-compatible gateway 的模型服务。
  • 希望通过 dsh 插件机制增加 provider route,而不是改 dsh 本体。
  • 希望 API key 通过 web settings page 管理,而不是环境变量。

使用前注意:

  • dsh 版本需要满足 README 要求:dsh ≥ 0.1.0-rc
  • 安装后需要把插件加入 $DSH_HOME/profiles/web/package.jsondsh.profile.bundles,并重启 dsh web。
  • missing-peer warnings 是预期情况,不要手动补装 peers,也不要启用 autoInstallPeers
  • 无 tag 的 github:wenzetan/dsh-llm-newapi 会安装 main HEAD,不推荐用于 release use。
  • API key 不读环境变量;没有 key 时,首次请求会返回 MISSING_CREDENTIAL
  • 模型发现只采纳可服务 chat-completions 的模型;embeddingrerankranker 类模型默认按命名约定过滤。
  • 它会作为 dsh web profile 的 bundle 被加载运行;安装前应检查源码与 MIT 许可证。

链接

  • 社区目录页:https://www.skillhub.cn/plugins/wenzetan/dsh-llm-newapi
  • GitHub:https://github.com/wenzetan/dsh-llm-newapi
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜