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.overlaylayer.
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
dshprocess 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: