DeepSeek Harness Plugin

wf-ping/dsh-message-injector

Stars ★ 1 Category UI Enhancements Added 2026-08-30

Presets message-injection content combos and auto-injects them into every message.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:wf-ping/dsh-message-injector

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

中文:README.md

A dsh (DeepSeek Harness) plugin: preset common "message injection" content combinations (arbitrary text / skill invocations) and auto-inject them into every message at the first line of the input box. Enable, switch, and stop with one click — no more typing the same instruction prefix or format requirement into every message.

Features

  • Preset group management: create/read/update/delete, enable/disable, reorder groups, and collapse groups in Settings → Plugins → Plugin Config — with the same official card look
  • One-click select: the 「Preset」 selector at the bottom-left of the composer — click to select, click again to deselect
  • Settings shortcut: a 「Settings」 item at the bottom of the selector menu opens the settings panel and expands this plugin's config card
  • Auto-inject: an empty input box gets the content injected within ~500ms (e.g. /grill-me /domain-modeling or "Please answer in Chinese")
  • Skill validation: lines starting with / are treated as skill invocations — missing skills are warned in the config card and skipped when injecting
  • Smart guard: nothing is injected when the input box already has content — existing content is never touched
  • Global persistence: the selection survives page refreshes, dsh restarts, and browser tabs

Where the config lives

Preset groups and the selection are stored in the dsh global config file: $DSH_HOME/settings.yaml (default ~/.dsh/settings.yaml), under the message-injector namespace (groups + selected). Survives sessions, refreshes, and tabs; backup/migration = copy that file (or the message-injector: fragment). Manage it through the plugin UI — do not hand-edit the file (bypassing the UI may break format or validation).

Quick install

dsh plugin --profile web add github:wf-ping/dsh-message-injector        # install from GitHub (default = latest, tracks main)
dsh plugin --profile web add github:wf-ping/dsh-message-injector#v0.1.0  # pin a specific version (optional)
dsh plugin --profile web add <repo-path>             # local/development install

No build needed on first install (lib/ artifacts are committed). See Install.

Rebuild

After changing code, regenerate lib/ and restart:

pnpm install      # install the toolchain
pnpm build        # build artifacts
dsh web           # start the service

Update

Local path install (symlink) — update = change code + rebuild, no reinstall:

pnpm build        # regenerate lib/
# restart dsh web

GitHub install (clone) — the installed copy is unrelated to your local code; update by re-pulling:

dsh plugin --profile web add github:wf-ping/dsh-message-injector        # pull the latest version
# restart dsh web

If re-adding does not update, uninstall and reinstall first (see Uninstall).

Uninstall

dsh plugin --profile web remove dsh-message-injector    # uninstall
# or from inside the repo: pnpm uninstall:plugin

Docs

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.