会话与消息
#dsh-plugin
dsh-recall
DSH Web UI 消息撤回插件:用每条用户消息旁的撤销按钮,持久移除该轮及之后内容,但不回退代码更改。
mongfayi
@mongfayi
⬇ 1
★ 4
main
安装
dsh plugin --profile web add github:mongfayi/dsh-recall
需要可复现安装时,可在仓库后追加 #commit 固定提交。
DSH Web UI 消息撤回插件:用每条用户消息旁的撤销按钮,持久移除该轮及之后内容,但不回退代码更改。
该插件未提供要点说明,请参考仓库 README。
dsh-plugin
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/mongfayi/dsh-recall |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 4 |
| 最近推送 | 2026-08-14 |
| 收录日期 | 2026-09-19 |
| 分类 | 会话与消息 |
事实信息来自公开插件目录快照(2026-10-03),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-recall
对话撤回(recall)插件:把一条消息**及其之后的所有内容**从对话中移除——界面不再显示,模型也不再见——但**绝不回退任何代码/文件改动**。撤回以追加日志(append-only)中的 `session/recall` 墓碑事件持久化,重启后依然生效。
## 用法
会话空闲时:
- **用户消息**右侧的撤销按钮 → 确认 → 撤回该轮对话及其后的全部内容(你的提问与智能体的回复一并移除),**该条用户消息的文本会恢复到输入框**,可修改后重新发送(与 opencode 的撤回行为一致)。
- 撤回位置显示「已撤回的消息」提示。
智能体运行中撤销按钮禁用(先停止当前回合)。
## 实现
- **宿主端**(`lib/index.js`):`POST /recall` 路由(`{sessionId, messageId}` 或 `{sessionId, boundary}`),校验后调用 `session.recall(boundary)` 并 flush。错误码:`session-not-found` / `subagent-owned` / `agent-busy` / `message-not-found` / `recall-rejected`。
- **浏览器端**(`lib/client.js`):以 `priority: -1` 覆盖 `conversation.chat.node` 的 `user` keyed 渲染器,在每条用户消息旁渲染撤销按钮(点击以该用户消息 seq 为边界撤回),并复刻框架的用户气泡外观;「已撤回的消息」提示节点通过 `session/recall` 事件定义注册到 `recall` key。撤回提交成功后,被撤回用户消息的文本经 `conversation.input.for(scope).setDraft()` 写回输入框(仅文本,图片不恢复)。
- **依赖的核心协议**(无插件接缝,需 dsh 运行时内置):`dsh-session` 的 `session/recall` 事件类型 + surface 折叠召回支持;`dsh-client-runtime` 对已撤回事件的窗口过滤。
## 开发
```bash
node test/smoke-host.mjs # 宿主路由:成功/拒绝路径
node test/smoke-client.mjs # 客户端注册、定义、文案、确认门
```
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。