dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness plugin: routes cliproxy-claude and cliproxy-openai through a local CLIProxyAPI, so the agent reaches your own CLI subscriptions
Routes Claude, OpenAI/Codex, and Gemini through Antigravity OAuth in DeepSeek Harness through one local CLIProxyAPI instance.
The Gemini route uses your Google/Antigravity account — not a Gemini API key. CLIProxyAPI owns the browser login, refresh token, Google project, native request fingerprint, and translation; this plugin is its OpenAI-compatible DSH client.
| DSH provider | Authentication owned by CLIProxyAPI |
|---|---|
cliproxy-claude | Claude Code subscription |
cliproxy-openai | Codex/OpenAI subscription |
cliproxy-gemini | Google Antigravity OAuth |
dsh plugin --profile web add github:DevViking-Persike/dsh-cliproxy
Restart DSH. The enabled routes query /v1/models when the Harness requests their catalogs, so only models currently exposed by your proxy appear. Installing the plugin does not perform OAuth login.
When Claude and Codex already come from dsh-subscriptions, enable only routes: [gemini] here to avoid presenting alternative proxy routes for the same model families.
CLIProxyAPI owns Antigravity OAuth login. Run this once:
cliproxyapi -config /opt/homebrew/etc/cliproxyapi.conf -antigravity-login
Authorize the Google account in the browser. CLIProxyAPI writes antigravity-<email>.json under its configured auth-dir (normally ~/.cli-proxy-api) and refreshes it itself. This DSH plugin never reads the Google access or refresh tokens.
The key named below is only the local proxy's access control between DSH and 127.0.0.1:8317; it is not a Gemini API key. For a loopback endpoint, the plugin reads the first api-keys entry from the local CLIProxyAPI config by default, so no environment variable is required and the key is never displayed.
http://127.0.0.1:8317/v1.-antigravity-login.CLIPROXY_API_KEY, or a readable local proxy config. Local config discovery is allowed only for loopback URLs; a local key is never sent to a remote endpoint implicitly.Every field is optional.
| Field | Default | Meaning |
|---|---|---|
routes | [claude, openai, gemini] | Provider families to register. Use [gemini] alongside dsh-subscriptions. |
discoverModels | true | Query the authenticated /v1/models endpoint for available model ids. Set false for an explicitly managed offline catalog. |
modelDiscoveryTimeoutMs | 10000 | Deadline for each catalog request. |
baseURL | http://127.0.0.1:8317/v1 | Endpoint including /v1. |
apiKeyEnv | CLIPROXY_API_KEY | Optional credential reference/environment variable for the proxy access key. |
proxyConfigPath | /opt/homebrew/etc/cliproxyapi.conf | Local CLIProxyAPI YAML from which the first proxy access key may be read. |
readLocalProxyKey | true | Allow local config discovery for loopback endpoints only. |
claudeModels | six Claude entries | Catalog for cliproxy-claude; a supplied array replaces the default. |
openaiModels | five GPT entries | Catalog for cliproxy-openai. |
geminiModels | eight Gemini entries | Antigravity catalog for cliproxy-gemini. |
streamIdleTimeoutMs | 300000 | Budget between stream reads. |
defaultContextWindow | 200000 | Context assumed for an uncatalogued model. |
maxTokens | 32000 | Default output cap. |
retryPolicy | normal, 3 retries | Merged over the harness-compatible default. |
- id: dsh-cliproxy
name: dsh-cliproxy
config:
baseURL: http://127.0.0.1:8317/v1
routes: [gemini]
geminiModels:
- id: gemini-pro-agent
name: Gemini 3.1 Pro High
contextWindow: 1048576
maxTokens: 65535
inputModalities: [text, image]
The proxy's OpenAI model endpoint exposes available ids, not context windows or image capabilities. This plugin attaches configured metadata for known ids. New ids with the route's claude-, gpt-, or gemini- prefix appear as text-only with the configured default context and output limits. Custom aliases must be listed in the corresponding model catalog. An explicit catalog restricts discovery to its listed ids; it does not advertise configured models absent from the proxy response. Catalog errors remain visible and do not silently fall back to potentially unavailable models.
The Gemini route identifies a model family, not an authenticated Google account. CLIProxyAPI chooses the backend and account; configure it to serve Gemini through Antigravity if that is the intended credential source. Account eligibility and quotas remain controlled by Google. No Google OAuth client secret, access token, or refresh token is bundled with this plugin. Existing Claude/Codex authentication remains in dsh-subscriptions when that plugin is used.
routes: [gemini] selects the Harness model family; it does not select a backend account. If the proxy also serves Gemini through other providers, create a unique alias under its Antigravity OAuth channel, as supported by the CLIProxyAPI configuration:
# CLIProxyAPI configuration, not cordis.yml:
oauth-model-alias:
antigravity:
- name: gemini-pro-agent
alias: agy-gemini-pro
fork: true
Then select only that alias in the Harness plugin configuration:
routes: [gemini]
geminiModels:
- id: agy-gemini-pro
name: Gemini Pro (AGY / Antigravity)
contextWindow: 1048576
maxTokens: 65535
inputModalities: [text, image]
Keep the alias exclusive to Antigravity across all proxy providers. Model ids and limits must match the upstream model actually exposed by your installation. Discovery will list the alias only after CLIProxyAPI exposes it. This configuration is an operator example; installing this plugin does not rewrite your proxy configuration or initiate login.
The adapter is transparent to the model: it registers provider routes and streams responses, adding no tool, prompt section, or context. Usage counts are disjoint — inputTokens excludes cache reads already counted inside prompt_tokens.
Text and image input are supported for catalog entries declaring image capability. Images resolve through the Harness attachment service and are serialized as data URLs. Unknown models default to text-only; audio and video are refused.
The adapter implements prepareCall() without reading credentials or querying the catalog. Dispatch retains the prepared adapter and reads the proxy access key only when the stream starts. Image request pricing is unspecified, so the Harness uses its neutral estimate.
auth-dir.STREAM_CLOSED instead of looking complete.retry-after reaches the harness retry plugin; idle timeout measures server silence, never a slow consumer.cordis.yml.npm install && node --test test/*.test.js
The suite uses temporary loopback HTTP servers; no provider credentials or vendor network access are required. Discovery tests cover account-visible ids, configured aliases, route selection, authentication errors, cancellation, and prepared dispatch.