DSH (DeepSeek Harness) follows the core philosophy that “everything is a plugin,” but in real development, developers often need to switch frequently between chat and a code workbench. all3ncn/dsh-better-sidebar-n23 is a DSH web plugin that provides a complete workbench environment and refactors the Shell interface to bring it closer to an IDE-like experience.
Plugin Introduction¶
This plugin is forked from omdsh-dev/DSH-better-sidebar and published independently under the @all3cn scope. It aims to build a client plugin for DSH users that combines file management, editing, previewing, terminals, Git operations, and task management in one place. As an open-source project, it is licensed under MIT.
Core Features¶
The plugin includes the following key capabilities:
- File Workbench: Provides a file explorer with lazy-loaded directory trees and symlink display based on target type; includes a built-in CodeMirror editor.
- Inline Preview: Supports direct inline preview of images, Markdown, HTML, PDF, and Office documents.
- Real Terminal: Based on xterm.js and node-pty, provides a real shell environment with replay after reconnection.
- Git Panel: Provides true diff display, VSCode-style diff tabs, history, and right-click actions such as stage, commit, and restore.
- Embedded Browser: Supports opening multiple web tabs with back, forward, and refresh functionality; content runs in a sandboxed iframe.
- Background Tasks Page: Displays subagent topology and background task status, with support for viewing exit codes, live output, and force termination.
- Dual Workspace Layout: Supports splitting and merging the right sidebar and bottom panel; tabs can be dragged to adjust panes.
- Shell Refactor: Uses a full-width 48px top bar, a VSCode-style activity rail, and a global control area to optimize the coexistence layout of chat and the workbench.
- Service-Oriented API: Exposes registration interfaces to all plugins via
ctx.betterSidebar, allowing third-party plugins to register sidebar pages and file previewers. - Session Isolation: Layouts, tabs, and panels are persisted per session and support following DSH language settings.
Installation and Activation¶
Before installing, make sure DSH is correctly installed and running (dsh web works normally).
dsh plugin --profile web add @all3ncn/dsh-better-sidebar-n23
During installation, the dsh.bundle.patch declared in the package (located in cordis.patch.yml) is automatically applied. The CLI bundle reconciliation mechanism adds it to the profile’s bundle stack, so there is no need to manually modify the profile file. If the profile still contains an old mount entry for dsh-better-sidebar (upstream or local fork), remove it first to avoid double mounting.
The uninstall command is:
dsh plugin --profile web remove @all3ncn/dsh-better-sidebar-n23
Typical Usage¶
As a plugin integration example, the client side of any DSH plugin can register a sidebar page through the following interface:
ctx.betterSidebar.registerTab({
id: "my-tab",
title: "My Tab",
render: ...
});
Register a file previewer:
ctx.betterSidebar.registerFileViewer({
pattern: "**/*.xyz",
render: ...
});
Use Cases and Cautions¶
This plugin is suitable for DSH users who need to complete coding, version control, terminal operations, and task management in a single interface.
Notes:
- Environment Requirements: Requires Node.js version 20 or higher.
- Version Verification: Verified against DSH
0.1.1-rc.2; the peer dependency is declared as@deepseek-ai/* >= 0.1.0-rc.6 < 0.2.0. - Build Status: Tests use the Node.js built-in test runner with zero dependencies. The current repository has an intentional split-track state:
srcis ahead on robustness fixes, whilelibis ahead on shell layout; at runtime,libis authoritative. - License: Please confirm the source code and license before use. The plugin runs with the permissions of the current DSH process.
Summary¶
all3ncn/dsh-better-sidebar-n23 significantly improves the usability of the DSH client by refactoring the Shell interface and providing a complete set of workbench features. It is not only a collection of features but also provides a standard interface for plugin extension through its service-oriented API.