把会话移入本机回收站,误删也能一键恢复
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add hakulat2023/dsh-session-delete该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 22 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 会话移入本机回收站
- 一键恢复误删会话
- 侧边栏菜单项
DeepSeek Harness 的会话删除:可恢复的回收站式删除、侧边栏菜单项,以及 session_delete / session_restore 智能体工具。
README
由 DeepSeek 最新模型翻译生成dsh-session-delete
给 DeepSeek Harness 补上会话删除。
DSH 只能「存档」——存档只是隐藏,并没有办法真正摆脱一个会话。这个插件补上这个缺失的动作: 会话行 “…” 菜单里的 删除会话、宿主命名空间 remote.sessionDelete,以及 session_delete / session_restore 两个 Agent 工具。
删除刻意做成可恢复的:会话日志被移动到本机回收站目录,误删的代价是一条 mv,而不是一段对话。
- 功能
- 要求
- 安装
- 使用
- 配置
- 语义与边界
- 开发
- 已验证的行为
- License
功能
一次删除做四件事:
1. 准入检查。 用存档同一套 workspace/session-activity 瀑布询问该会话的状态。正在运行的工作在没有停止授权时会被拒绝;授权后由 workspace/session-stop 取消该回合,插件在预算内等待会话空闲。仍驻留在宿主进程内存中的会话会在任何副作用之前被拒绝,只有再次显式确认才会删除。
2. 移动日志。
展开完整文档(README 剩余 1 节)
dsh-session-delete
给 DeepSeek Harness 补上会话删除。
DSH 只能「存档」——存档只是隐藏,并没有办法真正摆脱一个会话。这个插件补上这个缺失的动作: 会话行 “…” 菜单里的 删除会话、宿主命名空间 remote.sessionDelete,以及 session_delete / session_restore 两个 Agent 工具。
删除刻意做成可恢复的:会话日志被移动到本机回收站目录,误删的代价是一条 mv,而不是一段对话。
- 功能
- 要求
- 安装
- 使用
- 配置
- 语义与边界
- 开发
- 已验证的行为
- License
功能
一次删除做四件事:
1. 准入检查。 用存档同一套 workspace/session-activity 瀑布询问该会话的状态。正在运行的工作在没有停止授权时会被拒绝;授权后由 workspace/session-stop 取消该回合,插件在预算内等待会话空闲。仍驻留在宿主进程内存中的会话会在任何副作用之前被拒绝,只有再次显式确认才会删除。
2. 移动日志。 把会话自己的目录移动(同一文件系统内是原子 rename,跨设备退化为复制+删除) 到 $DSH_HOME/session-trash/<sessionId>-<时间戳>/,并在同级写入 trash.json:会话 id、标题、 cwd、原始目录、字节数、文件数、删除时间。
3. 清理登记。 从每个工作区的 sessionIds 账户中摘除该会话,清掉全局存档集合与置顶集合中的条目,并删除投影缓存记录。
4. 通知界面。 发出 api-session/removed,所有已连接的浏览器立即移除该行。
会话目录优先通过持久化后端自己的 locate(header) 定位,后端换布局时插件无需跟着改;没有 locate 时回退到文档化的 sessions/<projectKey(cwd)>/<encodeSegment(id)> 布局。
要求
| DeepSeek Harness | 0.2.x(针对 0.2.0-rc.2 开发与验证) |
| Node.js | >= 20 |
| 表面 | 任何挂载了会话存储、JSONL 持久化后端、工作区注册表与 Web 客户端的 profile(dsh-web-app / 桌面版) |
插件没有任何 npm 依赖、没有构建步骤:浏览器半边是按 Web 客户端本就消费的
window.__ModuleLoader__.load({ id, factory }) 形状手写的模块,宿主半边除了 node: 不导入任何东西。
原因见 docs/plugin-packaging.md。
安装
这个包是一个 DSH bundle:package.json 声明 dsh.bundle.patch 与 dsh.client, cordis.patch.yml 插入宿主行。
本地目录 plugin_manager install_bundle target: /absolute/path/to/dsh-session-delete
或从 GitHub 按 tag 安装(自带 CLI)
dsh plugin --profile desktop add github:hakulat2023/dsh-session-delete#v0.1.0
或发布到 registry 之后
dsh plugin --profile desktop add dsh-session-delete
被挂载的 bundle 补丁只有一行:
- insert:
- id: session-delete
name: dsh-session-delete
安装后请重启一次应用。宿主半边是 Node ESM 模块,运行中的进程保留它已经加载的模块代 (DSH 自身的限制:被替换的包需要重启才能加载新的 JavaScript);浏览器半边从磁盘读取,只需刷新页面。
使用
界面
会话行 → “…” → 删除会话 → 确认。
- 运行中的会话会先被停止:首次确认就已经是这个意图。
- 仍然驻留在内存中(通常是你正打开的那个)的会话会被明确提示,需要第二次确认;第一次点击不产生任何副作用。
- 成功后该行在所有地方消失,提示里会给出回收站目录;日志本就不存在的会话会明确说明,而不会谎称已移动。
Agent 工具
| 工具 | 参数 | 作用 |
| session_delete | session_id(必填)、stop_activity(默认 true)、force(默认 false)、purge(默认 false) | 把会话移入回收站;purge: true 直接永久删除字节。 |
| session_restore | session_id(必填) | 把回收站里的会话目录放回原位。 |
Remote 命名空间
remote.sessionDelete.delete({ sessionId, stopActivity?, force?, purge? }) 与
remote.sessionDelete.restore({ sessionId }) —— 界面弹窗用的就是这两个方法。
手动恢复
回收站里的会话就是一个普通目录:
cat ~/.dsh/session-trash/<sessionId>-/trash.json # originalDirectory、title、cwd、大小
mv ~/.dsh/session-trash/<sessionId>-*/ <originalDirectory> # 或者用 session_restore
工作区注册表会在下一次组合时重新索引已存储的 header(重载应用,或下次启动),届时恢复的会话会重新出现在列表里。
配置
| 字段 | 默认值 | 含义 |
| trashRoot | $DSH_HOME/session-trash | 会话目录被移动到的位置;不存在时按需创建。DSH_HOME 未设置时回退到持久化根目录的父目录。 |
- id: session-delete
name: dsh-session-delete
config:
trashRoot: /Volumes/big/dsh-session-trash
语义与边界
- 删除是移动,不是抹除。 在 purge 之前,字节仍在 trashRoot 下;回收站不会自动清理。
- 驻留内存的会话无法被第三方释放。 会话存储自己持有写句柄且没有删除动词,因此删除一个仍被存活 Agent 持有的会话会破坏该 Agent 的追加写入。插件选择拒绝,只有显式 force 才继续 (日志消失,内存副本随之失效)。
- 停止是有预算的。 等待运行中的工作结束的预算为 15 秒,并尊重调用的 AbortSignal;工作超出预算时以 session/delete-active 失败,且不会移动任何东西。
- 只动会话自己的目录。 附件与 spill 是内容寻址的全局存储,不做回收,可能留下孤儿文件。
- 搜索索引无需清理。 当前组合里的会话查询索引是内存索引,会自动丢弃消失的会话。
- Subagent 会话也是会话。 可以用同一个工具删除,界面通过同一个事件移除它。
Remote 命名空间会暴露这些失败码:session/not-found、session/delete-live、 session/delete-active、session/delete-failed、session/restore-missing、 session/restore-conflict。
开发
node test/verify.mjs # 或 npm test
自测不需要 DSH 运行时、不需要网络、不需要任何依赖:它搭一个临时会话根目录,用假的宿主适配器驱动真实的回收站逻辑,用假的 Cordis context 挂载真实的插件主体,并检查最容易出错的地方——
- Typert 清单的形状以及严格编解码器的边界校验;
- Gateway 的兜底(「SRC」)发现契约:原型上的 Remote 标记 + 由方法签名推导的参数名;
- 回收站、恢复、永久删除、目录缺失、强制、拒绝、中断各分支;
- 每个工具返回值都是无损的纯 JSON(宿主会拒绝其它东西);
- 同一次页面内重复挂载:用真实的浏览器 bundle,对一个「重复注册即抛错」的 locale 注册表挂载两次 (一次有 teardown、一次没有),必须既不报错也不重复注册;
- 宿主行被挂载两次时必须保留第一个服务,而不是抛错。
目录结构:
| 路径 | 作用 |
| lib/session-trash.js | 注入式宿主适配器之上的回收站语义(可单测) |
| lib/index.js | 宿主插件:sessionDelete 服务、它的 Typert 绑定、两个 Agent 工具 |
| lib/typert.host.js | 手写 Typert 清单(严格编解码;由 typert-loader 注册) |
| lib/client.js | 浏览器半边:菜单项、确认弹窗、remote.sessionDelete 调用 |
| cordis.patch.yml | bundle 补丁:插入宿主行 |
| test/verify.mjs | 上面的自测 |
| docs/ | 架构与打包笔记 |
已验证的行为
macOS 桌面版、DSH 0.2.0-rc.2、profile desktop,针对为测试专门创建的一次性会话:
| 步骤 | 观察结果 |
| session_delete | 目录移动到 ~/.dsh/session-trash/<id>-<时间戳>/,含 trash.json(bytes: 13184、files: 2、move: "renamed");原目录消失;session_projcache 无记录;workspace.json 的 sessionIds 中不含该 id |
| session_restore | 日志回到原始目录 |
| session_delete(purge: true) | 回收站条目与日志都消失;零残留 |
| 客户端 | 槽位检查显示 sidebar.workspaces.session.menu.item 的占用者中含 session-delete(order 500, active) |
社区插件
DeepSeek Harness 目前不接受外部 PR, 并明确鼓励插件放在各自的仓库里。因此本仓库带上 dsh-plugin topic 以便被发现;针对这个插件的 issue 与 PR 欢迎提到本仓库。
License
MIT © 2026 hakulat2023预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
hakulat2023/dsh-session-delete
把会话移入本机回收站,误删也能一键恢复
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目