在 DeepSeek Harness (DSH) 的使用场景中,开发者经常需要在不同的对话会话间切换,或者快速重用之前的输入。如果依赖全局的历史记录,切换会话时旧的输入内容往往会干扰当前会话,导致输入污染。dsh-session-input-history 解决了这一问题。
这是一个由 czhzz 维护的纯客户端插件,旨在为当前会话提供 Shell 风格的输入历史导航能力。
核心功能¶
该插件主要提供以下能力:
- 会话隔离的输入历史导航:历史记录严格限定在当前会话内,不受其他会话或工作区输入污染。切换会话后,历史记录自动重置为新会话的内容。
- Shell 历史式交互:在对话输入框中,使用
↑和↓方向键即可遍历当前会话发送过的消息。 - 纯客户端实现:无后端交互,无 UI 常驻组件。
- 不落盘存储:历史数据仅存在于内存中,关闭页面即清空。
安装与配置¶
安装该插件需要通过 DSH 的命令行工具执行。
dsh plugin --profile web add dsh-session-input-history
安装完成后,插件会自动挂载到输入框左侧的插槽 conversation.input.left,并依赖 @deepseek-ai/dsh-client-ui-conversation 组件。
交互方式¶
插件接管方向键的逻辑如下:
- ↑(上箭头):在草稿为空时,载入最新的一条历史消息。再次按下则继续向前(更旧)。
- ↓(下箭头):在浏览历史时向后翻页。当浏览到最新一条消息后再次按下,将清空输入框并退出浏览状态。
- 编辑与发送:在浏览历史的过程中,可以直接编辑当前消息内容,或直接发送当前载入的消息。发送或编辑操作会立即退出浏览状态。
技术实现与注意事项¶
- 依赖关系:插件依赖
@deepseek-ai/dsh-client-ui-conversation,需确保该依赖已正确安装。 - 键盘事件:插件仅在输入框获得焦点时接管方向键,且不处理任何组合键(如 Ctrl、Alt、Shift 等),保证编辑器的原生功能不受影响。
- 实现架构:插件分为 Host 侧(空 apply,无额外行为)和 Client 侧。Client 侧包含一个纯逻辑的历史提取模块和一个状态机,负责处理键盘输入与输入框草稿的读写。
- 卸载:如需移除,可执行:
dsh plugin --profile web remove dsh-session-input-history
结语¶
dsh-session-input-history 提供了一种轻量级、无状态的方式来管理 DSH 中的输入历史,特别适合需要频繁切换会话的开发者。通过命令行即可完成安装,无需额外的配置文件。