dsh_PromptRecall:在 DSH Web 输入框用 ↑/↓ 召回历史 prompt

前言

在 DSH Web GUI 里调试智能体,prompt 很少一次写对。想找回几轮之前输入过的一段提示词,只能向上翻聊天记录、手动复制再粘贴;切换会话或重启之后,连可翻的地方都没有。终端里有 history,Web 输入框此前没有对应物。

dsh_PromptRecall 解决的就是这个问题:仿照 Codex 的交互,在会话输入框按 / 浏览历史 prompt,且历史跨会话、跨重启持久保留。

DSH 的理念是「一切皆插件」,输入历史这类交互增强同样以插件形式接入。下面按功能、存储设计、安装步骤依次介绍。

这是什么

dsh_PromptRecall 是一个仿 Codex 的 DSH Web GUI 输入历史插件,由 liguanyu 维护,许可证为 MIT,package.json 标注版本 1.0.0。需要说明的是,仓库与 README 中的名称写作 dsh_PromptRecall,而 package.json 中的包名是 dsh-prompt-recall,两种写法指向同一个项目,核对来源时以 GitHub 仓库为准。

它解决的问题很具体:让会话输入框获得类似终端 history 的能力,并且历史在页面刷新、进程重启之后仍然可以召回。

键位与交互

安装后无需额外配置,常用按键如下:

按键 行为
(空草稿) 进入历史浏览,从最新条目开始
/ (浏览中) 向旧 / 向新移动;最旧处不回绕
(最新项再按) 清空输入框并退出浏览
/ (非空草稿、正文中间、有选区、弹窗打开) 交还编辑器,只移动光标或候选
Esc(非空草稿) 清空草稿并存入历史,按 可找回
Esc(浏览中) 退出浏览;草稿为空时不做任何事

这里的「空草稿」指语义空:文本、附件、mention 全空才算空,此时按 才会进入浏览。

按键接管有明确的边界:只要草稿非空、光标停在多行正文中间、存在选区,或弹窗处于打开状态,方向键一律交还编辑器,绝不误伤你正在写的草稿。

Esc 草稿保险值得单独一提:写了一大段草稿又决定清空重来时,Esc 会把这段文本存入历史(仅文本),之后按 就能找回。

浏览历史时,输入框上方会出现一个位置 pill,显示当前所处位置,例如 ↑ 2/38

当前对话优先

历史不是简单的全局时间线。回到某个对话时,插件先召回该对话自己的历史;继续按 ,才进入其他对话的历史。

README 给了一个可复现的顺序示例:会话 A 依次输入 a、b、c,切到会话 B 输入 e、f,再切回 A 后按 的顺序是 c → b → a → f → e。也就是当前对话优先,全局历史兜底。

两层历史设计

历史分为两层:

1、持久层:跨会话的 JSONL 文件,只存文本;

2、局部层:当前会话的召回列表,包含 Esc 暂存的草稿。

每条记录带稳定单调 ID,裁剪只删最旧整行、不重编号。局部层相邻且完全相同的条目会折叠为一条,持久层则保留重复记录。

数据存储与容量

历史写入 DSH 主目录下的 prompt-history.jsonl(未设置 DSH_HOME 时默认 ~/.dsh/prompt-history.jsonl),每行一条 JSON 记录。只保存纯文本,不保存图片、mention 绑定或其他附件内容。历史目录不存在时会在首次写入时自动创建,无需手动准备。

容量限制:

  • 持久文件约 10 MB,超限时删除最旧整行,永远保留最新一条;
  • 当前会话的局部召回列表上限 200 条 / 256 KB,从最旧淘汰。

想清空全部历史,点击位置 pill 上的 × 两次(3 秒内):第一次点击按钮变为「确认?」,第二次执行清空,包括持久文件。

安装与启用

前置条件:一个已安装 pnpm 的 DSH 环境,dsh plugin 内部会把安装动作转发给 pnpm。

从 GitHub 安装,执行:

dsh plugin --profile web add github:liguanyu/dsh_PromptRecall

这条命令会把插件装入 web profile。如果想改源码,走本地安装:

git clone https://github.com/liguanyu/dsh_PromptRecall
cd dsh_PromptRecall
pnpm install          # link 安装沿仓库真实路径解析依赖,需先在仓库内安装
dsh plugin --profile web add .

本地安装使用 pnpm 的 link: 协议,改代码后重启即生效、无需重装;由于 Node 会解析链接的真实路径,要先在仓库内执行一次 pnpm install,让运行时依赖就位。github: 安装不需要这一步,依赖随包一起装入 profile 树。

经过上面的步骤,重启 DSH Web 即可生效:

dsh web

插件会成为 web 组合中的一行,随启动自动加载,无需任何手动 define/run 步骤。

适用场景与注意事项

适合的场景:

  • 经常在 DSH Web 里迭代长 prompt,需要找回几轮之前的版本;
  • 多会话并行工作,希望每个对话优先召回自己的历史;
  • 习惯写完又清掉重写,需要 Esc 草稿保险兜底。

几点注意:

1、插件以当前 dsh 进程的权限运行,能读写 DSH 主目录下的历史文件。安装前建议先查看源码与许可证(本项目为 MIT),确认无误再装。

2、历史只存纯文本,但已发送和 Esc 暂存的内容都会落盘;如果 prompt 中包含敏感信息,可随时用 pill 上的 × 清空。

3、历史跨会话共享,其他会话按 也能走到当前会话的记录,介意这一点的话需要自行清空历史。

小结

dsh_PromptRecall 把终端 history 的使用习惯带到了 DSH Web:一个 就能找回上一条 prompt,历史跨会话、跨重启都在,且按键路由和裁剪策略都做了明确边界。如果你日常在 Web GUI 里调 prompt,值得装一份试用。

  • GitHub:https://github.com/liguanyu/dsh_PromptRecall
  • 目录页:https://www.skillhub.cn/plugins/liguanyu/dsh_PromptRecall

需要说明的是,上述目录页为社区站点,与 DeepSeek、幻方无官方从属关系。

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

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

Xiaoye