会话与消息
#dsh-plugin
dsh-prompt-history-plugin
Prompt history navigation for DeepSeek Harness (dsh) web: browse previously submitted prompts in the conversation composer with the Up/Down arrow keys, shell-style.
hotpot-labs
@hotpot-labs
⬇ 1
★ 0
main
安装
dsh plugin --profile web add github:hotpot-labs/dsh-prompt-history-plugin
需要可复现安装时,可在仓库后追加 #commit 固定提交。
Prompt history navigation for DeepSeek Harness (dsh) web: browse previously submitted prompts in the conversation composer with the Up/Down arrow keys, shell-style.
该插件未提供要点说明,请参考仓库 README。
dsh-plugin
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/hotpot-labs/dsh-prompt-history-plugin |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 0 |
| 最近推送 | 2026-09-01 |
| 收录日期 | 2026-09-19 |
| 分类 | 会话与消息 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-prompt-history-plugin Prompt history navigation for [DeepSeek Harness (dsh)](https://github.com/deepseek-harness/deepseek-harness) web. In the conversation composer, press **↑ / ↓** to browse prompts you have submitted before and fill them back into the input — just like shell history. History is stored locally in your browser (`localStorage`) and shared across sessions.  [中文文档](README.zh.md) ## Installation ### From npm (recommended) ```sh dsh plugin --profile web add dsh-prompt-history-plugin ``` ### From GitHub ```sh dsh plugin --profile web add github:hotpot-labs/dsh-prompt-history-plugin ``` ## Usage 1. Open any conversation in dsh web. 2. With the composer **empty** — or with the **caret at the very beginning** — press **↑** to fill in your most recent prompt; keep pressing **↑** to walk further back, and **↓** to walk forward again. 3. With text in the composer, the first **↑** simply moves the caret to the beginning (default behavior); press **↑** again to enter history navigation. Your unfinished draft is stashed on entry. 4. Press **↓** past the newest entry to restore the stashed draft (or an empty composer) and leave history navigation. 5. While navigating, pressing any printable key, **Enter**, **Backspace** or **Escape** exits navigation mode (the key itself still works as usual). ## Features - **Shell-style history navigation**: ↑ for older, ↓ for newer, with readline-style stashing — your in-progress draft survives a round trip through history. - **Automatic recording**: every prompt actually accepted by the host is recorded — regardless of whether you submitted it with Enter or the send button. - **Cross-session persistence**: history lives in `localStorage` (key `dsh-prompt-history:v1`), capped at 100 entries, deduplicated with most-recent-use first. - **Zero conflicts**: navigation only starts from an empty draft or with the caret at the very beginning, so it never steals ↑/↓ from the `/` and `@` trigger menus or from normal caret movement in a multi-line draft. IME composition input is always left untouched. - **No UI chrome**: the plugin renders nothing visible; it only adds behavior to the existing composer. ## Development ### How it works The plugin is a pure web client bundle. Its client entry registers a component (rendering `null`) into the `conversation.composer.dock` slot, which grants access to the session-scoped standard props: - `useConversation` (newer cohorts) or `useSession` (0.1.1-rc.2, whose snapshot is the same `ConversationSnapshot`) — subscribed to diff newly appeared `user` nodes; their text blocks are extracted and pushed into the history store. Only submissions accepted by the host are recorded. - `useInput` — mirrors the current draft so the key handler can read it synchronously. - `inputActions.setDraft(text)` — writes a history entry back into the composer. A `document` keydown listener in the **capture phase** intercepts ↑/↓ before the host's own handlers whenever the focus is inside the composer (newer cohorts: the `[data-composer-input]` Lexical contenteditable; 0.1.1-rc.2: the native `` inside `[data-composer-card]`) and the navigation preconditions are met. ### Build and test ```sh npm install npm run build # host (tsc) + client (tsdown, lazy-CJS wrapper) npm run typecheck npm test npm pack --dry-run # verify the tarball only contains lib/ + patch + READMEs ``` Local install into a dsh profile: ```sh dsh plugin --profile web add ./dsh-prompt-history-plugin ``` ## FAQ **The first ↑ just moves my caret to the beginning — is that expected?** Yes. With text in the composer, ↑ keeps its default caret movement until the caret reaches the very beginning; the next ↑ enters history navigation. This keeps ↑/↓ from ever conflicting with caret movement or the `/` and `@` trigger menus. Your in-progress draft is stashed on entry and restored when you press ↓ past the newest entry. **Where is my history stored?** In your browser's `localStorage` under the key `dsh-prompt-history:v1`. Clearing site data removes it. Nothing is sent anywhere else. **Are slash commands recorded too?** Yes — any message that appears as a user node in the conversation is recorded, including messages starting with `/`.
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。