Preface

The DSH Web GUI is well-suited for long multi-turn conversations, but the longer the conversation, the higher the cost of looking back at a specific turn: user messages, model replies, and execution context keep accumulating. To confirm a previous question or its corresponding reply, you often have to scroll back and forth repeatedly.

Below, we introduce kiligzzz/dsh-session-nav. It is an in-session navigation plugin for the DSH Web GUI: each key corresponds to a user message, hovering previews that turn’s user message and model reply, and clicking jumps to the corresponding position.

What This Is

dsh-session-nav is a plugin maintained by kiligzzz, licensed under MIT, for individual sessions in the DeepSeek Harness Web GUI.

It is built on the DSH official two-sided plugin mechanism (host + browser half) and does not modify DSH source code. The plugin compresses one conversation turn into a navigation key: user messages occupy the keys, while model replies do not take up separate keys but are merged into the hover preview of the corresponding turn. This allows all user questions in a long session to be displayed centrally, reducing the need to scroll back and forth to find them.

Core Features

  • Provides multi-turn conversation navigation for a single session.
  • Each key anchors to a user message; model replies do not occupy separate keys but are merged into the preview of the corresponding turn.
  • Hover displays the user message as a single truncated line, and the model reply up to 3 lines.
  • The key corresponding to the currently viewed content is highlighted in real time as you scroll.
  • When clicking a target message: if the target message is already within the loaded window, it smoothly scrolls to it; if the target message is outside the window, it automatically calls the official pagination API to load history and scrolls it to the top of the viewport.
  • Navigation key data comes from the complete session log read on demand by the host side; long sessions can show all user questions on a single screen.
  • Deduplication by message UUID when merging with the real-time snapshot.
  • Supports dark and light theme adaptation.

Installation and Enablement

Environment requirement: Node.js >= 18.

To install from GitHub:

dsh plugin --profile web add github:kiligzzz/dsh-session-nav

After installing a new plugin, you need to restart the dsh web instance and then refresh the page.

For local development, you can use the link method:

dsh plugin --profile web add link:<this directory>

With this method, changes to lib/client.js take effect after refreshing the page; changes to the host-side index.js require reloading the plugin.

Typical Usage

Once enabled, you can see the navigation keys in a single session of the DSH Web GUI. Each key represents a user message, generated from the user messages in the session.

When hovering over a key, you can see a single-line summary of the user message and up to 3 lines of the corresponding model reply. Clicking any key jumps the page to the corresponding message; if the history has not been loaded, the plugin loads earlier content through the official pagination API until the target message is positioned at the top of the viewport.

For local debugging, you can use the diagnostic entry point provided in the documentation:

window.__dssnNavDebug__

It exposes entryCount, fullCount, and stats, which are convenient for inspection via CDP.

Common commands for local development:

pnpm install
pnpm test
pnpm lint
pnpm format

Applicable Scenarios and Notes

It is suitable for handling long multi-turn sessions in the DSH Web GUI where you need to quickly look back at user questions and corresponding model replies, such as debugging agent execution traces, reviewing multi-turn context, or locating the reply to a specific question.

Notes:

  • The plugin runs with the permissions of the current dsh process. You should review the source code and license before installing.
  • The plugin declares dependencies including @deepseek-ai/dsh-client-runtime, @deepseek-ai/dsh-client-ui-slots, react, react-dom, and cordis.
  • After installing a new plugin, you need to restart the dsh web instance; when only changing lib/client.js, refreshing the page is sufficient, but changing index.js requires reloading the plugin.
  • The repository declares an MIT license, and the environment requirement is Node.js >= 18.

Conclusion

dsh-session-nav solves the problem of “finding a specific conversation turn” within a single session: it maps user messages to navigation keys, merges model replies into previews, and chains together history loading and positioning.

Repository URL:

https://github.com/kiligzzz/dsh-session-nav