dsh-input-history: Browsing Sent Messages with Arrow Keys in DSH Composer

前言

在 DeepSeek Harness(DSH)里和模型对话时,Composer 输入框通常只保留当前草稿。想重发上一条指令、或在几条相近 prompt 之间切换对比,只能手动复制聊天记录或凭记忆重打。终端里 Shell 的「空行按 ↑ 回溯历史」是常见习惯,但 Web 对话界面默认不会把已发送消息挂到方向键上。

dsh-input-history 是维护者 Dogtiti 发布的客户端类 DSH 插件:在 Composer 输入框为空时,用 ↑ / ↓ 按时间顺序回溯本会话里你已发送的用户消息,并写回草稿;越过最新一条后可以恢复开始回溯前的草稿。下面介绍它的能力、安装方式与使用边界。

这是什么

插件 npm 包名为 dsh-input-history,当前资料中的版本为 1.1.3,许可证 MIT,要求 DSH 引擎 ^0.2.1-0。它通过客户端注入拦截键盘事件,并在 Host 侧调用 POST /api/composer.history 从会话日志提取符合条件的用户文本,再用公开的 inputActions.setDraft() 回填,与手动输入共用同一条草稿链路(可撤销、按会话持久化),不直接改 DOM。

社区目录页:https://www.skillhub.cn/plugins/Dogtiti/dsh-input-history
源码与说明:https://github.com/Dogtiti/dsh-input-history

核心功能

方向键回溯与恢复草稿

输入框为空时:

  1. 按 ↑:从最近一条已发送消息开始,逐条向更早的消息移动;到达最旧一条后停止。
  2. 按 ↓:向更新的方向返回;越过最新一条后,恢复开始按 ↑ 之前输入框里的草稿。

回溯过程中,界面右下角会显示当前位置,例如 3/19 表示在由新到旧排序的第 3 条,共 19 条可用历史。

一旦你在回溯状态下手动编辑输入内容,即退出回溯模式。

何时不会接管方向键

插件刻意不与编辑器、菜单抢键位:

条件 行为
输入框已有文字或附件 ↑ 仍用于光标与选区移动
焦点不在 Composer 输入框 不处理
组合键带 Alt / Ctrl / Cmd / Shift 不处理
/ 或 @ 菜单已接管输入 方向键归菜单

历史从哪里来

Host 通过 sessions.get(id) 与 session.deriveMessages() 拉取会话消息,只保留 role: user 且 source.kind === 'user' 的文本;runtime-context、skill-catalog、time-context、user-approval 等来源会排除。相邻完全相同的消息会合并为一条。相同会话事件序号下的结果会缓存,默认缓存时间由配置项 cacheTtlMs 控制(默认 30000 毫秒)。

安装与启用

DSH 生态采用「一切皆插件」的思路;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。安装插件前建议自行查看仓库源码与 MIT 许可证——插件在当前 DSH 进程权限下运行。

方式一:实验性市场 bundle

在 DSH 中打开 设置 → 插件 → 启用实验性市场 bundle → Discover,添加上述市场索引地址,再安装 dsh-input-history:

https://raw.githubusercontent.com/Dogtiti/dsh-predict/main/market-index.json

方式二:npm

在项目或环境中安装包:

npm i dsh-input-history

然后在 DSH 的 Plugins 页使用「添加」,填写包名 dsh-input-history。

配置示例

在插件 insert 配置中可调整行为(以下为 README 中的 YAML 示例形状;各键默认值以文档表格为准):

- insert:
    - id: composer-history
      name: 'dsh-input-history'
      config:
        limit: 50
键 默认 说明
enabled true 总开关;关闭后路由返回 503,客户端不接管按键
limit 200 保留的历史条数(取最近)
maxChars 2000 单条消息最大字符数(保留头尾)
cacheTtlMs 30000 相同会话事件序号下的缓存时间

典型用法

  1. 在 DSH Web 界面打开一场对话,确认 Composer 输入框为空且焦点在输入框内。
  2. 按 ↑:上一条、上上条……已发送的用户消息会依次出现在输入框中,右下角显示 当前序号/总数。
  3. 按 ↓:向更新的消息前进;继续按到越过最新一条后,会回到你开始按 ↑ 之前的草稿内容。
  4. 需要改字时直接编辑即可退出回溯;若输入框里已有内容或挂了附件,用 ↑ 移动光标即可,不会进入历史模式。

README 中的效果示意(节选):

3/19        ← 当前第 3 条(由新到旧),共 19 条

↑  然后再开发一个插件 就是在输入框按上下键 能按顺序回填之前发过的消息
↑  换
↓  换
↓  (恢复原草稿)

适用场景与注意

适合:在同一 DSH 会话里反复微调 prompt、重发相近指令、或在几条历史输入之间快速切换,而不必去滚动聊天记录复制粘贴。

注意:

  • 依赖 DSH ^0.2.1-0 及公开的 inputActions.setDraft();升级 DSH 后若接口变化,需关注插件仓库 Issue。
  • 历史条数与单条长度受 limit、maxChars 限制;极长消息会被截断保留头尾。
  • 与 dsh-predict(Tab 采纳预测占位)等同属 Dogtiti 的 Composer 增强插件,可按需组合安装。

结尾

dsh-input-history 把 Shell 式的 prompt 历史搬到 DSH Composer:空输入框时 ↑ / ↓ 回溯本会话用户消息,编辑即退出,并在不打扰 /、@ 菜单和已有内容编辑的前提下工作。若要安装或查变更,可访问目录页 skillhub.cn/plugins/Dogtiti/dsh-input-history 与 GitHub 仓库 github.com/Dogtiti/dsh-input-history。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye