DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-recent-prompts

h

dsh-recent-prompts

Manifest valid

DeepSeek Harness plugin: browse, search, copy and hide the prompts you sent to the AI across all sessions.

UI (client)hasBundlePatch

dsh-recent-prompts

把你说给 AI 的话找回来:按会话浏览最近的对话、在全部历史里搜索、一键复制、把废话和不想再看的会话藏起来。

一个 DeepSeek Harness (DSH) Web 插件。 装上之后左侧栏底部多一个气泡图标,点开就是一整页「我最近对 AI 说的话」。

English · 更新日志 · MIT License


为什么做这个

和 AI 协作久了,最值钱的东西往往是你自己以前写过的那段话:一段约束、一份规格、一个反复用的提示词。 但它们散落在几百个会话里,翻起来很痛苦。这个插件只做三件事:

  1. 看:最近说过的话,一眼可见,全文而不是摘要;
  2. 搜:记得大概内容时,在全部会话里找回来;
  3. 留:用得上的复制走,废话和不想再看的会话标记为「不显示」,需要时再恢复。

功能

功能说明
最近窗口默认只加载最近 6 个会话、每个会话最近 6 轮,按会话分组、组内按时间正序显示你的原话全文
加载更早每个会话组可继续往前翻,一次约 6 轮,直到该会话的第一条
搜索全部历史输入即搜,覆盖所有会话的每一轮;命中按会话分组,显示 #轮次 + 开头片段
载入全文命中行点「载入全文」时,才按「下一轮起点」精确锚定、只取那一轮,拿到完整原话
复制复制整段原文到剪贴板(navigator.clipboard,失败回退到选区方案),成功有「已复制」反馈
隐藏消息按轮隐藏:连列表里的开头预览一起消失
隐藏会话整组隐藏,最近的列表和搜索结果都不再出现
已隐藏 / 恢复独立的「已隐藏 N」页签名列会话与消息两类记录,可单条恢复、全部恢复;消息记录还能直接复制
包含已隐藏搜索框右侧开关,默认关闭;打开后被隐藏的内容重新出现在搜索结果里并标注「已隐藏」,可就地恢复
只读只调用 Session 的读取接口,不写入任何会话日志,不发网络请求
主题 / 语言只用宿主主题 token(跟随明暗);中英文案随宿主语言切换

安装

要求:DSH 0.2.x(插件用到的接口:session.list / session.projections / session.page,均为只读)。

⚠️ 别直接填 hujiyo/dsh-recent-prompts。DSH 的安装框只接受下表左列的写法,裸的 用户名/仓库名 会被当成 npm 包名校验,报「not a package name the registry accepts」。

在 DSH 里安装

侧边栏 Plugins → 添加插件,安装源选「自定义地址」,把下表的字符串粘进输入框,点安装,然后刷新页面。

方式填什么
Release 压缩包(推荐给使用者)https://github.com/hujiyo/dsh-recent-prompts/releases/download/v1.0.0/dsh-recent-prompts-1.0.0.tgz
GitHub 仓库(取 main 最新)github:hujiyo/dsh-recent-prompts
或 https://github.com/hujiyo/dsh-recent-prompts
本地目录(开发者,改动即时生效)D:\桌面\dsh-recent-prompts 这类绝对路径
npm 包名(已发布 1.0.0)dsh-recent-prompts

区别:压缩包和 npm 一样是「安装一份副本」;github: / URL 由 pnpm 克隆仓库;本地路径以 link: 方式接入,改 client.js 刷新页面即生效。

装好后左侧栏底部(插件图标旁)会出现气泡图标「最近说过的话」。

命令行 / agent 安装

dsh plugin --profile web add https://github.com/hujiyo/dsh-recent-prompts/releases/download/v1.0.0/dsh-recent-prompts-1.0.0.tgz

然后在 $DSH_HOME/profiles/web/package.json 的 dsh.profile.bundles 数组末尾追加 "dsh-recent-prompts",再刷新页面。 (用 Plugins 界面或 agent 的 plugin_manager install_bundle 安装会自动完成这一步;命令行需要手动补。)

卸载

  1. 从 dsh.profile.bundles 里删掉 "dsh-recent-prompts";
  2. dsh plugin --profile web remove dsh-recent-prompts。 或在 Plugins 界面上直接卸载。

工作原理

插件是纯客户端(浏览器)实现,Host 半边是空的。读取路径全部是 DSH 已有的只读 Remote 接口:

session.list()                                   → 全部会话目录:标题、更新时间、每轮开头约 50 字的投影大纲
  ├─ 最近窗口:对最近 6 个会话
  │     session.projections({sessionId})         → 精确日志切点 asOfSeq + 标题 + 大纲
  │     session.page({throughSeq, turnWindow})   → 最近约 6 轮的事件
  └─ 搜索:本地匹配大纲里每一轮的开头文本
        命中后点「载入全文」
          session.projections({sessionId})       → 切点
          session.page({beforeSeq: 下一轮起点})   → 只取那一轮

再把事件流过滤成你本人打的字:

  • 只认 user/message 事件;
  • 且 data.source.kind === 'user',因此自动排除 agent 注入的上下文、goal 续轮、工具结果、命令回显;
  • 文本取自 content 里的 text 块,图片/文件只留占位标记。

隐藏记录只写浏览器:

  • localStorage 键 dsh.recent-prompts.hidden.v1;
  • 结构:会话记录 {kind:'session', sessionId, sessionTitle, …}、消息记录 {kind:'turn', sessionId, seq:<轮起点 seq>, body, …};
  • 不写会话日志、不改 Harness 状态,所以随时可恢复,也不会影响别的客户端。

数据与隐私

  • 所有读取都走本机 Harness 的 Remote 接口,插件本身不联网;
  • 插件不写会话日志,隐藏仅存于你当前浏览器的站点存储;
  • 换浏览器 / 换设备 / 清空站点数据会看不到之前的隐藏记录(会话本身不受影响)。

已知限制

  • 搜索粒度:匹配的是每轮开头约 50 字的文本(投影大纲的粒度),长消息中间的关键词搜不到。要覆盖任意位置,需要接入宿主的全文消息索引(ctx.sessions.search),目前未实现。
  • 缓存依赖:从未被投影缓存覆盖过的老会话可能没有大纲,因而搜不到;把那个会话打开一次后缓存会补齐。
  • 固定窗口:默认最近 6 个会话 × 6 轮、搜索最多列 60 个命中会话,均为 client.js 顶部常量。
  • 会话数很多时:session.list() 返回的是全量目录(你如果有数百个会话,首次加载会花一点时间),属正常现象。
  • 隐藏是「视图级」的:它只改变本插件里的显示,不影响 DSH 侧边栏里的会话列表。

可调参数

client.js 顶部:

const RECENT_SESSIONS = 6;      // 默认显示几个最近的会话
const WINDOW_TURNS = 6;         // 每个窗口读取几轮
const WINDOW_MESSAGES = 400;    // 每次分页请求的消息预算
const SEARCH_GROUPS = 60;       // 搜索最多列出多少个命中会话
const CACHE_MS = 60 * 1000;     // 会话目录缓存时长

目录结构

dsh-recent-prompts/
├─ package.json        # 包声明:dsh.bundle.patch + dsh.client
├─ cordis.patch.yml    # 把插件行插进 profile
├─ index.js            # Host 半边(空实现,渲染全在浏览器侧)
├─ client.js           # 全部界面与读取逻辑(React,无构建步骤)
├─ icon.svg            # 插件管理页展示的图标
├─ locale/zh.json      # 插件元数据(标题/描述)
├─ locale/en.json
├─ README.md           # 中文说明(本文件)
├─ README.en.md        # English
├─ CHANGELOG.md
└─ LICENSE

没有打包步骤:client.js 是一个 window.__ModuleLoader__.load({ id, factory }) 的普通 JS 文件,React 由宿主的模块表提供。

开发

  1. 把仓库目录以 link 方式装进某个 profile(见「方式二」),之后改 client.js 只需刷新页面;
  2. 没有测试套件,也没有构建;
  3. 界面文案在 client.js 的 zh / en 两个字典里;locale/*.json 只给插件管理页用;
  4. 样式只用 --dsw-alias-* 主题 token,不依赖宿主组件库。

贡献

Issue / PR 都欢迎。改动前留意:插件必须保持只读(不得写入会话日志),不得加载宿主 Client 包,不得用 iframe 渲染页面。

License

MIT © 2026 hujiyo

Comments

Loading…

Similar plugins

dsh-self-preserve

by n8guru

DSH hook plugin: a session may not stop the harness it runs inside

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Sep 2, 2026

dsh plugin --profile web add dsh-self-preserve

by bobby-sheng

Search, inspect, update, and install DeepSeek Harness plugins from DSH Get.

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Aug 19, 2026

dsh plugin --profile web add dshget-plugin

by gorban

DeepSeek Harness (dsh) plugin: stop a running background job from the session-header job list, behind a confirmation dialog.

UI & ExperienceDevelopment & InfrastructureTerminal & ClientsManifest valid

★ 1

↓ 276/wk

MIT

TypeScript

Sep 20, 2026

dsh plugin --profile web add @gorban/dsh-job-stop

by jwilson411

DeepSeek Harness plugin: fail-closed URL host/scheme allowlist that runs before a request is opened

Development & InfrastructureManifest valid

★ 0

MIT

JavaScript

Sep 21, 2026

dsh plugin --profile web add dsh-ssrf-guard

by MarJose123

DeepSeek Harness plugin: your DeepSeek API balance and the current peak/off-peak billing window, below the message input.

Manifest valid

★ 0

MIT

JavaScript

Oct 18, 2026

dsh plugin --profile web add dsh-simple-usage-info

by weibaohui

DeepSeek Harness plugin: cron-driven scheduled items with a full-page management UI. Each item carries a title, a prompt, and a croner expression; executions spawn a fresh agent session in a bound wor

Manifest valid

★ 0

JavaScript

Aug 19, 2026

dsh plugin --profile web add dsh-plugin-scheduled-items