Foreword

DeepSeek Harness (DSH) adopts an “everything is a plugin” architecture: capabilities are mounted via plugins, and the interface and toolchain are also assembled through plugins. For developers who commonly run agents on the web interface, the typical approach involves searching for and installing plugins one by one—such as dsh-at-file, the right sidebar, task board, skins, and so on—then manually handling dependencies and mount order. This process is cumbersome, prone to version inconsistencies, and lacks cross-cutting capabilities like account balance, Checkpoints, and global instructions.

Below, we introduce lilwhich/dsh-plugin-gather (npm package name my_better-dsh, currently v0.9.6, MIT License). It bundles a curated set of plugins with 7 self-developed enhancements into a single bundle, which can be mounted with a single installation command. This is aimed at scenarios where users want to quickly get DSH Web up and running without manually selecting plugins one by one. The maintainer is lilwhich; the SkillHub directory page classifies it as a “networking tool,” and it has 10 GitHub stars.

What This Is

dsh-plugin-gather is a DSH Web plugin aggregation package. After full installation, it effectively adds the following on top of the native DSH Web:

  • 7 built-in capabilities in this package: VSCode-style left sidebar, account status bar, delete confirmation (safe mode), context handoff, Checkpoint snapshots, Diff Review, global settings (editing ~/.dsh/AGENTS.md).
  • 6 curated plugins bundled as dependencies: dsh-at-file (file references via @), dsh-better-sidebar (right sidebar), and from dsh-web-ui: selected right panel, task board, live stats, comprehensive settings page, and skin center (10 themes).

The UI supports both Chinese and English, switching based on system language. This package does not include niche plugins like pets, mobile remote, Git graph, SSH ops, etc.; these can be added manually via dsh plugin --profile web add <package-name> if needed.

Core Features

Account Status and Runtime Statistics

Below the input box, there are two status lines. The first line displays DSH’s official runtime statistics: rounds/steps, LLM time, tool call time, average first token, TPS, cache hits, input/output tokens. The second line displays account information for this package:

  • API Balance (¥): Data comes from api.deepseek.com/user/balance, called on the host side using DEEPSEEK_API_KEY; the key never leaves the host.
  • Consumed This Session: The balance difference.
  • Current Time Period (Peak/Idle) and Countdown to Next Switch: Peak pricing rules: peak hours are 9:00–12:00 and 14:00–18:00 Beijing time; idle hours are the rest (idle at half price; as noted in the README, effective from 2026-08-17).
  • Current Conversation Remaining Context Window (e.g., 剩 384K/1M): Color changes based on remaining proportion.

The balance refreshes every 60 seconds. The remaining context window also floats above the input box at specific times.

VSCode-Style Left Sidebar and Conversation Outline

The left sidebar is divided into three sections: “Files / Sessions / Outline”:

  • Files: Lazily loads the current workspace file tree; clicking a file opens it in the right sidebar.
  • Sessions: Preserves the original session list with running/completed states, supporting actions like pinning, copying paths, and deletion.
  • Outline: Scans the user messages of the current session to generate a navigation directory; clicking a node scrolls and highlights it; scrolling through the chat automatically marks the current reading segment; a search bar at the top filters nodes.

Checkpoint Snapshots

Each time an Agent starts running and prepares to modify project files, it automatically creates a Checkpoint. The right sidebar has a CHECKPOINTS tab where you can view the snapshot list, changed files, and diffs; recovery requires two confirmations.

  • Git Projects: Uses git add -A + commit for snapshots, git show for diffs, and git reset --hard <commit> for recovery. Skipped if the workspace has no changes.
  • Non-Git Projects: Does not initialize Git; files are copied to ~/.dsh/checkpoints/ (excluding node_modules, .git, dist, build, etc.), with diffs between snapshots using git diff --no-index. Recovery overwrites files from the snapshot but does not delete files added after the snapshot (noted in the README as a known limitation).

Snapshot indices are stored in ~/.dsh/checkpoints/<workspace-hash>/index.json.

Diff Review

The Diff Review tab in the right sidebar captures the original state before an Agent modifies files via tools like read/write/edit/str_replace_editor, then computes line-level LCS diffs and displays them in real-time after execution. It retains the latest 6 records, with the client polling /my-better-dsh/api/diff-review every 1.5 seconds. The panel automatically opens the first time a change occurs in each workspace.

Safe Mode (Delete Confirmation)

The default mode is full-access-except-delete: read, create, modify, terminal, network, Git, and other operations are automatically allowed; only when deleting files/directories is the tool suspended and a confirmation dialog popped up. The recognition range covers common shell delete commands (rm, del, Remove-Item, etc.) and avoids false positives on git rm, npm rm, etc. The mode can be switched to full-access via GET/POST /my-better-dsh/api/security/mode, with state persistence. There is a “Confirm on delete” toggle at the bottom of the left sidebar.

Context Handoff

The “Context Handoff” button at the bottom of the left sidebar: after confirmation, it reuses DSH’s own Agent/LLM Runtime (without adding external APIs) to create a temporary analysis session in the background, performs local preprocessing and summarization of the current conversation, generates a Context Handoff, then creates a new conversation and injects the compressed context. The original conversation remains unchanged; retries are possible if it fails. The UI shows a token estimate after preprocessing.

