HeWhenJay / dsh-provider-hub

Listed

Native DSH provider hub with official account OAuth, API channels, model discovery, failover, and logs

mainModel View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:HeWhenJay/dsh-provider-hub

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit f7b3572Synced Aug 17, 2026

DSH Provider Hub

@hewhenjay/dsh-provider-hub 是面向 DeepSeek Harness(DSH)的独立本地模型服务中心。它把 API Key 渠道、OpenAI-compatible 中转站和 Codex / Claude / Gemini 官方账号放进同一套路由、故障切换与日志界面中。

安装 Provider Hub 不要求安装 Cockpit Desktop,也不会读取、停止或接管已有 Cockpit 服务。官方账号能力由插件自行管理的 loopback sidecar 提供;sidecar 使用上游 CLIProxyAPI 的固定版本,并在首次安装时校验官方 SHA-256。

界面预览

Provider Hub 服务总览

页面顶部显示实际 Relay 地址、运行状态和 DSH 供应商同步状态;下方可在 供应商官方账号日志 之间切换。

夜间稳定代理:多 API 薅羊毛也有兜底

Provider Hub 可以同时代理多个 API 提供商、同一地址下的多个 API Key,以及每个 Key 支持的多个模型。适合把免费额度、活动额度或低成本渠道放在前面持续使用,同时保留一个稳定渠道作为最后兜底:

  1. 为每个 API Key 建立独立渠道,设置容易识别的 Key 名称、模型白名单和优先级;同一 Base URL 可重复使用,不同 Key 互不覆盖。
  2. 免费或低成本渠道设为普通渠道并提高优先级;稳定的付费渠道勾选为保底渠道。
  3. 请求遇到限流、连接重置或 4084094254295xx 等瞬时故障时,当前渠道会进入冷却,Provider Hub 自动尝试下一个匹配模型的 Key。
  4. 普通渠道全部不可用后才进入保底渠道,因此晚上可以一边消耗免费额度,一边依靠稳定 Key 防止单一 API 提供商宕机导致整条服务停止。
  5. 会话粘性会优先复用已经成功的健康渠道;渠道失效后自动重选,无需守在电脑前手工切换。

故障切换无法保证第三方服务永不失败,但可以消除单一提供商或单一 Key 故障这一处明显单点。请遵守各 API 提供商的服务条款、限流政策和合理使用规则。

自动模型规格

渠道保存或官方账号发现新模型后,Provider Hub 会自动调用 DSH 的联网检索服务,并使用 Provider Hub 中第一个已配置 API Key 的第一个可用文本模型处理证据;生图、音频、嵌入、重排等模型会自动排除。若没有可用的 Provider Hub 文本模型,才回退到 DSH 当前默认模型。用户也可以在 模型规格 页选择具体 API Key 渠道与文本模型,并点击 一键填写规格。插件分别检索上下文、最大输出和思考档位,并把 DSH 搜索提供方返回的真实引用摘录标记为 search-citation 证据;对可直接访问的 HTTPS 来源还会在公网地址校验、固定 DNS 解析、禁止重定向、端到端硬截止与大小限制下读取页面正文并标记为 page-content。URL、标题和抓取失败状态本身不能证明任何字段,私网或不安全来源会被直接淘汰。资料来源采用“官方优先、社区共识兜底”:

  • 思考程度及其准确 API wire 值;
  • 上下文窗口;
  • 最大输出窗口;
  • 兼容的思考格式与官方证据来源。

每个字段独立验证:厂商官方来源证明该字段即可写入;没有官方资料时,至少两个不同注册域名的独立社区来源必须针对同一模型、同一字段给出一致值,才作为“社区共识”写入。同一站点的多个子域、单篇博客、只出现相同数字但未明确关联模型/字段的内容,以及相互冲突的资料都不会采用;没形成共识的字段保持空白。模型规格 页会明确显示本次使用的 API Key 名称、渠道与文本模型,并按字段标注“官方证据”或“社区共识”。配置页会逐模型展示已填写字段、待补全字段、实际支撑来源和失败原因;页面始终提供 一键填写规格 按钮,用户可随时重新检索并刷新已填写字段。验证通过的内容会热同步到 DSH 自动管理的 provider-hub 模型供应商,无需为单次补全重启 Web。

逐模型查看完整、部分补全、缺少证据与失败状态

