仿 Codex 的 DSH Web GUI 输入历史插件:在会话输入框按 ↑/↓ 浏览历史…
30.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liguanyu/dsh_PromptRecall该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- Esc清除并进入历史
- 跨会话跨重启持久保留
展开完整介绍(100 字)↓
仿 Codex 的 DSH Web GUI 输入历史插件:在会话输入框按 ↑/↓ 浏览历史提示词,按 Esc 清空当前输入框并进入历史,历史跨会话、跨重启保留,只存纯文本,按键接管安全,不会误伤草稿。
README
由 DeepSeek 最新模型翻译生成dsh_PromptRecall
仿 Codex 的 DSH Web GUI 输入历史插件:在会话输入框按 ↑/↓ 浏览历史 prompt,历史跨会话、跨重启持久保留。
特性 / Features
- ↑ 召回历史,↓ 向新移动:空输入框按 ↑ 从最新条目开始逆序浏览,↓ 向新移动,越过最新项后清空输入框并退出浏览。
- 当前对话优先:回到一个对话时,先召回该对话自己的历史,继续按 ↑ 才进入其他对话的历史。
- 跨会话、跨重启持久:用户级 JSONL 全局历史,稳定单调 ID,刷新页面或重启后仍可召回。
- 安全的按键路由:非空草稿、多行正文中间、有选区、弹窗打开时,方向键一律交还编辑器,绝不误伤草稿。
- 浏览时不弹触发菜单:历史浏览期间主动收起 / 命令、skill、@ 引用候选面板,面板不会抢走 ↑/↓;一旦编辑草稿,浏览让位、面板立即恢复正常。
- Esc 草稿保险:清空未发送的非空草稿时把它存入历史(仅文本),按 ↑ 可找回。
- 位置指示:输入框上方 pill 显示当前位置(如 ↑ 2/38);pill 上的 × 两次点击可清空全部历史。
- 仅存文本 + 自动裁剪:只持久化纯文本;相邻完全相同的条目折叠;文件超限时删除最旧整行并保留最新。
展开完整文档(README 剩余 1 节)
dsh_PromptRecall 仿 Codex 的 DSH Web GUI 输入历史插件:在会话输入框按 ↑/↓ 浏览历史 prompt,历史跨会话、跨重启持久保留。 特性 / Features - ↑ 召回历史,↓ 向新移动:空输入框按 ↑ 从最新条目开始逆序浏览,↓ 向新移动,越过最新项后清空输入框并退出浏览。 - 当前对话优先:回到一个对话时,先召回该对话自己的历史,继续按 ↑ 才进入其他对话的历史。 - 跨会话、跨重启持久:用户级 JSONL 全局历史,稳定单调 ID,刷新页面或重启后仍可召回。 - 安全的按键路由:非空草稿、多行正文中间、有选区、弹窗打开时,方向键一律交还编辑器,绝不误伤草稿。 - 浏览时不弹触发菜单:历史浏览期间主动收起 / 命令、skill、@ 引用候选面板,面板不会抢走 ↑/↓;一旦编辑草稿,浏览让位、面板立即恢复正常。 - Esc 草稿保险:清空未发送的非空草稿时把它存入历史(仅文本),按 ↑ 可找回。 - 位置指示:输入框上方 pill 显示当前位置(如 ↑ 2/38);pill 上的 × 两次点击可清空全部历史。 - 仅存文本 + 自动裁剪:只持久化纯文本;相邻完全相同的条目折叠;文件超限时删除最旧整行并保留最新。 设计 / Design 历史分两层:持久层(跨会话 JSONL 文件,只存文本)与局部层(当前会话的召回列表,含 Esc 暂存草稿)。 进入或切回一个会话时冻结快照:快照只含其他会话的记录,本会话的记录播种进局部层,因此统一索引的顺序是 [其他会话记录 | 本会话记录]。 示例:会话 A 依次输入 a、b、c,切到会话 B 输入 e、f,再切回 A 后按 ↑ 的顺序是 c → b → a → f → e(当前对话优先,全局兜底)。 每条记录带稳定单调 ID,裁剪只删最旧整行、不重编号;本会话新提交只出现在局部层,因此每条恰好出现一次;局部层相邻且完全相同的条目(文本+会话+附件签名)折叠,持久层保留重复记录。 示例:会话 A 提交 a、b、c;会话 B 提交 e、f;回到 A 后,↑ 依次召回 c → b → a → f → e(当前会话优先,全局历史兜底)。 每条记录都带一个稳定单调 ID;裁剪只删除最旧的完整记录,绝不重新编号。当前会话里的新提交只出现在本地层,所以每条记录都恰好出现一次。本地层里相邻的相同条目(文本 + 会话 + 附件签名)会折叠,持久层则保留重复项。 键位与交互逻辑 / Keybindings & interaction logic | 按键 | 行为 | | ↑(空草稿) | 进入历史浏览,从最新条目开始 | | ↑ / ↓(浏览中) | 向旧 / 向新移动;最旧处不回绕 | | ↓(最新项再按) | 清空输入框并退出浏览 | | ↑/↓(非空草稿、正文中间、有选区、弹窗打开) | 交还编辑器,只移动光标/候选 | | ↑/↓(浏览中,召回文本以 /、@ 开头) | 触发菜单被抑制:继续回溯历史,不弹候选面板 | | Esc(非空草稿) | 清空草稿并存入历史(↑ 可找回);刚召回的条目已在历史里,不再重复记录 | | Esc(浏览中) | 退出浏览;草稿为空时不做任何事 | 鼠标操作(非键盘)/ Mouse actions (not keyboard): | 操作 | 行为 | | 点击 pill 上的 × 两次(3 秒内) | 第一次点击变"确认?",第二次清空全部历史(含持久文件) | 接管判定:按键目标必须是会话输入框;只有"语义空"草稿(文本、附件、mention 全空)按 ↑ 才进入浏览;浏览中一旦用户改动文本或附件,立即退出接管并作废在途请求;弹窗或命令菜单消费过的按键自动让位。优先级上历史浏览高于触发菜单:浏览期间 / 命令、skill、@ 引用菜单被主动收起(避免刚召回的 /...、@... 弹面板抢走 ↑/↓),用户一编辑草稿即解除抑制、菜单恢复原有行为。 | Key | Behavior | | ↑ (empty draft) | Start browsing history from the newest entry | | ↑ / ↓ (browsing) | Move older / newer; no wrap at the oldest end | | ↓ (past the newest) | Clear the composer and exit browsing | | ↑/↓ (non-empty draft, mid-text, selection, popup open) | Handed back to the editor: move the caret / candidates only | | ↑/↓ (browsing, recalled text starts with / or @) | Trigger menus are suppressed: history keeps the arrow keys and no candidate panel appears | | Esc (non-empty draft) | Clear the draft and store it in history (recoverable with ↑); a just-recalled entry is already in history and is not recorded twice | | Esc (browsing) | Exit browsing; no-op when the draft is empty | | Action | Behavior | | Click the pill's × twice (within 3 s) | The first click arms "confirm?", the second clears all history (including the persistent file) | Takeover rules: the key target must be the conversation composer; browsing starts with ↑ only on a semantically empty draft (no text, attachments, or mentions); any user edit to the text or attachments while browsing immediately releases the takeover and invalidates in-flight requests; keys already consumed by a popup or command menu are always left alone. On priority, history browsing outranks the trigger menus: while browsing, the / command, skill, and @ reference menus are actively dismissed (so a recalled /... or @... cannot pop a panel and steal ↑/↓), and editing the draft releases that suppression and restores normal menu behavior. 数据与隐私 / Data & privacy 历史写入 DSH 主目录下的 prompt-history.jsonl(即 $DSH_HOME/prompt-history.jsonl;未设置 DSH_HOME 时默认 ~/.dsh/prompt-history.jsonl),每行一条 JSON 记录;只保存纯文本,不保存图片、mention 绑定或其他附件内容。 容量限制:持久文件约 10 MB(超限删除最旧整行,永远保留最新一条);当前会话的局部召回列表上限 200 条 / 256 KB(从最旧淘汰)。pill 上的 × 可随时清空全部历史。 安装 前置条件:已安装 pnpm 的 DSH 环境(dsh plugin 内部转发给 pnpm)。 从 GitHub 安装: dsh plugin --profile web add github:liguanyu/dsh_PromptRecall 本地安装: 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_HOME/prompt-history.jsonl(默认 ~/.dsh/prompt-history.jsonl);目录不存在时会在首次写入时自动创建,无需手动准备。 开发 目录结构: - lib/index.js — Host 半:promptRecall Remote 服务(JSONL 存储 + inbox 提交捕获) - lib/store-core.js — 纯存储核心(两层历史/折叠/裁剪,零依赖可单测) - lib/typert.host.js — 手写的 typert 宿主面(网关校验与派发) - lib/client.js — Client 半:按键路由、历史状态机、位置 pill - cordis.patch.yml — bundle patch:把插件行插入 web 组合 - test/store-core.test.mjs — 存储核心单测(node --test) - test/typert-contract.test.mjs — TYPERT 契约单测:schema/codec 的 create() 工厂与两面一致性 - lib/index.js — Host half: the promptRecall Remote service (JSONL storage + inbox submission capture) - lib/store-core.js — Pure storage core (two-layer history / folding / trimming, dependency-free and unit-testable) - lib/typert.host.js — Hand-written typert host face (gateway validation and dispatch) - lib/client.js — Client half: key routing, history state machine, position pill - cordis.patch.yml — Bundle patch: inserts the plugin row into the web composition - test/store-core.test.mjs — Storage core unit tests (node --test) - test/typert-contract.test.mjs — TYPERT contract tests: the create() factories on schemas/codecs and both-face agreement DSH 兼容性:本插件的 TYPERT 清单面向 DSH ≥ 0.1.7 的惰性工厂契约——TYPERT.schemas 的每个条目与每个 strict codec(参数与 result)都必须提供 create(),由注册表缓存、网关在边界处调用 codec.create().parse()。 升级 DSH 后若启动报 … has no create() factory,就是该契约发生了漂移,改完请跑 node --test (test/typert-contract.test.mjs 会先失败)。 DSH 兼容性:本插件的 TYPERT 清单面向 DSH ≥ 0.1.7 的惰性工厂契约——TYPERT.schemas 的每个条目与每个 strict codec(参数与 result)都必须提供 create(),由注册表缓存、网关在边界处调用 codec.create().parse()。 升级 DSH 后若启动报 … has no create() factory,就是该契约发生了漂移,改完请跑 node --test (test/typert-contract.test.mjs 会先失败)。 运行测试 / Run tests: node --test
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
liguanyu/dsh_PromptRecall
仿 Codex 的 DSH Web GUI 输入历史插件:在会话输入框按 ↑/↓ 浏览历史…
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。