Global Settings

Edit the user-level instruction file ~/.dsh/AGENTS.md (similar to Claude Code’s CLAUDE.md), with rules applying to all sessions; the AGENTS.md / CLAUDE.md in the project directory takes higher priority. Editing is possible via the “Global” button at the bottom of the left sidebar or the “Global Settings” tab in the right sidebar, supporting Markdown editing, atomic saves, template restoration, and local caching of unsaved content.

Bundled Curated Plugins

Plugin Function Version (package.json)
dsh-at-file Search and reference workspace files/directories via @ in the input box v0.6.0
dsh-better-sidebar VSCode-style right sidebar (Explorer / Editor / Terminal / Git, etc.) ^0.12.2
@linxin666/dsh-client-ui-aionui-panel Right panel: File tree / Preview / Git changes ^0.1.16
@linxin666/dsh-client-ui-task-board Task board: Multi-column + cron scheduling ^0.1.16
@linxin666/dsh-live-stats Live throughput / Token statistics ^0.1.16
@linxin666/dsh-client-ui-web-ui-settings Comprehensive settings page ^0.1.16
@linxin666/dsh-skins + dsh-client-ui-skin-center Skin center (10 themes) ^0.1.16

Installation and Enabling

The full installation command provided by SkillHub and the GitHub README is as follows. Before installing, it’s recommended to browse the repository source code and confirm the MIT license; plugins run with the permissions of the current DSH process, so installation grants them those capabilities.

dsh plugin --profile web add https://github.com/lilwhich/dsh-plugin-gather --config.block-exotic-subdeps=false --config.strict-dep-builds=false --config.minimum-release-age=0 --config.auto-install-peers=false

If you only need some plugins, you can install them individually, for example:

dsh plugin --profile web add dsh-better-sidebar --config.strict-dep-builds=false --config.minimum-release-age=0 --config.auto-install-peers=false
dsh plugin --profile web add dsh-at-file --config.strict-dep-builds=false --config.minimum-release-age=0 --config.auto-install-peers=false

Note: The 7 built-in capabilities in this package (account status bar, Checkpoints, global settings, Diff Review, conversation outline, left sidebar files/sessions, safe mode, etc.) are only provided with a full installation; installing the above plugins individually will not include them.

After completing these steps, restart dsh web and hard-refresh the browser (Ctrl+Shift+R) for the new interface and API routes to take effect.

Typical Use Cases

1. Daily Development: Sidebar + Snapshots + Diff

After full installation, use the left sidebar to browse workspace files and the right sidebar to view Git changes and file previews. The Agent automatically creates a Checkpoint before modifying code; during changes, open Diff Review to examine line-level diffs. If changes are mistaken, restore via CHECKPOINTS with two confirmations.

2. Long Conversation Continuation: Context Handoff

When the conversation context approaches the limit or history is too long, click “Context Handoff” in the left sidebar. After confirmation, wait for preprocessing and analysis to complete; the system will open a new conversation and inject the Handoff summary, leaving the original conversation untouched. The status bar will display a “Migrated from previous conversation” marker.

3. Cross-Project Unified Rules: Global Settings

In “Global Settings,” edit ~/.dsh/AGENTS.md to write coding standards, response styles, or tool usage constraints that apply to all sessions. After saving, new sessions take effect immediately, and the current session refreshes automatically on the next round.

4. File References: @ Paths

The bundled package includes dsh-at-file. Type @ in the input box to search and reference workspace files or directories, reducing manual path pasting.

5. Pre-Deletion Confirmation

Keep the default “Confirm on delete” enabled. When the Agent performs a delete operation, the confirmation dialog lists the paths and batch count; if refused, the tool returns “The user refused the deletion operation,” and the task does not interrupt.

Applicable Scenarios and Notes

Who It’s For

  • Developers new to DSH Web who want a relatively complete interface and toolchain with a single command.
  • Daily agent users who need account balance/peak-idle period awareness, Checkpoint rollbacks, and long conversation handoffs.
  • Users who don’t want to manually select and maintain multiple UI plugin versions.

Important Notes

  • Plugins run with DSH process permissions; full installation pulls multiple npm dependencies and GitHub tarballs. Before installation, check the source code and license (MIT).
  • Checkpoint recovery in non-git projects does not delete files added after the snapshot; this limitation should be understood before use.
  • The account balance API depends on the host configuration DEEPSEEK_API_KEY; related displays may be unavailable if not configured.
  • SkillHub (https://www.skillhub.cn) is a community plugin directory with no official affiliation with DeepSeek / High-Flyer; versions and stars are based on current page information (currently 10 GitHub stars, v0.9.6).

Conclusion

dsh-plugin-gather consolidates commonly used DSH Web interface plugins and cross-cutting capabilities like accounts, snapshots, handoffs, and global instructions into a single installation command, reducing the cost of mounting them individually and aligning versions. If you are setting up a DSH Web daily environment, consider installing it fully first, then adding other plugins as needed.

  • SkillHub Directory Page: https://www.skillhub.cn/plugins/lilwhich/dsh-plugin-gather
  • GitHub Repository: https://github.com/lilwhich/dsh-plugin-gather