설치
npm link # provides a global `dsh-config` command이 명령은 GitHub 저장소 주소에서 생성됩니다. 실행 전에 업스트림 README와 소스를 검토하고 재현성이 필요하면 release 또는 commit을 고정하세요.
README
유지 관리자가 작성한 문서 스냅샷입니다.
최근 디렉터리 동기화에서 이 README 스냅샷을 새로 고치지 못했습니다.
dsh-config
English · 中文
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.
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.bundleinfo → pressyto register. - A container folder (e.g.
C:\...\plugins) → it lists all sub-plugins,↑/↓to pick, Enter to register,nto 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>/):
package.json→dsh.profile.bundles: the registration list (ordered plugin layers). On the list = registered, enabled by default.cordis.patch.yml→# dsh-plugin-manager state: {...}disabledarray: 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 rewritespackage.jsonbundles + dependencies), usingpnpmonly to actually fetch/remove packages. As a resultremovereliably cleans thebundleslist (avoiding issues left behind by some third-party tools).- Zero runtime dependencies and a single
index.mjsentry 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: 中文
저장소 정보
- 언어
- JavaScript
- 라이선스
- NOASSERTION
- 마지막 업데이트
- 2026. 8. 18. AM 7:25
신중하게 설치하기
소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.