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
羽毛球分组比赛记分
小程序二维码

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

小夜