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.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
P

@sendya/dsh-provider-mgoole

Provider Mgoole

DeepSeek Harness plugin: registers the 芒果AI (mangoai-official) OpenAI-compatible provider into the native llm-pi-ai settings card on enable, and removes it on disable

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

npx -y @deepseek-ai/dsh plugin --profile web add github:sendya/dsh-provider-mgoole#aaada049ee2d56057daf6a46aeee058f74474218
READMECompatibilityVersions

Compatibility and provenance

Provider Mgoole is published as @sendya/dsh-provider-mgoole and currently resolves to version 1.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/26/2026

Versions

1.1.0stable
10/26/2026
1.0.0stable
10/20/2026

Related plugins

Loading related plugins…

Latest
1.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 1
Weekly downloads
0
Last push
10/26/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.

Experimental Cot Translation Bundle@deepseek-ai/dsh-experimental-cot-translation-bundleExperimental machine translation of expanded reasoningWhale 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 editinOur Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — Install this plugin in dsh to use cutting-edge models including DeepSeek V4.1 Flash and Kimi K3, with no login, registration, or API Key required. The desktop version also offers an EAC co-payment channel; starting with 2.0, it supports ten account channels: LobsterAI, Qoder, TRAE, Connect Workbuddydsh-connect-workbuddyConnects locally signed-in WorkBuddy models (domestic and international versions) to DeepSeek Harness, automatically reading each model’s points multiplier from the upstream catalog on every refresh, with per-model image input toggles, multi-account switching, automatic account rotation from an acco

README

dsh-provider-mgoole

English | 简体中文

A DeepSeek Harness bundle plugin that adds the 芒果AI (MangoAI) OpenAI-compatible gateway as a model provider — and gives it the native Models-page card (API key field, endpoint / protocol / model list, “获取可用模型”).

Enabling the plugin registers the provider; disabling it removes the provider again.

Route idmangoai-official (fixed)
Default endpointhttps://mgoole.com/v1
Protocolopenai-responses
Credential referenceMGOOLE_API_KEY
Settings namespacellm-pi-ai (the namespace the Models page renders natively)

Install

dsh plugin add github:sendya/dsh-provider-mgoole

Or from a local checkout:

dsh plugin add link:/path/to/dsh-provider-mgoole

Then enable it in 设置 → 插件 (Settings → Plugins). A provider named 芒果AI appears in 设置 → 模型 with the shipped editor; type your API key there and hit 获取可用模型 to pull the live model list.

The key is written through the credentials service; it never enters this repository or the patch file.

What it actually does

Two moving parts:

cordis.patch.yml   insert one row:  id: mangoai-provider, name: @sendya/dsh-provider-mgoole
index.js           on enable  -> settings.mutate('llm-pi-ai', set  providers.mangoai-official)
                   on disable -> settings.mutate('llm-pi-ai', unset providers.mangoai-official)

cordis.patch.yml deliberately carries no config. Everything is written at runtime through the settings service, which is what makes both requirements possible at once:

  1. The native card. @deepseek-ai/dsh-client-ui-settings-models chooses a provider editor by comparing the settings namespace literally:

    function layoutOf(ns) {
      if (ns === "llm-deepseek") return "deepseek";
      if (ns === "llm-pi-ai")   return "pi-ai";
      return "unknown";   // fields render, but submitDisabled = ... || layout === "unknown"
    }
    

    and @deepseek-ai/dsh-llm-pi-ai derives its namespace from ctx.fiber.entry.options.id. Declaring the provider inside the llm-pi-ai namespace is therefore the only way to get the shipped card — the same trick @deepseek-ai/dsh-llm-deepseek-api-key uses by owning the llm-deepseek row.

  2. Editable config. @deepseek-ai/dsh-config-editor rejects a write to a namespace that a higher patch layer also configures:

    settings/rejected: Configuration for "llm-pi-ai" is overridden by a home patch
                       or command-line overlay
    

    So a bundle that ships config for llm-pi-ai freezes the card (reads fine, saves fail, user-added models vanish on reload). Writing through ctx.settings instead keeps the profile document the single owner: the card stays editable and enable/disable really adds and removes the provider.

The transaction trap

Config edits may not run inside a Loader transaction, and apply() / disposer both run inside one:

Error: HMR transactions cannot be nested

Deferring with setTimeout does not help — it inherits the same AsyncLocalStorage context. The plugin therefore escapes the context explicitly before writing:

const als = ctx.get('hmr')?.executing          // the AsyncLocalStorage behind the guard
als.exit(() => void settings.mutate(...))      // write on its own turn

Removal on disable additionally needs a listener that outlives the plugin's own context, so a plugin-manager/changed listener is attached to ctx.root and unsubscribes itself after it has deleted the entry. settings/document-updated, connection/request, and a short timer ladder act as fallbacks.

Defaults written on first install

providers.mangoai-official:
  displayName: 芒果AI
  apiKeyEnv: MGOOLE_API_KEY
  api: openai-responses
  baseURL: https://mgoole.com/v1
  models:
    - deepseek-v4-flash
    - deepseek-v4-pro
    - deepseek-v4.1-flash      # contextWindow 1000000, maxTokens 256000, text+image, reasoningEfforts

An existing providers.mangoai-official entry is never overwritten: the plugin only fills in a missing one, so anything you change in the UI survives restarts, updates and re-enables.

Files

  • index.js — the Host plugin (inject: ['settings']). No protocol code, no client half.
  • cordis.patch.yml — one inserted row, no config.
  • icon.svg, locale/*.json — display metadata for the plugin inventory.

Requirements

  • DeepSeek Harness 0.2.1-rc.2 or newer (needs settings.mutate, llm-pi-ai as a configurable namespace, and the llm-pi-ai / deepseek layouts in the Models page).
  • Node.js ≥ 20.

Debugging

DSH_MANGOAI_DEBUG=1 dsh web     # traces install/uninstall decisions to /tmp/mangoai-plugin.log

Uninstall

Disable the plugin in 设置 → 插件: providers.mangoai-official is removed and the route disappears. To drop it entirely:

dsh plugin remove @sendya/dsh-provider-mgoole

License

MIT