Skip to content
dsh.fish
Bundle

@deepseek-ai/dsh-client-ui-question-index

Question index surface: an ordered, collapsible list of the user's asked questions floating on the right side of the conversation, with click-to-jump into the flow

Source
lijinhao315
stars
1 stars
License
MIT
Updated
Updated 14 days ago

Readme

# 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

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

## Development

```bash
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](docs/architecture.md) for how the plugin wires into
the DSH shell (overlay seat, panel contribution, module-table externals).

## License

MIT

Install

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

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source