Back to home@lijinhao315

dsh-question-index

No description

Stars
0
Language
TypeScript
Created
Aug 23, 2026
Updated
Aug 23, 2026
GitHub repo

Introduction

dsh-question-index

DSH Web 客户端插件:提问索引(Question Index)。在会话右侧悬浮展示「用户提过的问题」的按序列表,可收起;点击某条问题即可把会话滚动跳转到对应的提问位置。

A DSH client plugin that floats an ordered, collapsible list of the user's asked questions on the right side of the conversation, with click-to-jump into the flow.

What it does

  • A shell.overlay entry (root scope, floating layer) declares the session-level seat question-index.panel.
  • The panel reads the current session's chat snapshot, walks nodes in chat.order order, keeps only user / steering question nodes, extracts their text blocks ({ type: 'text' } content) and renders an ordered list.
  • Clicking an item scrolls the conversation to that question via data-chat-anchor-key inside [data-conversation-scroll] (same anchor logic as ChatView).
  • The panel collapses to a slim right-edge strip and expands again; the collapse state persists across session switches.

Features

  • Ordered question list (numbered from 1) for the active session
  • Click-to-jump into the conversation flow
  • Collapsible floating panel anchored to the right of the conversation
  • Collapse state preserved across session switches
  • Empty state: "No questions yet" when the session has no user questions
  • Localized (English / Simplified Chinese)

Install

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

Development

npm install
npm run build   # tsc -p tsconfig.json && tsdown

Outputs lib/index.js (node half), lib/invariant.js, lib/client.js (browser half).

Known limitations

  • Older paginated messages (hasMore / loadOlder) that are not in the loaded chat snapshot won't appear in the index.
  • Click-to-jump requires the target row to be rendered (data-chat-anchor-key present in the DOM); unrendered rows are skipped.
  • Long entries render as a single truncated line; the full text is always visible in the conversation body.

Architecture

See docs/architecture.md for how the plugin wires into the DSH shell (overlay seat, panel contribution, module-table externals).

License

MIT