dsh-model-bridge: Expose DSH Models as a Local OpenAI / Anthropic Gateway

前言

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 中,也无法被调用。

参考资料

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

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

Xiaoye