能力概览

  • DSH Web 独立入口:与任务看板、SSH、知识库同属左侧栏上方的应用入口,点击后进入专用中心页面。
  • 内置官方账号服务:OpenAI / Codex、Anthropic / Claude、Google / Gemini 官方 OAuth。
  • API Key 渠道:官方 API、中转站、本地网关或其他 OpenAI-compatible 服务;同一 Base URL 可配置多个独立命名的 Key。
  • 每 Key 模型白名单:留空允许该 Key 的全部上游支持模型,填写后只允许精确列出的模型进入该 Key。
  • 模型发现:优先复用 DSH 自带的一键模型发现,失败时直接读取供应商 /models
  • 聚合 OpenAI-compatible API:/v1/models/v1/chat/completions/v1/responses
  • 自动接入 DSH Models:服务启动后按实际监听端口创建 provider-hub 供应商,并同步每个 Key 白名单过滤后的聚合模型目录。
  • 路由控制:优先级、普通/保底渠道、瞬时故障冷却、最大尝试次数、会话粘性和模型别名。
  • 安全凭据:首次启动自动生成以 Provider-Hub- 开头的 Relay 客户端 API Key,一次性展示给用户复制;实际密钥写入 DSH credentials,JSON 配置仅保存凭据引用,用户可在服务设置中替换。
  • 脱敏日志与计费:Provider Hub 为每次请求生成自己的 UUID(不持久化调用方 X-Request-ID),逐次尝试展示请求 ID、Key 名称、模型与上游模型、协议、重试、HTTP 状态、finish reason、输入/缓存/输出/推理/总 Token、首 Token 与完整耗时。客户端断开会取消上游请求并标记失败,Relay 遵守写入背压;合法的多行 SSE 事件也能正确解析 usage。Token 优先采用供应商 usage,部分 usage 帧只覆盖实际存在的字段,不会清除早先记录;缺失时明确标记本地估算;费用优先采用供应商报告,否则按渠道配置的每百万 Token 单价估算;只有本次实际使用的普通输入、缓存输入、普通输出和推理 Token 类别都存在明确单价时才计算总费用,任一实际类别缺价就显示“未配置”,绝不把未知价格默认为免费。Anthropic 风格的 cache_read_input_tokens 作为附加输入累计,而不是误当成 input_tokens 的子集。日志不记录提示词、完整响应、密钥、凭据引用或完整上游 URL。
  • 非侵入端口避让:端口被占用时只选择后续空闲端口,绝不按端口结束其他进程。

请求级 Token、性能与计费日志

安装

要求:DSH 0.1.0-rc.6 或兼容版本、Node.js 20+,以及首次安装内置账号服务时可访问 GitHub Releases。

从 GitHub tag 安装:

dsh plugin --profile web add github:HeWhenJay/dsh-provider-hub#v0.6.10

也可以下载 GitHub release 中的 hewhenjay-dsh-provider-hub-0.6.10.tgz 后安装:

dsh plugin --profile web add ./hewhenjay-dsh-provider-hub-0.6.10.tgz

npm 包名已预留为 @hewhenjay/dsh-provider-hub,但 v0.6.10 当前以 GitHub tag 和 release 资产为正式发布渠道。Host 与 Web Client 通常在下次安全重启 dsh web 后加载。不要为了安装插件停止当前正在承载会话或模型调用的服务;可在方便时重启并刷新 DSH Web 页面。

安装后可从左侧栏上方的 Provider Hub 应用入口进入。它位于任务看板之后,点击后在中间区域打开独立页面;旧的侧栏底部入口和 Settings 页面入口已移除。

从 DSH 左侧栏打开 Provider Hub 独立页面

首次启动生成的客户端 Key

全新安装第一次启动 Relay 时,如果 listen.apiKeyEnv 对应凭据不存在,Provider Hub 会生成 Provider-Hub-<安全随机值> 并写入 DSH credentials。独立页面顶部会一次性显示完整 Key:

  1. 点击 复制 Key 并保存到可信密码管理器;
  2. 点击 我已保存 后,页面立即清除内存中的明文,后续只显示“已配置”;
  3. JSON 配置与请求日志均不保存或输出完整 Key;
  4. 需要轮换时打开 服务设置 → 新的客户端访问密钥,输入自定义值并保存。手动值不强制使用自动前缀,避免破坏已有客户端配置。

该 Key 用于访问 Provider Hub 自己的 Relay,不是供应商 API Key。DSH 自动管理的 provider-hub 模型供应商会使用对应凭据引用,不需要把明文复制进配置文件。

新用户快速上手

安装并安全重启 dsh web 后,按下面两种方式任选一种接入模型。已有 Cockpit 或其他 DSH 供应商不会被关闭或替换。

