Preface

When handling multi-task switching in the DeepSeek Harness (DSH) Web interface, sidebar management or quick access to commonly used tools may not be intuitive enough. The dsh-bookmarks-dock plugin solves this issue by adding an expandable toolbar on the left side of the interface. It does not modify the original layout structure; when expanded, it shifts the content to the right to accommodate the bookmark column, preventing the main view from being obscured.

Core Features

Left-side bookmark toolbar
A fixed floating “★” button occupies no layout space when collapsed. Click it to expand a 52px-wide bookmark column for displaying frequently used URLs.

Content shifts right without obscuring
When expanded, margin-left is added to the DSH three-column shell. The middle column automatically narrows via the framework’s ResizeObserver, without triggering a horizontal scrollbar or covering the original content.

Real favicon auto resolution
The host side (Node process) fetches the site’s homepage HTML, extracts the icon in the order a real browser would load it, converts it to base64, and caches the result in localStorage.

Bookmark persistence
Bookmark data is stored in the browser’s localStorage and is retained across page refreshes and restarts.

Convenient add/delete
Use the bottom “+” to add a URL (name optional; https:// is auto-completed); hover over a bookmark to reveal “×” for deletion.

Preset common sites
On first use, Baidu, GitHub, and Zhihu are preconfigured; users can delete them and customize as needed.

Installation and Activation

Environment requirements: Node 18+, with @deepseek-ai/dsh installed.

The installation command is as follows:

dsh plugin --profile web add ./dsh-bookmarks-dock

After installation, restart the web service so the client plugin registry takes effect:

dsh web --port 3080

Typical Usage

  1. After starting dsh web, a floating “★” button appears on the far left of the interface.
  2. Click ★ to expand the bookmark column; the page content automatically shifts to the right and is not obscured.
  3. Click a bookmark icon → the corresponding URL opens in a new tab.
  4. Use the bottom “+” to add a URL; hover over a bookmark and click “×” to delete it.
  5. Click “«” or click a blank area to collapse; the layout is restored.

Implementation Notes

Two-part plugin
The host part exposes the favicon resolution route via webServer.register({ kind: "prefix", path: "/dsh-bookmarks-dock" }), using Node’s global fetch + Buffer to fetch and validate magic bytes before base64 encoding.

Client injection
The client payload is loaded using the window.__ModuleLoader__.load({ id, factory }) format; require("react") resolves through the platform seed table. The UI is mounted via ctx.slots.inject("shell.overlay", ...).

Persistence mechanism
The client plugin is declared with dsh.client and is persistently loaded via the insert entry in cordis.patch.yml (survives restarts); unlike in-process cordis_define dynamic plugins.

Applicable Scenarios

This plugin is suitable for developers who need to quickly switch between frequently used development tools or reference sites in the DSH interface. The plugin runs with the permissions of the current dsh process; check the source code and license before installation.

Summary

dsh-bookmarks-dock provides DSH users with a practical left-side bookmark management solution through concise floating interactions and automatic layout adjustments. Project address: https://github.com/songying2024/dsh-bookmarks-dock