Preamble

In the DeepSeek Harness (DSH) environment, models (such as deepseek-v4-flash) typically do not know which software is installed locally on the user’s machine, and they do not clearly understand how to invoke it. This plugin transforms a “local software inventory + invocation recipes” into a checkable, persistent section that is automatically injected into the system prompt.

Plugin Introduction

dsh-software-tools is a sidebar manager for maintaining a curated catalog of local software (including WSL CLI tools and Windows apps accessed via interop). The set of software selected by the user is injected into the model system prompt as a compact section, ensuring that every session knows which software exists on this machine and how to invoke it.

Core Features

  • Sidebar panel: Tools are grouped by category. Toggling takes effect in the model’s next request immediately, without a restart.
  • Built-in + user catalog merge: Provides a portable built-in catalog (aria2, proxy, playwright, uvx, interop, zstd, etc.). User entries in catalog.json override built-in items by ID.
  • System prompt injection: Checked tools become a compact section in every assembly (systemPrompt.section, order 200).
  • Bundled skill: Includes the add-software-tool skill. The model learns to write newly installed software into the user catalog without rebuild or restart.
  • Cyclic RPC: The panel and host communicate over a cyclic RPC channel; only local JSON is read.

Installation and Enablement

Install using the official command:

dsh plugin --profile web add dsh-software-tools

If dsh plugin add is blocked by the pnpm supply chain policy, install manually: copy the package to ~/.dsh/profiles/web/node_modules/ and append to ~/.dsh/profiles/web/cordis.patch.yml:

- insert:
    - id: dsh-software-tools
      name: dsh-software-tools
      config: {}
- insert:
    - id: software-tools-skill
      name: '@deepseek-ai/dsh-skill-filesystem'
      config:
        providerName: software-tools-skill
        includeDefaultRoots: false
        customSkillDirs:
          - !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('dsh-software-tools/package.json')), 'skills')

Restart dsh web and hard refresh (Ctrl+Shift+R). A 🔧 Software Tools entry appears in the sidebar.

Configuration and State

All settings are optional; the default is zero-configuration. The state directory is located at $DSH_HOME/software-tools.

State files:
* <settingsDir>/selection.json: {"ids": ["aria2", ...]} — the current selection.
* <settingsDir>/catalog.json: {"tools": [entry...]} — the user catalog; identical IDs override built-in items.

Entry fields:
* id: Unique identifier ([a-z0-9-]{1,32}).
* name: Display name.
* category: Downloads, Proxy, Media, Browser, Knowledge, Runtime, Model, Misc.
* desc: Description (≤40 characters).
* usage: 1–2 actionable, directly executable lines.

Typical Usage

  • Natural-language addition: Tell the model “add XXX to Software Tools”. The bundled add-software-tool skill researches the software and writes it to catalog.json (no rebuild or restart required; visible after refreshing the panel).
  • Manual editing: Edit catalog.json directly.
  • Execution: The model reads the usage field and runs the prepared command.

Technical Requirements

  • dsh engine: >=0.1.5-rc.1
  • Node.js: >=22

Summary

By exposing the local software environment to the model, this plugin bridges the gap in LLM local-environment awareness. It allows the model to access local tools without complex prompt engineering and turns system prompt maintenance into a simple checkbox process.