Introduction

The core design philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” Locating a specific question in a long session can be cumbersome, especially when there are interjections while running or when you need to switch tabs. The dsh-plugin-question-index plugin provides a question ruler track on the left edge of the main chat area; clicking a question automatically scrolls to it.

Core Features

  1. Question ruler track: Fixed to the left edge of the main chat area, with each user question represented by a short horizontal line. The track can scroll independently and does not overflow the page.
  2. Conversation tab only: Displayed only on the “Conversation” tab, and automatically hidden when switching to other tabs such as “Trajectory”.
  3. Original text overlay: When the mouse hovers over a line, the line smoothly extends and the full original question text is displayed on the right. The overlay can scroll independently for reading.
  4. Index list: Lists all questions in the current session in order (including “interjections” sent while running, with badges).
  5. Click to locate: After clicking a question, the session content smoothly scrolls to the line where the question is located (approximately one-quarter from the top of the viewport).
  6. Keyboard access: After focusing a line with Tab, a summary is displayed; Enter / Space locates the corresponding question.

Installation and Enabling

Use the official installation command to add the plugin:

dsh plugin --profile web add github:antlordGit/dsh-plugin-question-index

After installation, restart dsh web (or wait for the patch layer to hot reload).

Note: React does not need to be installed separately. The require("react") in the client bundle is provided by the DSH shell’s module table. The plugin only makes additive changes: it registers a list entry for shell.overlay and does not replace any product UI.

Typical Usage

  • Quick location: Click any question line on the left edge, and the chat content will automatically and smoothly scroll to that question.
  • View original text: Hover the mouse over a line; the line extends and the full original question text is displayed on the right, making it easier to quickly recall context in a long conversation.

Engineering Implementation Points

This plugin implements interactions through incremental slots and a lightweight DOM bridge:

  • UI mounting: Uses slots.inject('shell.overlay', …) to register a global overlay list entry, which is automatically cleaned up when the Fiber unmounts.
  • Overlay hosting: The root node is set to pointer-events:none, and only panels/buttons restore pointer-events:auto to preserve interactivity.
  • Data source: Uses the global standard props useSessions to obtain sessions.binding(id).session, with zero Host RPC and zero persistence.
  • Jump anchor: Leverages the data-chat-anchor-key attribute on the key of chat nodes, aligning with the product’s scroll restoration contract.
  • View switching: When clicking to locate a question, if the current view is not on the “Conversation” tab, it automatically clicks the first tab button in the header (order=0) to return to Conversation.
  • Styling: References --dsw-alias-* theme tokens (such as --dsw-alias-bg-overlay and --dsw-alias-brand-primary), supporting automatic light/dark theme adaptation.

Applicable Scenarios and Notes

This plugin is suitable for scenarios where you frequently need to review long conversation context and quickly locate specific questions.

Note: This plugin runs with the permissions of the current dsh process. Review the source code and license before installing.

Summary

By providing a lightweight question ruler on the left, this plugin solves the difficulty of locating content in long sessions. For more details, refer to the community directory or the GitHub repository.