dsh-model-bridge:把 DSH 的模型開放成本機 OpenAI / Anthropic 網關

前言

DeepSeek Harness(DSH)的設計理念是“一切皆插件”。在實際開發中,我們經常需要在本地工具(如 VS Code 插件、腳本、本地 LLM 客戶端)中調用大模型。通常的做法是複製 DeepSeek 官方或其他服務商的 API Key 到各個工具中,這不僅繁瑣,還存在密鑰分散和泄露的風險。

dsh-model-bridge 解決的就是這個問題。它作爲一個 DSH 插件,將 DSH 進程內已配置好的所有模型,封裝成本機的一個 OpenAI / Anthropic 兼容網關。其他開發工具只需指向本地地址,即可直接使用 DSH 裏的模型,無需再填一次 API Key。

插件介紹

  • 名稱:dsh-model-bridge
  • 功能:把 DSH 能調用的所有模型開放成本機 OpenAI / Anthropic 兼容網關,供其他開發軟件使用。
  • 維護者:438417623wq
  • 許可:MIT

核心能力

  1. 雙協議網關:提供 OpenAI 兼容接口(/v1)和 Anthropic 兼容接口,統一端口 8791。
  2. 進程內調用:直接調用 ctx.llm.stream(),無需搬運憑據。憑據由 DSH 裏的適配器管理,插件不存儲。
  3. 零配置:不註冊 adapter,不聲明 configurable provider,避免與現有 provider 路由衝突。
  4. 模型支持:支持 workbuddy/deepseek-v4.1-flash 等模型,支持完整的工具調用(tool-call)。
  5. 安全性:Key 爲本地文件,僅綁定 127.0.0.1,防止局域網外訪問。

安裝配置

該插件是標準的 DSH bundle。安裝時需將其路徑寫入 profile 的依賴列表,並重啓 DSH。

1. 修改 package.json

在 DSH 的 profile 配置文件中添加依賴和 bundle:

// ~/.dsh/profiles/<profile>/package.json
{
  "dependencies": {
    "dsh-model-bridge": "file:F:/KF/dsh api/dsh-model-bridge"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "dsh-model-bridge"
      ]
    }
  }
}

2. 驗證掛載

安裝完成後,運行驗證腳本確認插件已掛載:

node "F:\KF\dsh api\dsh-model-bridge\tools\verify-mount.mjs"

3. 啓動網關

重啓 DSH 後,網關會自動啓動,監聽 http://127.0.0.1:8791。

典型用法

其他開發軟件只需配置 Base URL 和 API Key,即可調用 DSH 裏的模型。

連接信息

  • OpenAI 兼容 Base URL:http://127.0.0.1:8791/v1
  • Anthropic Base URL:http://127.0.0.1:8791
  • API Key:讀取自 ~/.dsh/model-bridge/key(可在 DSH 設置頁查看)

模型名

填限定名,例如 workbuddy/deepseek-v4.1-flash。完整的可用模型列表可通過 http://127.0.0.1:8791/v1/models 獲取。

客戶端示例

PowerShell (Anthropic 客戶端)

$env:ANTHROPIC_BASE_URL = "http://127.0.0.1:8791"
$env:ANTHROPIC_API_KEY  = "<你的 key>"

Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8791/v1",
    api_key="<你的 key>",
)

reply = client.chat.completions.create(
    model="workbuddy/deepseek-v4.1-flash",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user",   "content": "你好"},
    ],
)
print(reply.choices[0].message.content)

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://127.0.0.1:8791/v1",
  apiKey: "<你的 key>",
});

const reply = await client.chat.completions.create({
  model: "workbuddy/deepseek-v4.1-flash",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "你好" },
  ],
});
console.log(reply.choices[0].message.content);

curl

curl.exe -H "Authorization: Bearer <你的 key>" http://127.0.0.1:8791/v1/models

注意事項

  1. 運行依賴:網關僅在 DSH 運行時可用。關閉 DSH 後,8791 端口即停止服務,不適合需要 7×24 常駐的場景。
  2. Key 權限:Key 以本地文件形式存在,本機任何程序理論上均可讀取。但網關強制綁定 127.0.0.1,並校驗 Host/Origin,因此局域網和公網無法訪問。
  3. 消息格式要求:使用 workbuddy/deepseek-v4.1-flash 等模型時,第一條消息必須是 system。上游安全策略要求如此,否則會返回 502 錯誤。
  4. Token 消耗:這些模型消耗推理 token,建議 max_tokens 設置不低於 512,否則正文可能會被推理過程佔滿。
  5. 模型選擇:在 DSH 設置頁中,取消勾選的模型不會出現在 /v1/models 中,也無法被調用。

參考資料

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

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

小夜