前言¶
DeepSeek Harness (DSH) 采用插件化架构,但在会话管理和消息回溯方面,现有功能往往停留在基础层面。例如,快速找回上一条发送的消息、在工作区左侧列表中彻底删除不再需要的会话记录,通常需要额外的操作或依赖不完善的归档机制。
heeweelee/dsh-session-plugin 旨在解决这两个具体痛点:通过键盘快捷键在输入框回填历史消息,以及通过右键菜单提供文件级的会话彻底删除能力。该插件由 Heeweelee 维护,开源协议为 MIT,适合需要在本地持久化会话数据并精细化管理的开发者使用。
核心功能¶
输入框历史回填¶
插件会在输入框聚焦时监听键盘事件,支持快速回填和切换已发送的消息。
- 基础回填:在输入框聚焦时按
↑键,会回填上一条你发过的消息。继续按↑/↓可以在历史记录中上下切换。 - 草稿处理:如果输入框中有草稿,按
↑会先暂存草稿,然后回填上一条历史消息;按↓走到底后恢复进入回填前的草稿内容(无草稿则清空输入框)。 - 历史列表与搜索:在会话标题栏的“↑ 历史 N”按钮旁点击
▾,可以打开可搜索的历史列表。点击列表中的条目即可回填,点击条目右侧的×可以隐藏该条目(仅隐藏回填提示,不改变会话记录)。
会话右键彻底删除¶
DSH 官方通常只提供归档(隐藏)接口,而本插件提供了文件级的删除能力。
- 触发方式:在工作区左侧的会话列表中,右键点击某个会话,选择“删除该会话…”。
- 执行逻辑:二次确认后,插件会永久删除该会话的本地日志文件(
session.jsonl或session.jsonl.zstd及其空父目录),并从工作区列表中彻底移除该行(0.1.9 版本起不再留下可点击的幽灵行)。 - 状态检查:如果会话正在生成中(
agent.status === 'running')或存在未完结的后台任务,删除操作会被拒绝(返回 409 错误)。此时无需切换会话,等待当前任务完成后即可再次尝试删除。 - 注意事项:删除是永久性的,不可恢复。如果删除的是当前正在查看的会话,请务必在确认后切换到其他会话,否则继续发送消息会重建该会话的记录。
安装与启用¶
使用官方 CLI 安装指定版本:
dsh plugin add @heeweelee/dsh-session-plugin@0.1.11
或在 DSH Desktop 的 设置 > 插件 市场中搜索安装。安装后必须重启 DSH 使插件生效。
配置¶
插件支持通过配置文件调整行为。在 DSH 的主目录(默认 ~/.dsh)下创建 dsh-session-plugin.json 文件:
{ "historyLimit": 100, "maxCharsPerEntry": 4000, "disableDiskCache": false }
配置项说明:
historyLimit(默认 100,上限 10000):每会话保留最近 N 条用户消息。修改后需重启 DSH 生效。调大后旧缓存会被视为过期并自动重读补满窗口。maxCharsPerEntry(默认 4000,上限 20000):单条回填文本的截断长度,防止超大粘贴撑爆内存或磁盘。超长文本会在末尾添加“…(已截断)”。disableDiskCache(默认 false):设为true则不写磁盘缓存(仅内存 1s TTL),适合不希望明文落盘的机器。开启后启动时会自动删除旧缓存文件。
技术实现与安全¶
API 接口¶
插件通过 Host 提供三个同源、无鉴权的进程内接口:
GET /api/dsh-session-plugin/history?sessionId=:只读获取指定会话的用户消息文本历史。GET /api/dsh-session-plugin/sessions:只读获取会话列表({id, title})。POST /api/dsh-session-plugin/delete:彻底删除本地会话记录(不可恢复)。
安全与权限¶
- 防 CSRF:删除路由要求请求携带自定义头
x-dsh-csrf: 1,且Origin为空或与本机同源,以防止跨站页面发起简单 POST 请求导致误删。 - 文件校验:删除前会对文件路径进行严格校验,仅允许删除符合会话产物形态(
session.jsonl或session.jsonl.zstd)的文件,防止误删系统文件。 - 本地权限:插件以本地用户权限运行,没有运行期 npm 依赖。
依赖与环境¶
- DSH 版本:依赖 DSH 运行时
>=0.1.0-rc.7。 - Node 版本:需要 Node.js 版本
^22.19.0 || >=24(与 DSH Desktop 内置运行时一致)。 - 兼容性:插件支持 DSH 2.0.4 引入的 Lexical 编辑器形态以及旧版的
<textarea>形态,输入框回填功能在两种形态下均可正常工作。
结语¶
heeweelee/dsh-session-plugin 通过提供精细化的输入历史管理和文件级会话删除能力,增强了 DSH 的本地数据控制力。对于需要频繁清理历史记录或需要严格管理本地会话日志的开发者,该插件是一个实用的工具。
- 插件目录页:https://www.skillhub.cn/plugins/Heeweelee/dsh-session-plugin
- GitHub 仓库:https://github.com/Heeweelee/dsh-session-plugin