Preface

When developing with DeepSeek Harness Web (hereinafter referred to as DSH Web), the session window is the protagonist. To glance at changes in a file, confirm which code hasn’t been committed, or run a build command, one usually has to switch back and forth between the session and other views, causing context to be repeatedly interrupted.

DSH’s philosophy is “everything is a plugin,” and such layout-level requirements can also be solved by plugins. dsh-workbench-layout does the following: it rearranges the official AppFrame into three columns—left navigation, middle files and terminal, right reserved for native sessions—allowing you to view files, check Git, and open terminals without losing the current conversation.

What is this

dsh-workbench-layout is a DSH Web plugin, npm package name @lsq64737/dsh-workbench-layout, current version 0.1.5, author lsq64737, license MIT, engines requirement Node >= 24.0.0, maintained by the lsq-dsh-plugins organization on GitHub, repository address see at the end of the text.

It does not replace the session itself: files, Git status, editor tabs, and terminals follow the selected Workspace; the official DSH session, task status, tools, and input area on the right remain unchanged.

The overall structure is three columns:

  • Left: Sessions, file browser, Git changes and commit graph, terminal list;
  • Middle: Multi-file tabbed editor;
  • Right: Official DSH session, task status, tools, and input area.

Core Features

Files and Editing

  • Lazy-loaded file tree browsing, supports creating, renaming, deleting files and folders, and copying workspace relative or absolute paths via context menu.
  • Color file tree and editor tabs based on Workspace Git status: untracked / deleted / conflicted in red, added in green, modified / renamed use warning colors.
  • Editor buffer comparison with Git HEAD, providing clickable change slot markers; clicking opens a local Unified Diff popup containing context, paired old/new line numbers, and character-level highlighting, allowing you to jump between changes one by one, or only undo the current block (undo applies to the draft, can still be undone again). The popup width is adjustable and remembers state across changes, files, and page refreshes.
  • Multi-file tabs; horizontal scrolling with the mouse wheel when tabs overflow.
  • Ctrl/Cmd+S to save. Uses DSH version tokens for writing, so externally modified files won’t be silently overwritten; while the page is visible, open files are checked for external changes approximately once every second in a batch, and dirty drafts offer a Reload / Keep Current choice.
  • Preserves the original line ending style (CRLF / LF / CR) of files upon saving to avoid false dirty markers caused by line ending normalization.
  • Markdown opens in the rendered Preview mode by default, switching to Source mode when editing.
  • References to files produced by DSH tools can be opened directly in the middle editor.

Git Workspace

  • Staged / unstaged changes are viewed as a list or directory tree, with explicit operations to stage, unstage, discard, and commit.
  • Working tree, staged, commit, and comparison diffs are opened in separate editor tabs, rendered using CodeMirror MergeView, supporting Side by side, Unified, and Inline modes, as well as folding unchanged regions and wrapping long lines.
  • Lane-style Commit Graph displays branches, merges, tags, authors, timestamps, and file statistics for local and remote refs; earlier commits are automatically loaded in pages of 40 items while scrolling. Commits can be expanded in place, with files arranged in a list or tree.
  • Creation, switching, renaming, and safe deletion of local branches; branches can be created from a selected ref or commit.
  • After configuring a remote, Fetch, fast-forward Pull, Push, Publish, and Sync can be executed.
  • Commit operations: Copy hash, Cherry-pick, Revert, Create branch, Compare with current Workspace.

Terminal

  • Interactive terminal based on xterm.js and node-pty, running in the root of the selected Workspace.
  • Multiple terminal sessions can be kept side-by-side with files and Diff tabs; terminal state is preserved when switching tabs.
  • Uses the host-configured shell: ComSpec for Windows, SHELL for Unix-like systems.

Layout

  • Use the official AppFrame divider to adjust the middle/right column width.
  • The middle editor can be collapsed from the sidebar footer; it automatically restores when a file, Diff, or terminal is selected.
  • When the session narrows, the input area, menu, and statistics adjust accordingly.

Installation and Enablement

Add the public package to the DSH Web profile:

dsh plugin --profile web add @lsq64737/dsh-workbench-layout

If DSH Web is running after installation, a restart is required.

Terminal functionality depends on the native node-pty package. If pnpm reports ERR_PNPM_IGNORED_BUILDS, run pnpm approve-builds in the DSH Web profile directory to approve node-pty, then re-execute the installation or restart DSH Web.

To update, run the same add command again. To uninstall:

dsh plugin --profile web remove @lsq64737/dsh-workbench-layout

Typical Usage

Following the process given in the README:

  1. Select a DSH Workspace.
  2. Switch between Sessions / Files / Git / Terminal using the sidebar mode.
  3. Select a file, Diff, commit file, or terminal to open in the middle column.
  4. Drag the middle/right divider to allocate space for editing and the session.
  5. Use the sidebar action in the bottom right to collapse or restore the middle column.

Applicable Scenarios and Notes

Suitable for those who primarily work inside DSH Web and want to view code, check Git status, and open terminals without leaving the session. If you are used to keeping the editor, terminal, and session in the same window, this layout saves you from switching between multiple windows.

Pay attention to the following points before use:

  • Git functionality requires the root of the selected Workspace to be a Git repository; remote operations use Git credentials configured on the machine running DSH, the plugin does not request or store remote credentials.
  • Pull and Sync are only fast-forward; Cherry-pick and Revert require a clean working tree, automatically aborting when Git reports a conflict.
  • Recursive folder deletion and destructive Git operations require confirmation; file and folder deletion is permanent.
  • Security design: path traversal and symbolic link access outside the Workspace are rejected; file creation is an atomic operation, saving uses version checks, and renaming does not replace existing entries; external refreshes compare versions via the official DSH file system batch, never automatically replacing unsaved drafts; Git commands use fixed arguments without passing through a shell, and Git operations disable terminal credential prompts.

Final reminder: The plugin runs with the permissions of the current dsh process and can access resources accessible to that process. It is recommended to check its source code and license (this project is MIT) before installation to ensure it meets your security requirements.

Summary

dsh-workbench-layout brings file editing, Git operations, and terminals into DSH Web’s three-column layout without affecting the official session and input flow, requiring only one command for both installation and uninstallation. Related links:

  • Directory page (community-maintained independent plugin directory, no official affiliation with DeepSeek / Hypothesis): https://www.skillhub.cn/plugins/lsq-dsh-plugins/dsh-workbench-layout
  • GitHub: https://github.com/lsq-dsh-plugins/dsh-workbench-layout