dsh-chat-history
Manifest validCLI-style chat history recall for the DSH input box: press ArrowUp/ArrowDown to recall previously sent messages.
dsh-chat-history
给 DeepSeek Harness (DSH) 聊天输入框加上 CLI 风格的历史记忆:在输入框里按 ↑ 召回上一条发过的内容、按 ↓ 前进或还原草稿,就像在 shell 里翻历史命令一样。
纯客户端插件(无宿主副作用),装上之后重启不丢。
使用示意

插件本身没有可见按钮(组件只挂副作用、返回
null),所以这是一张「使用示意」图:左侧正常输入发送,右侧光标停在行首按↑逐条召回历史、按↓前进或还原草稿。
✨ 特性
- 上下键历史召回 ——
↑回到更早的消息,↓回到更新的消息,翻到最新再按↓还原你正在编辑的草稿 - 启动即预填 —— 打开会话时自动把当前会话里你之前发过的消息载入历史,马上就能翻
- 新消息自动记入 —— 发送后自动追加到历史,连续重复去重、上限 200 条
- 不打扰输入 —— 光标不在行首时不抢
↑/↓(不影响编辑中文本);输入法合成、斜杠命令菜单里也不触发 - 纯内存 —— 不写磁盘、每会话独立,重启宿主后从会话历史重新预填
- 消息定位 —— 会话头部点
定位,左侧浮出面板按会话顺序列出你发过的所有消息,点任意一条直接滚到它在会话里的位置(短暂高亮)
📦 安装
dsh plugin --profile web add github:VioletScar-Hui/dsh-chat-history
装完刷新页面即可(浏览器刷新生效,无需重启宿主)。发布到插件市场后,也可直接在侧边栏「插件市场」里搜索安装。
🚀 使用
- 打开任意会话,点击聊天输入框。
- 光标在行首时按
↑:召回你上一条发过的消息;继续按↑往前翻。 - 按
↓:往后翻;翻到最新时再按↓,还原成你本来在编辑的草稿。 - 直接改文字即可退出浏览状态,正常发送。
消息定位:点击会话头部右上区域的 定位 按钮 → 左侧浮出面板列出本会话发送过的消息 → 点任意一条跳转到对应位置(Esc 或点击外部关闭)。
🔧 实现
- 注册
conversation.input.left(list 槽,工具行内,additive),组件返回null只挂副作用,绝不做 DOM hack。 - 键盘监听在
document捕获阶段,只认textarea[data-phase](composer 文本域唯一稳定属性)。 - 历史来源:
ConversationSnapshot.nodes里kind === 'user'节点;发送检测靠InputState.phase的submitting → plain迁移。 - 纯逻辑(trim、连续去重、上限 200、提取用户文本)抽在
src/client/history.js,附单测。 - 消息定位注册
conversation.session.header.actions(list 槽),用useSession读chat.order/chat.nodes,DOM 定位走[data-conversation-scroll]+data-chat-anchor-key;面板为position:fixed悬浮层,不动会话 DOM。
更详细的架构说明见 docs/architecture.md。
❓ FAQ
为什么看不到任何按钮?
历史召回是纯键盘交互,输入框左侧不新增 UI 元素——这正是「不打扰输入」的设计:功能就在 ↑/↓ 上,没有可见入口。
历史存在哪里?会不会跨会话串? 历史只保存在浏览器内存里,每个会话独立 seed。切换会话会重新从当前会话的历史消息预填,不会串。
重启宿主的会丢吗? 不会。宿主重启后浏览器重新加载插件,会再次从当前会话已发送的消息里预填历史。唯一「丢」的是你尚未发送的草稿,那本就不属于历史。
为什么按 ↑ 没反应?
只有光标在行首(selectionStart === 0)时才触发;输入法合成中、斜杠命令菜单打开时也不会触发。先点一下输入框开头再按 ↑。
🤝 Contributing
bun install # 仅需 bun 作为构建/测试工具,无运行时依赖
bun test # 单测
bun scripts/build.js # 重新生成 lib/
改动 src/ 后记得跑一次构建,lib/ 是提交的预构建产物(安装端免 bun、免构建)。
📄 License
Comments
Loading…
From the same category
by anywhere-labs
为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34.4k
↓ 175/wk
MIT
TypeScript
Oct 31, 2026
dsh plugin --profile web add dsh-plugin-desktopby zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 9.9k
↓ 225/wk
Apache-2.0
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-webA collection of independent Web UI plugins and skins, including task boards, Git graphs, mobile access, and live token stats.
★ 8.6k
↓ 225/wk
Apache-2.0
TypeScript
dsh plugin --profile web add dsh-webby PC2005-cloud
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI 视频自造专属宠物
★ 5.2k
↓ 224.8k/wk
MIT
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-petby omdsh-dev
开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 | Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git,
★ 4.8k
↓ 99.3k/wk
MIT
TypeScript
Oct 30, 2026
dsh plugin --profile web add dsh-better-sidebarby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 4k
↓ 139k/wk
Apache-2.0
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-context