DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Llm Gateway Compat — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-llm-gateway-compat

Llm Gateway Compat

OpenAI-compatible gateway adapter and dialect fixes for DeepSeek Harness

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add dsh-llm-gateway-compat@0.4.0
READMECompatibilityVersions

Compatibility and provenance

Llm Gateway Compat is published as dsh-llm-gateway-compat and currently resolves to version 0.4.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
9/10/2026

Versions

0.4.0stable
9/10/2026
0.3.0stable
8/21/2026

Related plugins

Loading related plugins…

Latest
0.4.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
62.1 kB
Files
31
Surface
any
License
MIT
Source
npm
GitHub
★ 1
Weekly downloads
0
Last push
9/10/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in models-usage.

Usage@linxin666/dsh-usageUsage statistics plugin for the dsh web GUI: per-provider balance and coding-plan quota detection plus a live token usage ledger, with the current session provider's today usage on the sidebar entryWhale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editinUsage Stats@ychris12138/dsh-usage-statsToken usage heatmap, provider balances, and subscription quotas for the dsh web GUICodex Connectdsh-codex-connectChatGPT OAuth and Codex models for DeepSeek Harness.

README

dsh-llm-gateway-compat

English | 中文

A community bundle compatible with DeepSeek Harness (DSH) 0.1.5-rc.1 or later. It stops empty streamed tool-call identity from wiping the call, turns the two most common request 400s into an llm-pi-ai compat write plus one retry, and can own Chat Completions routes that default to system / max_tokens.

This is not an official DeepSeek package. It is not endorsed by DeepSeek.

0.4.0 tracks the current harness APIs (ToolCallId, ctx.settings.installSection). It will not load against npm 0.0.1-rc.1.

What it does

Streamed tool-call identity (v0.1)

Wraps llm/stream so later SSE fragments with empty id / name cannot overwrite a nonempty value. Synthesizes compat_call_<index> when no id ever arrives. Official DeepSeek streams stay unchanged when identity is already stable.

Request dialect 400s (v0.2)

On agent/request-error, classifies developer-role and max_completion_tokens refusals, writes the matching field into official llm-pi-ai settings, retries the same step once, and injects a logged plugin notice. Generic 400s are not retried.

Chat Completions adapter (v0.3)

Optional routes under llm-gateway-compat.providers. Each route is a direct POST {baseURL}/chat/completions adapter with gateway-safe defaults:

  • system prompt is always role: system
  • output cap is always max_tokens
  • empty tool-call id/name never overwrite, even if stream sanitizing is off
  • extraBody for fields the harness vocabulary does not own (user, prompt_cache_key)
  • extra headers, Authorization: Bearer or DashScope api-key
  • thinking dialect: reasoning_content (default), thinking, think-tags, or none

Route ids must not collide with llm-deepseek or llm-pi-ai. Pick a new id such as dashscope-compat.

Install

From GitHub (ships built lib/, no install-time TypeScript build):

dsh plugin --profile web add github:snowshadow/dsh-llm-gateway-compat

Restart dsh web. Pin a commit (github:snowshadow/dsh-llm-gateway-compat#<sha>) so a later push cannot change what runs. Only add packages whose source you trust.

From a local checkout:

dsh plugin --profile web add /absolute/path/to/dsh-llm-gateway-compat

Config

Plugin switches (also live under $DSH_HOME/settings.yaml as llm-gateway-compat:):

keydefaultmeaning
enabledtruemaster switch for stream wrapping and 400 recovery
diagnosetrueclassify known gateway 400s and inject a YAML snippet
autoApplyCompattruepersist the matching llm-pi-ai compat field and retry once
providers{}Chat Completions routes this plugin owns

One gateway route:

# $DSH_HOME/settings.yaml
llm-gateway-compat:
  providers:
    dashscope-compat:
      displayName: DashScope
      baseURL: https://dashscope.aliyuncs.com/compatible-mode/v1
      apiKeyEnv: DASHSCOPE_API_KEY
      authHeader: bearer
      thinkingFormat: reasoning_content
      extraBody:
        user: harness
      models:
        - id: deepseek-v4-flash
          name: DeepSeek V4 Flash

Store DASHSCOPE_API_KEY on the Models page or in $DSH_HOME/.credentials.yaml, or export it in the environment that launches dsh. Include /v1 (or /compatible-mode/v1) in baseURL when the gateway requires it. Then select the dashscope-compat / deepseek-v4-flash route in the model picker.

Provider fields:

keydefaultmeaning
baseURLrequiredorigin plus path prefix; /chat/completions is appended
apiKeyEnvrequiredcredential reference: Models page / $DSH_HOME/.credentials.yaml, then that environment variable
authHeaderbearerbearer or api-key
models[]advisory catalog; unlisted ids still resolve as text-only
extraBody—merged under harness-owned fields; max_completion_tokens is stripped
headers—extra request headers; User-Agent still comes from harness attribution
thinkingFormatreasoning_contenthistory + stream reasoning dialect
includeUsagetruesend stream_options.include_usage

Develop

Typecheck and tests expect a sibling deepseek-harness checkout at ../deepseek-harness (0.1.5-rc.1 APIs). pnpm test / pnpm run build link @deepseek-ai/dsh-llm, dsh-settings, and cordis to that checkout.

pnpm install
pnpm test
pnpm run build

Known limitations

  • Cannot recover a tool name the gateway never emitted.
  • Image input is refused (UNSUPPORTED_CONTENT).
  • think-tags is applied on replayed assistant history, not on partial streamed tags.
  • No idle-stream watchdog; caller AbortSignal is honored.
  • Auto-apply only writes supportsDeveloperRole: false and maxTokensField: max_tokens on llm-pi-ai routes.
  • There is no Web settings card; edit settings.yaml or the profile patch.

License

MIT