dsh-question-index
English | 中文
A question index sidebar plugin for DeepSeek Harness (dsh web GUI): adds a "Questions · N" button to the current session's header that opens a floating panel listing every user question in order (number, preview, time). Clicking an entry smooth-scrolls the chat to that user message and briefly highlights it.
Features
- Counts only user messages of the current session (including mid-turn steering messages, marked with a "steering" tag), numbered in order
- Panel header shows the total; each row is a single line: number + preview + time, with the full question in a hover tooltip
- Image/attachment messages render as "[image · filename]" instead of an opaque placeholder
- Built-in search box filters questions live (original numbering kept); Enter jumps to the first match
- Click to jump, with a flash highlight; targets outside the loaded window trigger history paging automatically
- While the panel is open, scrolling the chat highlights the question currently in view
- The card is anchored right below the "Questions" button (right edges aligned) and follows window resizes
- New messages appear live; the list keeps following when parked at the bottom
- Switching sessions switches the list automatically (the entry is session-scoped)
- Never mutates conversation content; collapse via the header button, ✕, or Esc
- Chinese/English UI follows the GUI language
Install
dsh plugin --profile web add /Users/zzy/code/deepseek-harsees/test/dsh-question-index
Then restart DeepSeek Harness Desktop (or reload the GUI page).
Uninstall
dsh plugin --profile web remove dsh-question-index
Notes
- Mount point: the session-scoped list slot
conversation.session.header.utilities; the panel itself is portaled to document.body (fixed position).
- Data: the
nodes array of the useSession snapshot, filtered to kind === "user" | "steering".
- Jump: chat rows carry
data-chat-anchor-key="<node key>" inside [data-conversation-scroll]; older pages load via ctx.sessions.binding(sessionId).session.loadOlder().
- Known limit:
data-chat-anchor-key is an internal DOM contract of ui-conversation; if a future version renames it, jumps degrade to an in-panel notice while the list keeps working.