dsh-config
开发工具 活跃维护

dsh-config

ggggggggggz/dsh-config

独立于对应前端框架的TUI插件管理工具,支持插件的安装、卸载、切换操作,也可注册本地插件,无需依赖前端即可独立完成插件全流程管理。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
JavaScript
主要语言
NOASSERTION
开源协议
25 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:ggggggggggz/dsh-config
git clone https://github.com/ggggggggggz/dsh-config.git
git clone git@github.com:ggggggggggz/dsh-config.git
README.md master
# dsh-config **English** · [中文](https://github.com/ggggggggggz/dsh-config/blob/master/README.zh-CN.md) A standalone, front-end-independent TUI to manage DeepSeek Harness plugins — install, remove, enable/disable, and register **local** plugins.

A standalone DeepSeek Harness (dsh) plugin manager driven by arrow keys. Browse a profile's installed plugins, install / remove / toggle them, and register local plugins (including scanning a directory full of local plugins).

Fully independent of any dsh front-end (web or tui) — it only reads profile files.

Language
Node
License

Install

# Install globally from source (zero dependency, ready to use)
git clone <your repo url>
cd dsh-config
npm link                 # provides a global `dsh-config` command

Zero runtime dependencies: it uses only Node built-ins plus the system pnpm (must be installed and on PATH).

Usage

dsh-config                 # manage the default profile (web)
dsh-config --profile xxx   # manage a specific profile

Keymap

Key Action
/ Move the highlighted selection
i Install a new plugin from a registry (type the package name, press Enter; supports @user/pkg, github:user/repo)
l Register a local plugin (enter a path, it scans then asks you to confirm; supports a folder with many plugins)
r Remove a plugin (asks for confirmation first, press y)
/ e / d Toggle / enable / disable
q / Ctrl+C Quit

Registering a local plugin (l)

Local plugins usually live under a profile's plugins/ directory (each plugin is a subfolder). Press l and enter a path:

  • A single plugin folder (e.g. C:\...\plugins\dsh-reload) → it scans the plugin's name / dsh.bundle info → press y to register.
  • A container folder (e.g. C:\...\plugins) → it lists all sub-plugins, / to pick, Enter to register, n to cancel.

Registering runs pnpm add <dir> and writes the plugin's name into the profile's bundles. This solves the pain of manually registering plugins cloned from GitHub that don't declare dsh.bundle.

How it works (quick model)

Plugin state is decided by two files, both under the profile directory (default ~/.dsh/profiles/<profile>/):

  1. package.jsondsh.profile.bundles: the registration list (ordered plugin layers). On the list = registered, enabled by default.
  2. cordis.patch.yml# dsh-plugin-manager state: {...} disabled array: records only disabled plugins. There is no separate "enabled" list.
in bundles AND NOT in disabled  =>  enabled
in bundles AND     in disabled  =>  disabled
NOT in bundles                  =>  not registered

Self-managed

  • install / remove / local registration are handled by this tool itself (it rewrites package.json bundles + dependencies), using pnpm only to actually fetch/remove packages. As a result remove reliably cleans the bundles list (avoiding issues left behind by some third-party tools).
  • Zero runtime dependencies and a single index.mjs entry point.

License & Acknowledgements

MIT License (see LICENSE).

The mechanics (bundles registration + cordis.patch.yml disabled set) are the public dsh ecosystem protocol (defined by DeepSeek Harness). This tool's handling of that state file was informed by
@osskn4w7/dsh-plugin-manager (MIT); no code is copied from it. Thanks to its authors; the original keeps its own copyright and MIT license.


Other languages: 中文