前言¶
在 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
核心功能¶
方向键回溯与恢复草稿¶
输入框为空时:
- 按
↑:从最近一条已发送消息开始,逐条向更早的消息移动;到达最旧一条后停止。 - 按
↓:向更新的方向返回;越过最新一条后,恢复开始按↑之前输入框里的草稿。
回溯过程中,界面右下角会显示当前位置,例如 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 |
相同会话事件序号下的缓存时间 |
典型用法¶
- 在 DSH Web 界面打开一场对话,确认 Composer 输入框为空且焦点在输入框内。
- 按
↑:上一条、上上条……已发送的用户消息会依次出现在输入框中,右下角显示当前序号/总数。 - 按
↓:向更新的消息前进;继续按到越过最新一条后,会回到你开始按↑之前的草稿内容。 - 需要改字时直接编辑即可退出回溯;若输入框里已有内容或挂了附件,用
↑移动光标即可,不会进入历史模式。
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。