DeepSeek Harness (DSH) 自定义 LLM 提供商插件

前言

DeepSeek Harness (DSH) 的架构允许通过插件扩展功能。在接入特定厂商的 LLM 服务时,往往需要处理多种情况:厂商可能需要特定的协议(如 OpenAI Responses 或 Anthropic Messages),模型列表可能不公开或动态获取不稳定,此外还需要显式声明兼容性字段以适配 DSH 的内部流程。

dsh-custom-provider 插件解决了这些问题。它通过静态配置提供路由和模型目录,支持多种协议,并重用了 DSH 的流式适配器。

插件介绍

该插件由 linziyanleo 维护,采用 MIT 许可证。它主要提供静态路由配置和模型目录管理,不依赖提供商的 /models 端点,能够将自定义的 LLM 提供商无缝接入 DSH 的模型选择器和标准流式/工具调用流程中。

安装与启用

插件需要安装在 DSH 的 Web profile 中。

1、执行以下命令安装插件包:

npx @deepseek-ai/dsh plugin --profile web add @linziyanleo/dsh-custom-provider

2、安装完成后,通过以下命令验证配置命名空间是否加载成功:

npx @deepseek-ai/dsh --profile web --dump-config

配置方法

插件支持通过 Web 界面和 settings.yaml 文件两种方式进行配置。

Web 设置页面

1、在 DSH Web 中打开 Settings → Custom Providers。
2、输入提供商 ID(必须以小写字母开头,仅包含小写字母、数字和连字符)、显示名称。
3、选择协议(如 openai-completions、openai-responses 或 anthropic-messages)。
4、输入符合协议要求的 API base URL 和凭证引用。
5、输入 API 密钥。该字段为只写,通过 DSH 凭证服务存储,不直接写入配置文件。
6、添加模型,设置上下文窗口、最大输出等参数。
7、保存配置,模型随即生效。

settings.yaml 配置示例

也可以直接在 settings.yaml 中编写 llm-custom.providers 配置。以下是一个基于 OpenAI Chat Completions 协议的示例:

llm-custom:
  providers:
    example:
      displayName: Example Provider
      apiKeyEnv: EXAMPLE_API_KEY
      api: openai-completions
      baseURL: https://api.example.com/v1
      compat:
        supportsStore: false
        supportsDeveloperRole: false
        thinkingFormat: deepseek
        supportsReasoningEffort: true
        maxTokensField: max_tokens
        requiresReasoningContentOnAssistantMessages: true
      models:
        - id: example-model
          name: Example Model
          contextWindow: 262144
          maxTokens: 32768
          reasoningEfforts:
            off:
            high: high
            max: max

协议与 BaseURL

api 字段决定了适配器如何拼接请求路径。baseURL 必须符合所选协议适配器的预期。

api 适配器追加的路径 典型 baseURL
openai-completions /chat/completions https://api.example.com/v1
openai-responses /responses https://api.example.com/v1
anthropic-messages /v1/messages https://api.example.com

核心功能

插件提供了以下能力:

  • Web 管理界面:提供可视化的设置页面,用于添加、编辑和删除自定义提供商。
  • 多协议支持:支持 openai-completions、openai-responses 和 anthropic-messages 协议。
  • 声明式配置:支持在 settings.yaml 中通过 llm-custom.providers 进行声明式配置。
  • 静态模型目录:提供静态模型列表,不依赖提供商的 /models 端点。
  • 按请求凭证解析:通过 DSH 凭证服务动态解析 API 密钥,不将密钥存储在配置文件中。
  • 兼容性字段:支持 Provider 级默认值和每模型覆盖,主要用于 openai-completions 协议。
  • 流式适配器复用:重用 DSH 的 pi-ai 流式适配器,确保文本流、工具调用、使用量统计等流程正常。
  • 全配置验证:在路由注册替换前进行验证,避免无效配置部分激活。

注意事项

  • 运行环境:需要 Node.js ^22.19.0 或 >=24.0.0。
  • DSH 版本:需要 DSH 0.1.0-rc.7 兼容包。
  • Profile:必须使用 Web profile。
  • ID 规则:Web UI 中的提供商 ID 必须以小写字母开头并仅包含小写字母、数字和连字符。
  • BaseURL:baseURL 路径必须符合所选协议适配器的预期(例如 OpenAI 协议通常需要包含 /v1)。
  • 兼容性字段:compat 字段仅适用于 openai-completions 协议,切换到其他协议时该字段会被忽略。

结语

该插件为 DSH 增加了配置自定义 LLM 提供商的能力,通过静态配置解决了动态获取模型列表和协议适配的痛点。对于需要接入非标准或特定协议厂商的开发者,这是一个实用的工具。

羽毛球分组比赛记分
小程序二维码

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

小夜