dsh-client-ui-question-history
by dhj-l
DeepSeek Harness Web GUI 的右缘悬浮提问历史面板:按对话顺序列出当前会话的用户提问,点击即跳转转录到对应位置
Floating right-edge question-history panel for the DeepSeek Harness web GUI: it lists the current session's user questions in conversation order and jumps the transcript to the…
安装
dsh plugin --profile web add github:dhj-l/dsh-client-ui-question-historyGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
目录
Floating right-edge question-history panel for the DeepSeek Harness web GUI: it lists the current session's user questions in conversation order and jumps the transcript to the clicked question. The browser half registers the panel into the frame's shell.overlay seat, vertically centered at the conversation column's right edge, capped at twelve visible rows (the remainder scrolls inside the panel), and hidden entirely when the current session has no user questions.
How it works
The overlay seat is root-scoped and receives no useSession, so the plugin's apply closure mirrors the current session's conversation snapshot into a registrant-private store and exposes it through the inject hooks compartment — the component reads it through the framework-bound useCurrentSession selector hook and contains no subscription machinery. The mirror follows sessions.list.current, resubscribing to the staged session's snapshot store on every selection change.
selectQuestions derives the list purely from the snapshot: the Chat node index's ordered keys, user and steering kinds only, visible nodes only, text blocks concatenated with whitespace normalized, and images collapsed to a localized marker. Clicking a row calls scrollToQuestion, which centers the target row in the active transcript's scrollport using the chat view's own scroll-restore vocabulary ([data-conversation-scroll] and [data-chat-anchor-key]).
The browser half is a lazy-CJS factory handoff: the GUI serves lib/client.js at /plugins/dsh-client-ui-question-history/client.js, and the script registers the factory through window.__ModuleLoader__.load. The factory requires only react and @deepseek-ai/dsh-client-runtime/client (the snapshot-store exemption) from the module table; everything else is type-only. npm run build reproduces the bundle with esbuild; lib/ is committed so a checkout can be dropped into the GUI without a build step.
Installation
The GUI loads client plugins from packages with a dsh.client declaration that its Loader can resolve, composed by a profile patch. For a dsh web profile at $DSH_HOME/profiles:
Copy this package into the profile's dependency mirror so the Loader resolves the row name:
cp -r lib package.json README.md "$DSH_HOME/profiles/node_modules/dsh-client-ui-question-history/"Add the row to the profile's patch (
$DSH_HOME/profiles/web/cordis.patch.yml):- insert: - id: ui-question-history name: 'dsh-client-ui-question-history'Restart the web GUI.
Removing the patch row removes the panel.
Model Experience
Question-history panel
What the model sees
Nothing. This plugin adds no tool schema, no prompt section, and no model-visible input: the panel registers into the shell.overlay seat and its selectQuestions derivation is client-side presentation over the session log, so replay reconstructs the same list.
Token effect
None: nothing is added to any model request.
KV Cache effect
None: no prompt-prefix or request-prefix content changes with this package's mount.
Development
npm install
npm run build # esbuild → lib/client.js + lib/index.js
npm test # vitest (pure derivation + transcript-jump specs)
npm run typecheck
Known Limitations and Deferred Work
- The transcript jump couples to the chat view's scrollport vocabulary. The panel drives
[data-conversation-scroll]and[data-chat-anchor-key]directly — the chat view's own restore mechanism — so a future chat-view refactor must keep those attributes or the click stops scrolling. - Only in-window questions are listed. The derivation reads the loaded conversation snapshot, so questions outside the current history window appear only after older history is paged in.
- The panel is either fully visible or hidden. There is no collapse toggle; a session without user questions hides the panel entirely.
- The apply-side wiring is not covered by the standalone tests. The pure derivation and jump helpers are tested here; the registration/mirror behavior is exercised by the DeepSeek Harness repository's own test runtime.
License
MIT
原始 README: https://github.com/dhj-l/dsh-client-ui-question-history/blob/master/README.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。