Back to home@jhonden

my-dsh-plugins

Community plugins for the DeepSeek Harness (dsh): workspace file explorer for the Web UI (Files tab — tree, markdown preview, sandboxed reads)

Stars
0
Language
TypeScript
Created
Aug 15, 2026
Updated
Aug 17, 2026
GitHub repo

Introduction

my-dsh-plugins

English | 中文

Plugin collection for the DeepSeek Harness (dsh).

Each directory under plugins/ is one self-contained, independently installable plugin distribution — its own packages, its own bundle, no cross-plugin coupling. Zero upstream code changes; everything attaches through dsh extension points (Typert Remote services, slot registrations, profile bundles).

Plugins

PluginWhat it adds
web-filesA "Files" tab in the Web client's conversation view: a workspace file tree with a read-only viewer (markdown preview via the platform renderer) backed by a sandboxed Host Remote service
session-notifyPer-session completion alerts in the Web client: arm a session with a bell in the composer tool row (or a !notify message prefix); the sound is user-customizable (system sounds / custom file / volume) via hot-reloaded settings

web-files

Install

One command per plugin — each bundle carries its implementation packages as dependencies, and build outputs are committed, so no local clone or build is needed:

dsh plugin --profile web add "github:jhonden/my-dsh-plugins#main&path:plugins/<name>/bundle/<name>"

Two one-time preparations:

  1. pnpm v11 blocks git-hosted subdependencies — allow them once in the profile's pnpm-workspace.yaml (created on first dsh plugin use):

    blockExoticSubdeps: false
    
  2. On a slow link to codeload.github.com, widen pnpm's fetch timeout once:

    pnpm config set fetch-timeout 600000 --location=global
    

For web-files, copy the ready-to-run command from its README.

From a local checkout (plugin development)

pnpm install && pnpm build
dsh plugin --profile web add link:$(pwd)/plugins/<name>/bundle/<name> \
                                link:$(pwd)/plugins/<name>/packages/<pkg-a>

After editing source, rebuild and commit lib/ together with the change — GitHub installs carry what is in the tree.

Repository layout

plugins/<name>/          one plugin distribution
  packages/...           the plugin's npm packages (Host half, Client half, ...)
  bundle/<name>/         the installable profile bundle (cordis.patch.yml)
  docs/                  design notes
tsconfig.json            root solution: references every package
pnpm-workspace.yaml      plugins/*/packages/* + plugins/*/bundle/*

Development

pnpm install
pnpm build        # tsc project references + client browser bundles (tsdown)
pnpm test         # vitest across all plugins

Typert Remote descriptors (lib/typert.*.js) are committed: regenerating them requires the upstream generator, so consumers never do.

Compatibility

dsh is a developer preview (0.1.0-rc); these plugins pin the upstream packages they were built against and follow upstream releases deliberately.