DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

nanwu98 /

nanwu98/dsh-hide-account-models

Verified

Hide the signed-in DeepSeek account model group in DeepSeek Harness and keep every request on the official API-key provider.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@4b96ed2f

dsh-hide-account-models

A DeepSeek Harness bundle that hides the signed-in DeepSeek account model group from the model picker and keeps every dispatch on the official API-key provider.

In the picker After enabling
DeepSeek account models (signed-in quota) hidden
deepseek-official models (API key) kept, and the only selectable group

The plugin has no settings page and no client half. Turn it on or off from Plugins, exactly like any other bundle.

Why

Signing in to the desktop app adds a deepseek-account provider next to the deepseek-official API-key provider. Both appear in the composer menu. If a conversation keeps an account model selected, its next request can spend on the account even when you intended to use your API key.

This bundle removes the account group from the catalog the picker is built from, and rewrites an already-saved account selection to deepseek-official before the request leaves the Host.

Requirements

  • DeepSeek Harness >=0.2.2-rc.1 <0.3.0 (declared in engines.dsh).
  • An official API key configured under Settings → Models (deepseek-official). Without it there is no model left to select after the account group is hidden. Configure the key first, then enable this plugin.
  • Any operating system. The plugin is platform-neutral.

Install

Replace desktop with the profile you actually start. GitHub installs need Git on the machine, because DSH asks the repository before downloading.

From GitHub (recommended, pinned to a tag)

dsh plugin --profile desktop add github:nanwu98/dsh-hide-account-models#v1.0.0

From the Release tarball (no Git needed)

dsh plugin --profile desktop add https://github.com/nanwu98/dsh-hide-account-models/releases/download/v1.0.0/dsh-hide-account-models-1.0.0.tgz

From the Plugins page

Open Plugins → Add plugin, paste the repository address or the tarball URL, and restart DSH if the page asks. Installing by bare package name only works for a package published to npm; this bundle is currently distributed from GitHub.

After a restart, deepseek-account is gone from the model menu. Nothing else changes: no new page, no new toolbar item.

How it works

Three seams, all in the Host process:

  1. The catalog. Both browser model surfaces build their catalog from ctx.llm.listProviders(). The plugin wraps that method and drops the deepseek-account entry, so the account group disappears from the menu, the search index, and keyboard navigation at the same time.
  2. Prepared calls. A conversation that already saved an account model would still have it in the Host's per-session selection cache. The plugin wraps llm.prepareCall() (the Agent loop and title generation) and rewrites only provider: "deepseek-account" to deepseek-official. Every other field, including the model id, is preserved.
  3. Direct streams. Some callers dispatch through llm.stream() without preparing first — the default compaction summarizer is one. The same provider rewrite is applied there.

The plugin intentionally does not listen to agent/request: that hook is deprecated in DSH 0.2.x, and the Agent loop rejects a provider or model change there before dispatch. Rewriting at prepareCall/stream is the supported place to keep the route on the API key.

Disabling or removing the plugin restores the original methods and announces the change, so the account group comes back immediately without a restart.

Before you enable it

  • Configure deepseek-official first. The plugin does not check whether the official route has a usable key. If it does not, the picker will be empty and requests will fail with the official route's error instead of spending on the account. That failure is intentional; it is safer than a silent fallback.
  • Old conversations. A session saved with an account model shows the "select a model" prompt until you choose an official model. If you send before choosing, the request is prepared against deepseek-official with the same model id.
  • Model ids are not translated. If the account catalog and the official catalog name a model differently, a rewritten request can be rejected by the provider. Pick an official model in that conversation once and the problem does not come back.
  • Nothing is rewritten on disk. Session logs keep their history; only the outgoing request is rerouted.

Privacy

The plugin is a pure in-process filter:

  • No network requests. It never contacts DeepSeek or any other host.
  • No files. It does not read or write configuration, credentials, logs, or session data.
  • No telemetry. It reports nothing anywhere.
  • No credential access. It only calls the llm service that DSH already mounted; it never resolves, reads, or copies an API key or account token.

It reads provider metadata (id, name) from the llm service and writes only one thing: the in-memory provider list that the UI reads.

Enable, disable, remove

Turn the bundle off with its switch in Plugins; the account group returns at once. Remove it entirely with:

dsh plugin --profile desktop remove dsh-hide-account-models

Removing the plugin does the same; it has no state to clean up.

Compatibility

  • DSH 0.2.2-rc.1 through 0.2.x. The bundle relies on the provider ids deepseek-account / deepseek-official and on ctx.llm.listProviders() and ctx.llm.prepareCall() from that release line.
  • A future DSH release that renames those providers or stops projecting the provider list into the catalog will make the filter a no-op. Disable the bundle if the picker misbehaves rather than leaving it installed.
  • This is a community plugin, not an official DeepSeek project.

Development

Pure ESM JavaScript, zero dependencies, no build step. Run the unit tests:

npm test

The tests use a fake llm service and a fake Cordis context. They cover the provider filter, the prepareCall and stream rewrites, restoration of the prototype methods through a traceable proxy, and coexistence with another plugin that patches the same method later.

Plugin index

The repository also publishes a format-1 market index for Plugins → Discover → Index sources:

  • jsDelivr (recommended): https://cdn.jsdelivr.net/gh/nanwu98/dsh-hide-account-models@main/index.json
  • GitHub raw: https://raw.githubusercontent.com/nanwu98/dsh-hide-account-models/main/index.json

License

MIT. See LICENSE.

The plugin is not affiliated with DeepSeek. It manipulates the harness's in-process provider registry; review the source before enabling it in a profile you depend on.

—/ 5

No ratings yet

Verified DSH bundle

Commit 4b96ed2fd8cb

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout