Introduction

In DSH’s modular plugin approach, certain interface enhancement capabilities can be installed separately. dsh-message-navigator addresses the problem of “conversations being too long and it being inconvenient to return to a specific user input” in web chat interfaces: it provides a vertical message index on the right side of the interface, mapping each user input to a clickable marker. Clicking the marker allows for jumping, and the corresponding marker is highlighted in real-time during scrolling.

What is this

dsh-message-navigator is a Client-only DSH plugin maintained by TableRogue, licensed under MIT, with the copyright notice © 2026 TableRogue.

It targets the DeepSeek Harness web chat interface, adding a lightweight message index to the right edge:

  • Each user input corresponds to a marker;
  • Clicking a marker performs a smooth jump;
  • While scrolling, the highlighted marker corresponding to the current reading position is updated in real-time;
  • No markers are generated during AI streaming output;
  • It does not replace the existing interface; the UI is mounted on the shell.overlay layer.

Core Features

Click to Jump

After clicking a marker, scrollIntoView is used to smoothly center the target message. If the target is already near the viewport, the animation is skipped, and no lateral displacement occurs.

Scroll Synchronization

Scroll synchronization uses the viewport at 40% as the reading line and highlights the corresponding marker in real-time. The scrolling path uses pure arithmetic calculations, triggering no extra DOM queries or re-renders.

Hover Preview

When hovering over a marker, a tooltip card of uniform width is displayed:

  • Width is 240px;
  • Text is limited to 1-2 lines, with truncation for overflow.

Dynamic Synchronization

The index is automatically rebuilt after the following actions:

  • New messages enter;
  • Messages are deleted;
  • Loading historical messages;
  • Switching sessions.

AI streaming output does not generate markers; they only participate in the index after the corresponding message stabilizes.

Stable Identifiers

Markers correspond one-to-one with messages via data-chat-flow-key, which contains the messageId. Jumps and highlighting do not rely on DOM order indexing, making them more stable during message addition, deletion, or historical loading.

Performance and Responsiveness

  • It remains fluid even with hundreds of messages;
  • The tooltip is hidden when the window width is ≤1100px;
  • The entire navigation component is hidden when the window width is ≤880px.

Installation and Enabling

GitHub Installation

dsh plugin --profile web add github:TableRogue/dsh-message-navigator

Local Installation

If you have obtained the local directory, you can use the local installation command:

dsh plugin --profile web add ./dsh-message-navigator

Verify Configuration

After installation, you can view the current web profile configuration to confirm the plugin layer has appeared:

dsh --profile web --dump-config

The output should show:

# == dsh-message-navigator 层

Uninstall

dsh plugin --profile web remove dsh-message-navigator

Typical Usage

Start after Installation

After installation, start the web profile:

dsh --profile web

After entering the web chat interface, a vertical message navigation bar will appear on the right.

Click marker to Jump

Click any marker on the right navigation bar, and the corresponding message will be smoothly scrolled near the center of the viewport.

View Current Position while Scrolling

While scrolling up and down in the chat area, the highlighted marker on the navigation bar follows the current reading position, allowing you to quickly confirm which message you are near.

Temporary Method

The README also provides a temporary method for the dynamic plugin: Add the following content to the top comment of src/client.js, fill it into code.client of cordis_define, and then execute cordis_run. Refer to the top comment of that file for specific operations.

Applicable Scenarios and Notes

Suitable for the following scenarios:

  • Need to quickly return to a specific user input in a very long conversation;
  • Want to add a read-only navigation entry to the existing web chat interface;
  • Do not want to replace the original interface, only to perform lightweight enhancements;
  • When installing via a local link, want changes to take effect immediately after restarting.

Notes before use:

  • The plugin runs with the current dsh process permissions; check the source code and license before installing;
  • It relies on the product’s own stable anchors, such as data-conversation-scroll, data-chat-flow-key, data-chat-flow-kind, etc.;
  • After a product redesign, selectors may need to be updated synchronously;
  • This plugin uses these anchors in read-only mode and does not replace the existing interface;
  • The component is hidden under small windows according to rules; this is responsive behavior, not an installation failure.

Links

Community Directory Page:

https://www.skillhub.cn/plugins/TableRogue/dsh-message-navigator

GitHub Repository:

https://github.com/TableRogue/dsh-message-navigator