dsh-sub2api
Connect your sub2api gateway to DeepSeek Harness: OpenAI-compatible multi-provider routes (OpenAI / Claude / Grok / Gemini) behind one base URL, with per-key model discovery, usage lookup, and a settings page.
AI 분석
核心用途是将 sub2api 订阅转换网关整合进 DSH。适合需要通过单一网关地址同时路由 OpenAI、Claude、Grok、Gemini 等多平台模型的用户。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:GodD6366/dsh-sub2apidsh-sub2api
Connect your sub2api gateway to DeepSeek Harness as model providers.
Sub2API is an AI API gateway that turns subscription quota into OpenAI-compatible endpoints. In its model, each API key is bound to a group, and the group decides the platform (OpenAI / Claude / Grok / Gemini) and the models that key can serve. This plugin registers one provider route per configured key, all sharing a single base URL — so the same gateway serves OpenAI, Claude, Grok, and Gemini models side by side, and the harness routes each request to the key whose group owns the requested model.
Features
- One base URL, four provider routes:
sub2api-openai,sub2api-claude,sub2api-grok,sub2api-gemini— each configured with its own key, registered as a live LLM provider the moment the key is set. - Streaming chat: full SSE streaming, tool calls (
tool_calls), reasoning deltas, and token usage — all mapped to the harnessStreamChunkprotocol. - Model discovery: one-click "fetch models" calls
GET {baseURL}/modelswith the key, so each route's catalog matches exactly what the sub2api group serves. - Usage lookup: "view usage" calls
GET {baseURL}/usageand summarizes quota, balance, rate limits, and subscription windows. - Standards-based config: base URL and model catalogs live in the
llm-sub2api:settings section ($DSH_HOME/settings.yaml, written by the web Models page); keys go through the harness credential store. - Provider icons from lobehub/lobe-icons, embedded as SVG in the settings page.
Install
dsh plugin --profile web add dsh-sub2api
or, from this repository:
dsh plugin --profile web add .
Configure
Open Settings → Sub2API 模型 (or edit $DSH_HOME/settings.yaml directly):
llm-sub2api:
baseURL: http://localhost:8080/v1
providers:
openai:
apiKeyEnv: SUB2API_OPENAI_API_KEY
models:
- id: gpt-4o
claude:
apiKeyEnv: SUB2API_CLAUDE_API_KEY
grok:
apiKeyEnv: SUB2API_GROK_API_KEY
gemini:
apiKeyEnv: SUB2API_GEMINI_API_KEY
Store each key through the credentials service (the web Models page writes it, or export SUB2API_OPENAI_API_KEY=… etc.). A route activates only when its platform has a key; clear the key to drop the route again.
Development
npm install
npm run build # tsdown → lib/ + client wrapper
npm run typecheck
License
MIT