方式一:添加 API Key 或中转渠道

  1. 点击左侧栏的 Provider Hub,确认页面顶部显示“Provider Hub 运行中”。
  2. 保持在 供应商 标签,点击右上角的 添加供应商
  3. 填写渠道 ID、渠道显示名称、API Key 名称和 Base URL。API Key 名称用于区分同一 Base URL 下的多个 Key,也会显示在请求日志中;不会发送给上游。
  4. API Key 输入实际密钥;“凭据变量名”会随渠道 ID 自动生成。密钥只写入 DSH credentials,不会保存在 provider-hub.json
  5. 选择 Chat Completions 或 Responses 协议,点击 获取全部模型。确认上游支持模型后,可填写当前 Key 的 白名单模型路由;支持逗号或换行分隔,留空表示允许该 Key 的全部上游支持模型。
  6. 设置当前 Key 的优先级;需要最后兜底时勾选保底渠道。若同一 Base URL 还要使用另一个 Key,请创建一个不同渠道 ID 的新渠道,并为它设置独立的 Key 名称、凭据、优先级和白名单。
  7. 点击 保存渠道,回到供应商卡片后点击 测试

为渠道设置 API Key 名称和 Base URL

为当前 API Key 设置模型白名单

图中 API Key 保持为空,仅演示安全的字段填写方式。新渠道的默认凭据引用是 DSH_PROVIDER_HUB_<CHANNEL_ID>_KEY:渠道 ID 会转成大写,所有非字母数字字符替换为下划线,例如 openai-officialDSH_PROVIDER_HUB_OPENAI_OFFICIAL_KEY

方式二:登录官方账号

  1. 打开 Provider Hub → 官方账号
  2. 如账号服务尚未安装,点击 安装并启动;首次安装会下载固定版本并验证官方 SHA-256。
  3. 选择 登录 OpenAI / Codex登录 Anthropic / Claude登录 Google / Gemini
  4. 在浏览器完成官方 OAuth 授权。
  5. 返回 DSH;页面会轮询授权状态并自动刷新账号与模型。

登录 Codex、Claude 或 Gemini 官方账号

账号服务启动后,Provider Hub 会生成一个只存在于运行时的内部渠道。它使用 sidecar 返回的模型目录和账号服务优先级参与统一路由,不会把内部访问密钥返回浏览器,也不会把内部渠道写进 routes 配置。

OAuth 使用官方固定的 localhost 回调端口:

供应商回调端口
OpenAI / Codex1455
Anthropic / Claude54545
Google / Gemini8085

Provider Hub 只在 127.0.0.1 上临时监听对应端口并校验 OAuth state。若端口已被占用,登录会明确失败;插件不会关闭占用者。释放端口后重新发起登录即可。

自动补全官方模型规格

渠道保存或官方账号提供新模型列表后,Provider Hub 会自动在后台逐个处理尚未配置的可识别模型;无需用户手动启动:

  1. 通过 DSH 的联网检索服务分别查询上下文窗口、最大输出与思考档位,官方来源优先,同时保留社区候选;
  2. 合并每次查询的引用摘要,并在安全约束下读取可访问来源的页面正文,再交给用户选定的 Provider Hub API Key 与文本模型生成严格 JSON;
  3. 只接受明确关联精确模型 ID 与字段的证据;官方域名可直接证明字段,没有官方资料时必须由两个独立注册域达成一致。thinkingFormat 还必须与已识别厂商匹配,否则省略该兼容字段;
  4. contextWindowmaxTokensreasoningEfforts 分别验证,查到的字段写入,没查到的字段保持空白;
  5. 将验证通过的字段、兼容配置和来源 URL 写入 provider-hub.json,再热同步到自动管理的 llm-pi-ai.providers.provider-hub

任务会静默在 Host 后台运行,页面显示当前模型和进度,可以关闭 Provider Hub 页面后继续使用 DSH。再次打开页面可在 模型规格 区域逐模型查看上下文窗口、最大输出窗口、思考程度、待补全字段、官方来源和失败原因。单次最多处理 100 个模型;超长模型 ID、无法识别厂商、没有官方证据或模型输出不符合结构时,对应字段保持空白,插件不会用模型记忆猜测规格。用户可随时点击 一键填写规格 重新检索并刷新字段。渠道删除模型时会清理对应的孤立规格,研究期间被删除的模型不会写回配置。

