🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

撤回重来 Zok66/dsh-recall

DeepSeek Harness
Zok6612 天前有提交已提供中文文档扫描:未发现敏感能力

撤回最后一条消息,对话与文件同步回退

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Zok66/dsh-recall
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · other
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

dsh 撤回插件:只撤最后一条用户消息,对话与工作区文件一起回退

README

由 DeepSeek 最新模型翻译生成
dsh-recall DSH 的「撤回」插件:只撤最后一条用户消息,把对话与工作区文件一起回退到这一轮开始前,并生成一个新的干净分支会话。 功能 - 最后一条用户消息的动作条上会出现一个回旋箭头「撤回」按钮。 - 点击后弹窗确认,然后: 1. 生成一个不含这条消息及之后内容的新分支会话,原文与附件回到新会话输入框,可改动后重发。 2. 工作区里这一轮被 AI 改动过的文件还原、本轮新增的文件删除(基于每轮开始前的快照)。 3. 原会话保留在会话列表中可回看,不会被删除。 - 只允许撤最后一条用户消息;更早的消息用框架自带的「分支」。 - 撤回按钮即时跟随最后一条消息:发出新消息后自动移挂,无需重进会话刷新。 安装 dsh plugin --profile web add https://github.com/Zok66/dsh-recall 装完手动重启 dsh web(或刷新页面)即生效。 确认方式:grep -i recall ~/.dsh/dsh-web.log | tail,看到 [recall] 已启用…、[recall] 附件读取路由已注册… 等字样即成功。 更新 DSH 目前没有插件原地更新能力,「检查更新」会报 PLUGIN_MANAGER_EXIT_1 卡死。
展开完整文档(README 剩余 1 节)
dsh-recall

DSH 的「撤回」插件:只撤最后一条用户消息,把对话与工作区文件一起回退到这一轮开始前,并生成一个新的干净分支会话。

功能

- 最后一条用户消息的动作条上会出现一个回旋箭头「撤回」按钮。
- 点击后弹窗确认,然后:
1. 生成一个不含这条消息及之后内容的新分支会话,原文与附件回到新会话输入框,可改动后重发。
2. 工作区里这一轮被 AI 改动过的文件还原、本轮新增的文件删除(基于每轮开始前的快照)。
3. 原会话保留在会话列表中可回看,不会被删除。
- 只允许撤最后一条用户消息;更早的消息用框架自带的「分支」。
- 撤回按钮即时跟随最后一条消息:发出新消息后自动移挂,无需重进会话刷新。

安装

dsh plugin --profile web add https://github.com/Zok66/dsh-recall

装完手动重启 dsh web(或刷新页面)即生效。

确认方式:grep -i recall ~/.dsh/dsh-web.log | tail,看到 [recall] 已启用…、[recall] 附件读取路由已注册… 等字样即成功。

更新

DSH 目前没有插件原地更新能力,「检查更新」会报 PLUGIN_MANAGER_EXIT_1 卡死。更新请直接卸载重装:

node <插件目录>/lib/uninstall.js # ① 还原前端补丁
dsh plugin --profile web remove dsh-recall # ② 摘掉旧插件
dsh plugin --profile web add https://github.com/Zok66/dsh-recall # ③ 装最新版

跑完手动重启 dsh web(或刷新页面)生效。

<插件目录> 一般是 ~/.dsh/profiles/web/node_modules/dsh-recall;其他 profile 把 web 换成对应名字。

卸载

node <插件目录>/lib/uninstall.js # ① 还原前端补丁(移除撤回按钮)
dsh plugin --profile web remove dsh-recall # ② 摘掉插件本身

撤回按钮通过改写 dsh-client-ui-chat/lib/client.js 注入,remove 不会自动还原被改的前端文件,所以必须先跑 ①。uninstall.js 会先校验「备份 + 补丁 = 当前文件」才还原,防 DSH 升级后用旧备份降级前端;还原前另存当前版本,可反悔。支持 --status / --dry-run。

顺带清掉快照(可选):rm -rf ~/.dsh/.recall-snapshots

撤回语义

本插件的「撤回」是分支 + 文件回退:

- 对话:fork 一个新会话,从「被撤消息之前」开始,之前的对话保留;被撤消息及之后内容不在新会话里,原会话完整保留。
- 文件:每轮开始前对工作区做快照,撤回时按快照还原被改文件、删除本轮新增文件。

适用场景:发了一条消息、AI 改了一堆文件,后悔了,想「连话带文件一起回到这一轮之前」再重来。

文件还原只在点「撤回」按钮时触发,框架自带的「分支」不会回退文件。

注意事项

1. 撤回会动工作区文件,请在意的目录上谨慎使用。
2. 撤回是一次性的:还原后不保留「撤回的撤回」。
3. 超过 8MB 的文件不备份、无法恢复改动,但路径会登记进快照,保证不被误删。
4. 文件快照在 $DSH_HOME/.recall-snapshots/,单文件上限 8MB、单会话总计 512MB,超出从最旧轮次清理。
5. 撤回按钮通过补丁注入宿主前端,插件每次启动会自检补丁标记、被覆盖就自动补回;DSH 升级后按钮若消失,重启一次 DSH 即自动恢复。
6. 插件自身目录受保护:撤回时不会把插件自己的文件当成 AI 产物删掉。
7. 若撤回的是会话里唯一一条用户消息,无法在保留内容的同时移除它(新分支会空白),此时只把原文与附件放回当前输入框,不创建分支。

实现原理(给维护者)

撤回按钮通过 client-patch.js 改写宿主前端 dsh-client-ui-chat/lib/client.js 注入到用户消息动作条——这是被实测证明「点击一定有效」的方案。原因是宿主只给助手回复开放了 conversation.chat.assistant-actions 插槽,用户消息侧没有官方入口;v2.0~v2.1 尝试的官方插槽(位置在 AI 回复下)与 DOM 注入(App WebView 里点击无反应)都被否决,最终回到补丁方案。

代价是补丁改动框架文件,因此:

- 插件每次启动自检补丁标记(@@DSH_RECALL_PATCH_v9@@),被 DSH 的「环境安装与修复」覆盖后会自动补回;
- 卸载前必须跑 lib/uninstall.js,用 .orig-recall 基线还原前端(带校验防降级)。

附件回填走两条通道:图片用会话自带 session.readAttachment;普通文件由主机侧路由 /api/recall.attachment 流式读回字节后组装成 File 放回输入框。文件还原由撤回时显式 POST /api/recall.restore 触发,与框架「分支」共用 sessions.fork 但通过显式端点区分,避免点普通分支误回退文件。

目录结构

dsh-recall/
├── package.json # 插件元信息 + dsh.bundle 声明 ├── cordis.patch.yml # bundle 挂载声明 ├── README.md └── lib/ ├── index.js # 主机入口:补丁自愈 + 快照 + 撤回还原 ├── client-patch.js # 前端补丁注入(改写 client.js 加撤回按钮) ├── attachment-route.js # 附件读取 + 撤回还原 + 自检路由 ├── snapshot-store.js # 工作区文件快照 / 还原核心 └── uninstall.js # 卸载时还原前端补丁

许可

MIT
预览分享卡片长什么样 ↓Zok66/dsh-recall
分享 · DeepSeek Harness Hub
Zok66/dsh-recall

撤回最后一条消息,对话与文件同步回退

回到顶部