Introduction

DeepSeek Harness (DSH) uses a plugin-based architecture, allowing developers to enhance the client experience through extensions. In the Web UI conversation interface, as the number of messages grows, manually scrolling to locate a specific question becomes inefficient. The dsh_chat_index plugin is designed to address this navigation pain point by providing a visual index tool along the right edge of the conversation area.

Core Features

The plugin displays a column of small dots along the right edge of the conversation area, where each dot represents a question sent by the user.

  • Dot Index: The dots are evenly spaced, compact, and vertically centered. If there are too many questions to fit within the display height, the spacing is compressed automatically.
  • Hover Tooltip: Hovering the mouse over a dot displays a compact hint card showing the index number and the first 100 characters of the question body.
  • Smooth Jump: Clicking a dot smoothly scrolls the view to the corresponding message bubble, which is briefly highlighted.
  • Current Viewport Highlight: The dot at the current reading position is highlighted in the brand color.
  • No History Expansion: The index is based only on DSH’s default 50-message window and does not forcibly expand collapsed history.
  • On-Demand Paging: For older messages outside the window, they are loaded on demand when clicked and moved to the relevant position.
  • Zero Build: The Node side uses ESM, the browser side uses hand-written scripts, and there is no build step.
  • No State Intervention: It does not interfere with the collapsed/expanded state of the thinking process, tool calls, or terminal output.

Installation and Activation

Prerequisites

  • DeepSeek Harness (DSH) version 0.1.1-rc.x or higher
  • Node.js >= 18

Installation Steps

Run the following command in the terminal to install the plugin:

dsh plugin --profile web add github:Barry-Liu-001/dsh_chat_index

After installation, restart DSH Web (run dsh web or reopen the application session). The dot index will appear on the right side of the conversation area (visible when there are at least two user messages).

Principle Overview

The plugin injects a Node-side entry into the Loader tree via cordis.patch.yml, registering the exact route /chat-index.questions. On the browser side, the DOM data-chat-flow-key attribute maps each dot to a message bubble one-to-one.

  • Data Fetching: Requests are sent to this route. On the Node side, ctx.sessionQuery.readSession reads the session log, filters events with source.kind === 'user', and returns a list of {seq, time, id, text}. Results are cached on the Node side with a TTL of less than 10 seconds.
  • Client-Side Rendering: No runtime dependencies; all dependencies are specified as peerDependencies, and it does not interfere with DSH’s native collapse/expand logic.

Uninstall

To remove the plugin, run:

dsh plugin --profile web remove dsh-chat-index