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¶
- 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.
- Conversation tab only: Displayed only on the “Conversation” tab, and automatically hidden when switching to other tabs such as “Trajectory”.
- 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.
- Index list: Lists all questions in the current session in order (including “interjections” sent while running, with badges).
- 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).
- 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 forshell.overlayand 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 restorepointer-events:autoto preserve interactivity. - Data source: Uses the global standard props
useSessionsto obtainsessions.binding(id).session, with zero Host RPC and zero persistence. - Jump anchor: Leverages the
data-chat-anchor-keyattribute on thekeyof 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-overlayand--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.