这项功能会消耗 DSH 联网检索与当前默认模型的调用额度;每个新模型在一次自动补全中只尝试一次,不会因保存或刷新形成无限循环。手动重试由用户明确触发。执行补全和配置热同步本身不需要重启 Web。

确认模型已自动接入 DSH

保存渠道、完成官方账号登录或自动补全模型规格后,页面顶部会显示 DSH 供应商已同步(N 个模型)。此时打开 DSH 的模型选择器即可看到 Provider Hub 提供的模型,无需再手工创建模型供应商。

如果仍显示“等待可用模型”,请先确认渠道的模型列表不为空,或在 官方账号 标签点击 刷新账号。插件不会自动切换当前会话或默认模型,用户可在模型选择器中自行选择。

自动接入 DSH Models 的规则

Provider Hub 默认在 127.0.0.1:19529 提供统一接口。服务成功启动且聚合目录至少包含一个模型后,插件会通过 DSH 官方 settings 服务自动创建或更新 llm-pi-ai.providers.provider-hub

  • Base URL 使用页面显示的实际地址,包括端口冲突后的自动避让端口;
  • API 固定为 OpenAI Chat Completions;
  • 模型从 Provider Hub 的聚合 /v1/models 目录读取、去重;每个 Key 非空白名单之外的模型不会进入聚合目录,并尽可能保留名称、上下文窗口和最大输出长度;
  • 首次启动会自动生成客户端访问密钥;只要凭据已经配置,自动管理的供应商在本机与 LAN 模式下都会声明对应 apiKeyEnv,使 llm-pi-ai 能在请求前解析 Relay Key。Relay 的 loopback 兼容规则仍允许受控的本机无 Origin 请求,但 DSH 正常模型调用会携带该 Key;
  • 渠道、官方账号或 sidecar 模型变化后会自动重新同步。

插件只管理 provider-hub 这一条供应商,不修改其他供应商,也不会切换 agent-default-model。如果用户已经手工创建了同名条目,插件会报告冲突并保持原配置不变。Relay 停止、禁用或聚合模型为空时,插件只删除经自身确认创建的条目;模型为空时状态显示为等待,不写入 DSH 无法使用的空模型供应商。

实际 Base URL 仍会显示在页面顶部,例如:

http://127.0.0.1:19529/v1

路由规则

对每次请求,Provider Hub 按以下顺序选择渠道:

  1. 先按当前 API Key 的 modelAllowlist 过滤:空白名单允许该 Key 的全部上游支持模型;非空白名单只接受精确列出的请求模型 ID,模型别名不能绕过白名单。
  2. 再验证请求模型是否存在于渠道的上游支持模型目录;上游目录为空时视为不额外限制。
  3. 普通渠道按优先级从高到低排序。
  4. 保底渠道按优先级从高到低排在普通渠道之后。
  5. 遇到 408409425429500502503504 或连接重置时,将当前 Key 渠道暂时冷却。
  6. maxAttempts 范围内尝试后续渠道;相同 Base URL 的另一个 Key 只要是独立渠道且匹配模型,也可成为后续候选。
  7. 启用会话粘性时,同一 session 优先复用已成功的健康渠道;失效时自动重选。

内置官方账号渠道默认优先级为 1000,可在账号服务设置中修改。它与自定义 API 渠道使用相同排序规则。自定义渠道可标记为保底。

模型别名是“Provider Hub 对外模型 ID → 供应商真实模型 ID”的映射,例如:

{
  "gpt-main": "vendor-gpt-2026-01"
}

客户端请求 gpt-main 时,该渠道会把模型名改写为 vendor-gpt-2026-01

内置账号 sidecar

Provider Hub 当前固定使用:

  • 上游项目:router-for-me/CLIProxyAPI
  • 版本:v7.2.133
  • 许可证:MIT
  • 下载源:该项目的官方 GitHub Release
  • 完整性:先下载 checksums.txt,再按精确资源名校验 SHA-256

支持 Windows、macOS 和 Linux 的 x64 / arm64。文件位于 $DSH_HOME/provider-hub/sidecar

provider-hub/sidecar/
├─ auth/                  # 官方账号授权文件
├─ bin/7.2.133/           # 已校验的 sidecar 可执行文件
├─ downloads/             # 临时下载目录(成功后清理)
└─ config.yaml            # 仅本机配置

