Introduction

In DSH’s Web settings, the plugin list page may list many modules, and a single card may not directly explain its purpose. Below introduces dsh-plugin-description: it adds Chinese and English functional descriptions to the plugin list page in Web settings and publishes a pluginDescriptions service, allowing Host-side plugins within the same DSH process to register or override descriptions.

What is it

dsh-plugin-description is a DeepSeek Harness composite plugin, maintained by MysaDC, licensed under MIT.

It targets a normally functioning DeepSeek Harness Web profile. After installation, it supplements descriptions for plugin cards in the plugin list page of Web settings and provides the pluginDescriptions service and the GET /plugin-descriptions data endpoint.

It declares a dsh.bundle patch cordis.patch.yml. After installation via dsh plugin add, it automatically inserts a composite line: the same line enters the Node part of the host composite and the Client part of the browser plugin manifest. DSH mounts it automatically on every startup; no need to manually rewrite the composite file.

Core Features

  • Display Chinese and English functional descriptions for each plugin card in the plugin list page of Web settings.
  • Expand a card to view full description, Loader entry ID, configuration status, and Cordis mount status.
  • Publishes the pluginDescriptions service for Host-side plugins within the same DSH process to register or override descriptions.
  • Provides the GET /plugin-descriptions data endpoint.
  • Built-in dictionary of descriptions covering all 134 module names in the factory DSH composite.
  • The search box matches plugin names, Loader entry IDs, and description text simultaneously, and switches with the interface language zh/en.
  • Supports “Edit Description” within the page, allowing saving custom descriptions, modifying only the current card, or restoring defaults.
  • User-customized descriptions are persisted to <DSH_HOME>/plugin-descriptions.json.
  • Supports installation via GitHub Release, GitHub repo/tag, link, or manual method.

Installation and Enablement

A normally functioning DeepSeek Harness Web profile is required before installation. dsh plugin depends on pnpm.

If pnpm prompts:

ERR_PNPM_ADDING_TO_ROOT

You can add the following in .npmrc in the profile directory:

ignore-workspace-root-check=true

Then retry the installation command.

Install from GitHub Release

By default, it installs the installation artifact of the latest Release:

npx @deepseek-ai/dsh plugin --profile web add https://github.com/MysaDC/dsh-plugin-description/releases/latest/download/dsh-plugin-description.tgz

The command above does not include a version number and points to the fixed-name installation artifact under releases/latest/download. Simply run the same command again for future upgrades.

If a specific version is needed, you can use the installation artifact for that version. Below is a version example from the documentation:

npx @deepseek-ai/dsh plugin --profile web add https://github.com/MysaDC/dsh-plugin-description/releases/download/v1.2.1/dsh-plugin-description-1.2.1.tgz

Install from Git

Install the latest code of the default branch:

npx @deepseek-ai/dsh plugin --profile web add github:MysaDC/dsh-plugin-description

Install a specific tag:

npx @deepseek-ai/dsh plugin --profile web add github:MysaDC/dsh-plugin-description#v1.2.1

Verify Installation

After installation, start the Web:

npx @deepseek-ai/dsh web

You can also check if plugin-description appears in the profile configuration:

npx @deepseek-ai/dsh web --dump-config | grep -n "plugin-description"

If plugin-description appears in the command output, and the cards in “Settings → Plugins → Plugin List” have descriptions, it indicates successful loading.

Upgrade and Uninstall

To upgrade to the latest Release installation artifact, you can run the installation command again:

npx @deepseek-ai/dsh plugin --profile web add https://github.com/MysaDC/dsh-plugin-description/releases/latest/download/dsh-plugin-description.tgz

Uninstall the plugin:

npx @deepseek-ai/dsh plugin --profile web remove dsh-plugin-description

Uninstalling will remove related dependencies and the bundle layer; the composite file will not be rewritten. Then restart:

npx @deepseek-ai/dsh web

Typical Usage

Edit Descriptions in the Page

  1. Open “Settings → Plugins → Plugin List”.
  2. Expand any plugin card and click “Edit Description”.
  3. Fill in the Chinese and English descriptions and click “Save”.

By default, all cards of plugins with the same name are updated together; if “Modify Only Current Card” is checked, only the current card is updated. Cards that have been customized will display a “Customized” badge. Clicking “Restore Default” in edit mode returns to the built-in description.

User-customized descriptions are saved to:

<DSH_HOME>/plugin-descriptions.json

This file is at the same level as settings.yaml. Upgrading or reinstalling the plugin will not lose custom descriptions. You can also directly modify this file with a text editor, and it will take effect after reopening the page.

Example structure:

{
  "modules": { "@your-scope/your-plugin": { "zh": "中文说明", "en": "English description" } },
  "entries": { "your-row-id": { "zh": "只改这一张卡片的说明" } }
}

The final priority of descriptions is:

User dictionary > Plugin runtime registration > Built-in special entries > Built-in dictionary

For security reasons, write operations in the page only accept requests from the local loopback address, subject to the same constraints as the DSH Settings API.

Let Other Plugins Register Their Own Descriptions

This plugin’s Host side publishes the pluginDescriptions service in the host composite. Host-side plugins within the same DSH process can read this service and register their own descriptions.

Example:

return {
  apply(ctx) {
    const descriptions = ctx.get('pluginDescriptions');
    if (descriptions === undefined) return;

    ctx.effect(() => descriptions.register([
      {
        moduleName: '@your-scope/your-plugin',
        zh: '你的插件的中文说明。',
        en: 'English description.'
      },
      {
        entryId: 'your-row-id',
        zh: '针对特定条目 id 的说明。'
      }
    ]))
  },
}

Key points for integration:

  • `register(entries)` accepts an array of `{ moduleName?, entryId?, zh, en? }`.
  • `register(entries)` returns a disposer, which can precisely revoke the entries registered in this call.
  • Put the registration logic inside ctx.effect to clean up with the plugin fiber lifecycle.
  • `resolve(moduleName, entryId)` queries the registry in the order of `entryId` → `moduleName`.
  • Other plugins must check for null/undefined when reading pluginDescriptions.
  • If you want it as a hard dependency, you can declare:
inject: ['pluginDescriptions']

In this case, Cordis will suspend the plugin before the service appears.

Applicable Scenarios and Notes

Suitable for the following scenarios:

  • Need to quickly understand the function of each plugin module on the DSH Web plugin list page.
  • Wish to configure different descriptions for multiple Loader entries of the same plugin.
  • Wish for other Host-side plugins to register their own descriptions via a unified service.
  • Wish to retain a persistable user description dictionary without losing custom content after upgrading plugins.

Notes before use:

  • A normally functioning DeepSeek Harness Web profile is required.
  • dsh plugin depends on pnpm.
  • It runs as a DSH composite plugin within the DSH process; it is recommended to check the source code, dependencies, and license according to your own security policy before installation.
  • This plugin only performs optional service reading and has no hard-injected dependencies. If a white screen occurs in the browser or startup fails, you can set the composite line to:
disabled: true

To exclude that composite line.

The built-in description dictionary is extracted from the first paragraph of the README of each official DeepSeek Harness package and has been manually verified; some entries have dedicated descriptions.

Links

The documentation does not provide a directory page address. The GitHub repository address is as follows:

https://github.com/MysaDC/dsh-plugin-description