安全与生命周期边界:

  • 固定监听 127.0.0.1
  • 首选端口 19629,被占用时最多向后搜索 49 个端口;
  • Management API 禁止远程访问,内置控制面板关闭;
  • client key 与 management key 随机生成并写入 DSH credentials;
  • 插件只保存并终止自己启动的子进程,绝不根据端口查杀进程;
  • 下载、安装或启动失败只影响官方账号渠道,不妨碍自定义 API 渠道和 Provider Hub relay 启动。

关闭“未安装时自动下载”后,启动缺失的 sidecar 会显示“未安装”,不会访问网络。仍可在页面中手动点击 安装并启动

配置

默认配置文件是 $DSH_HOME/provider-hub.json。完整示例见 config.example.json

{
  "provider": "provider-hub",
  "maxAttempts": 6,
  "cooldownMs": 30000,
  "sessionAffinity": true,
  "listen": {
    "enabled": true,
    "host": "127.0.0.1",
    "port": 19529,
    "apiKeyEnv": "DSH_PROVIDER_HUB_CLIENT_KEY"
  },
  "accountService": {
    "enabled": true,
    "autoInstall": true,
    "port": 19629,
    "priority": 1000
  },
  "managedProvider": {
    "enabled": true,
    "id": "provider-hub",
    "displayName": "Provider Hub"
  },
  "routes": [
    {
      "id": "shared-prod",
      "displayName": "Shared API",
      "keyName": "Production Key",
      "baseURL": "https://relay.example/v1",
      "api": "openai-completions",
      "apiKeyEnv": "DSH_PROVIDER_HUB_SHARED_PROD_KEY",
      "priority": 100,
      "backup": false,
      "models": ["gpt-main", "gpt-fast"],
      "modelAllowlist": ["gpt-main"]
    },
    {
      "id": "shared-backup",
      "displayName": "Shared API",
      "keyName": "Backup Key",
      "baseURL": "https://relay.example/v1",
      "api": "openai-completions",
      "apiKeyEnv": "DSH_PROVIDER_HUB_SHARED_BACKUP_KEY",
      "priority": 10,
      "backup": true,
      "models": ["gpt-main", "gpt-fast"],
      "modelAllowlist": []
    }
  ]
}

环境变量 DSH_PROVIDER_HUB_CONFIG 可指定其他配置路径。渠道 ID 必须唯一;Base URL 不要求唯一,因此同一地址可以配置多个使用不同凭据引用的 Key。keyName 是可进入日志的显示名称;modelAllowlist: [] 表示允许该渠道 models 中的全部模型,非空时只发布和路由其中精确列出的模型。

端口与监听安全

  • Relay 默认只监听 127.0.0.1:19529
  • sidecar 始终只监听 127.0.0.1,首选 19629
  • 两者发生端口冲突时都会向后寻找空闲端口,不会关闭原监听器。
  • 首次启动会自动生成以 Provider-Hub- 开头的客户端访问密钥;改为 0.0.0.0 时继续使用该密钥认证。
  • 不要把 relay 直接暴露到公网;远程使用应配合防火墙、VPN 或带认证的反向代理。

HTTP 接口

统一 relay:

GET  /health
GET  /v1/models
POST /v1/chat/completions
POST /v1/responses

DSH Host 管理接口(供插件 Web UI 使用)。GET /logs 返回 { logs, summary }:明细按渠道尝试记录 usage、性能和计费依据;summary 按 Provider Hub 生成的 requestId 聚合客户端请求,同时分别给出请求数、渠道尝试数、故障切换数与失败尝试数。成功/失败和平均耗时按完整客户端请求计算,Token 与费用按所有实际渠道尝试累计,因为失败尝试也可能产生真实用量:

GET    /api/provider-hub/state
GET    /api/provider-hub/logs
DELETE /api/provider-hub/logs
PUT    /api/provider-hub/service
POST   /api/provider-hub/models/discover
GET    /api/provider-hub/models/research
POST   /api/provider-hub/models/research
POST   /api/provider-hub/routes
DELETE /api/provider-hub/routes/:id
POST   /api/provider-hub/routes/:id/test

GET    /api/provider-hub/account-service
PUT    /api/provider-hub/account-service
POST   /api/provider-hub/account-service/install
POST   /api/provider-hub/account-service/start
POST   /api/provider-hub/account-service/stop
POST   /api/provider-hub/account-service/refresh
POST   /api/provider-hub/account-service/oauth/:provider/start
GET    /api/provider-hub/account-service/oauth/status?state=...
PATCH  /api/provider-hub/account-service/accounts/:id/status
DELETE /api/provider-hub/account-service/accounts/:id

管理响应只返回脱敏状态。sidecar client key、management key、供应商 API Key、OAuth token 和账号文件内容不会返回 Web Client。

从 DSH Cockpit Relay 迁移

v0.3 更名为 DSH Provider Hub,并从“桥接外部 Cockpit”迁移为独立内置账号服务。

  1. 如果 $DSH_HOME/provider-hub.json 已存在,直接使用新文件。
  2. 否则若 $DSH_HOME/cockpit-relay.json 存在,读取旧配置、按新结构规范化并写入 provider-hub.json
  3. 旧文件保留,不删除、不覆盖。
  4. 旧渠道的凭据引用(例如 COCKPIT_RELAY_*)原样保留,因此不会丢失已有 DSH credential。
  5. 新建渠道使用 DSH_PROVIDER_HUB_* 命名。
  6. /api/cockpit-relay 暂时作为管理 API 兼容别名保留;新 Web Client 只调用 /api/provider-hub

迁移不会修改当前 DSH 默认模型,也不会接管任何已经监听的 Cockpit 端口。Provider Hub 自 v0.4 起只会新增并管理独立的 provider-hub 模型供应商;其他 DSH Models 条目保持不变。

故障排查

  • Provider Hub 显示不同端口:首选端口已占用。使用页面显示的实际 Base URL,不要关闭未知监听器。
  • 账号服务安装失败:确认 GitHub Releases 可访问、DSH Home 可写、系统架构受支持。SHA-256 不匹配时插件会删除下载并拒绝执行。
  • OAuth 无法开始:固定 localhost 回调端口可能已占用。插件不会抢占;释放相应端口后重试。
  • OAuth 完成后没有模型:点击 刷新账号,检查账号是否停用或暂不可用;也可保留 API Key 渠道作为普通或保底路径。
  • DSH 中没有自动出现 Provider Hub:确认 relay 正在运行且至少有一个可用模型;零模型时插件会等待,不创建无效供应商。
  • 模型规格没有自动补全:确认 DSH 已配置可用的默认模型和联网检索服务,并且 Provider Hub 至少有一个可安全识别厂商的新模型。
  • 日志费用显示“未配置”:上游没有返回 cost,或当前渠道没有为本次实际使用的每一种 Token 类别配置每百万 Token 单价。只配置输入价但请求产生了输出,不会把输出误算为免费。在渠道编辑器填写“模型价格 JSON”后,新请求会按输入、缓存输入、输出与推理 Token 分别估算;历史日志不会追溯重算。
  • 部分字段仍显示“待补全”:搜索引用与可访问正文都没有证明该字段,或思考程度缺少准确 API wire 值。其他已被证据证明的字段仍会保留;插件不会猜测空白字段。
  • 需要再次尝试:打开 模型规格 标签并点击 一键填写规格;可先选择具体 API Key 与文本模型。
  • 补全后是否需要重启:不需要。规格写入后由 DSH settings 热更新;只有安装或升级 Provider Hub 插件本身时,才需要用户在方便时自行重启 dsh web
  • 显示同名供应商冲突:DSH 已存在非插件创建的 provider-hub 条目。插件不会覆盖它;请先在 Models 中改名或删除该条目再刷新 Provider Hub。
  • DSH 无法访问 relay:使用实际 Base URL;检查 relay 开关和 DSH_PROVIDER_HUB_CLIENT_KEY 凭据。首次自动生成的 Key 可在页面一次性复制,之后也可在服务设置中替换。

开发与验证

npm test
npm pack --dry-run

测试覆盖路由优先级、每 Key 模型白名单、同 URL 多 Key、别名绕过防护、保底与冷却、流式响应、端口避让、凭据不落盘、Key 名称日志与脱敏、模型发现、官方来源模型规格补全与拒绝边界、DSH 供应商同步与冲突保护、账号管理契约、OAuth state 限制、sidecar 资源映射与 checksum 解析、打包边界和浏览器模块注册。

许可与第三方组件

Provider Hub 插件代码按仓库 LICENSE(CC BY-NC-SA 4.0)发布。左侧应用入口中的 Network 图标来自 Lucide,按 ISC License 使用。内置账号服务二进制不打进 npm 包;首次使用时从 CLIProxyAPI 官方 Release 下载。CLIProxyAPI 由其作者按 MIT License 发布。使用官方账号、API Key、中转服务和多账号路由时,请遵守对应平台服务条款、账号政策和当地法律。

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
NOASSERTION
Latest release
v0.6.10
Last updated
Aug 17, 2026, 9:07 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.