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

会话回收站 jingmei2/dsh-session-bin

DeepSeek Harness
jingmei215 天前有提交已提供中文文档扫描:含敏感能力

物理删除会话日志,可撤销恢复或彻底清空

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 15 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 18 条)
  • 发起网络请求
    client.js:221
    response = await fetch(API, {
  • 读取本地文件
    core.js:55
    return (await stat(path)).isDirectory();
  • 读取本地文件
    core.js:63
    await stat(path);
  • 读取本地文件
    core.js:75
    projects = await readdir(sessionsRoot, { withFileTypes: true });
  • 读取本地文件
    core.js:94
    entries = await readdir(path, { withFileTypes: true });
  • 读取本地文件
    core.js:103
    total += (await stat(child)).size;
  • 写入本地文件
    core.js:143
    await mkdir(dirname(destination), { recursive: true });
  • 写入本地文件
    core.js:145
    await rename(source, destination);
  • 删除本地文件递归
    core.js:150
    await rm(source, { recursive: true, force: true });
  • 写入本地文件
    core.js:157
    await writeFile(temp, `${JSON.stringify(meta, null, 2)}\n`, 'utf8');
  • 写入本地文件
    core.js:158
    await rename(temp, target);
  • 读取本地文件
    core.js:163
    const raw = await readFile(join(entryDir, 'meta.json'), 'utf8');
  • 写入本地文件
    core.js:306
    await mkdir(dataDir, { recursive: true });
  • 删除本地文件
    core.js:361
    await rm(join(roots.projectCacheRoot, `${id}.json`), { force: true }).catch(() => {});
  • 删除本地文件递归
    core.js:390
    await rm(entryDir, { recursive: true, force: true }).catch(() => {});
  • 删除本地文件递归
    core.js:538
    await rm(entryDir, { recursive: true, force: true });
  • 删除本地文件递归
    core.js:549
    await rm(entryDir, { recursive: true, force: true });
  • 删除本地文件递归
    core.js:557
    await rm(join(roots.trashRoot, entry.id), { recursive: true, force: true });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-workspace@deepseek-ai/dsh-host-webserver
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

通过可撤销的回收站真正删除 DeepSeek Harness 会话:移入回收站、恢复或彻底清除。

README

由 DeepSeek 最新模型翻译生成
会话回收站(dsh-session-bin) 真正删除 DeepSeek Harness 会话的日志文件,并提供一个可以撤销的回收站。 安装 dsh plugin --profile <profile> add @jingmei2/dsh-session-bin 装完重启应用(Host 半改动需要重启,Client 半刷新页面即可)。也可以在「插件市场」里按包名 @jingmei2/dsh-session-bin 搜索安装。 DSH 本身只支持「归档」:会话行从列表里消失,但 ~/.dsh/sessions 下的日志原样保留。 这个插件把「物理删除」补上,并且删除是可撤销的: | 操作 | 效果 | | 会话行 … 菜单 → 彻底删除… | 会话目录(含子代理会话)移入回收站,会话行从工作区列表隐藏 | | 设置 → 会话回收站 → 恢复 | 目录移回原位置,会话回到原工作区、原位置 | | 设置 → 会话回收站 → 批量清理 | 按工作区分组勾选,一次移入回收站多个会话;正在生成回复的会被跳过并列出原因 | | 设置 → 会话回收站 → 彻底删除 / 清空回收站 | 从磁盘上真正删除,不可恢复 | 「移入回收站」用的是宿主自己的归档通道(workspaceRegistry.archiveSession),不是「从工作区摘除」。
展开完整文档(README 剩余 1 节)
会话回收站(dsh-session-bin)

真正删除 DeepSeek Harness 会话的日志文件,并提供一个可以撤销的回收站。

安装

dsh plugin --profile <profile> add @jingmei2/dsh-session-bin

装完重启应用(Host 半改动需要重启,Client 半刷新页面即可)。也可以在「插件市场」里按包名 @jingmei2/dsh-session-bin 搜索安装。

DSH 本身只支持「归档」:会话行从列表里消失,但 ~/.dsh/sessions 下的日志原样保留。
这个插件把「物理删除」补上,并且删除是可撤销的:

| 操作 | 效果 |
| 会话行 … 菜单 → 彻底删除… | 会话目录(含子代理会话)移入回收站,会话行从工作区列表隐藏 |
| 设置 → 会话回收站 → 恢复 | 目录移回原位置,会话回到原工作区、原位置 |
| 设置 → 会话回收站 → 批量清理 | 按工作区分组勾选,一次移入回收站多个会话;正在生成回复的会被跳过并列出原因 |
| 设置 → 会话回收站 → 彻底删除 / 清空回收站 | 从磁盘上真正删除,不可恢复 |

「移入回收站」用的是宿主自己的归档通道(workspaceRegistry.archiveSession),不是「从工作区摘除」。
这一点很关键:DSH 不会因为切换会话就释放它,被摘除的会话仍然活在内存里,于是会掉进列表底部的 「未分组」 分组里显示成一条删不掉的行。归档只把会话从默认视图里藏起来,工作区归属原样保留,所以行会干净地消失,恢复时也直接回到原来的位置。

界面

菜单行直接复用宿主的 MenuItemButton(经模块加载器的基线模块表 require('@deepseek-ai/dsh-client-ui-primitives') 取得),因此高度、内边距、图标 14px、悬停与键盘行为都和「复制 Session ID」等自带行一致;取不到该模块时退回同语义的 role="menuitem" 按钮。设置页与确认弹窗按 --dsw-alias- 主题令牌自绘。

安全边界

- 只有「正在生成回复」的会话会被拒绝:这一刻还有写入方(agent 正在 running),移动日志会让它的后续写入落到旧路径,所以插件直接报错而不是硬删。批量清理里这些会话会被跳过,并在结果里列出原因,其余照常删除。
- 仅仅还开着标签页不算冲突:DSH 不会因为切换会话就释放它,「加载中」几乎对任何访问过的会话都成立,所以删除只警告、不拒绝。含正在运行的子代理会话时同样整条拒绝。
- 删除是先归档、再移动:先让宿主把会话从列表里藏起来,再把目录整体 rename 到 ~/.dsh/session-trash/<条目>/data/(同一文件系统内是原子的)。任何一步失败都会自动回滚——包括撤销归档——不会出现「列表没了、文件还在别处」的半成品。
- 归档/置顶状态会被记录,恢复时还原。
- 同一个会话重复删除不会报「日志不存在」:它会明确告诉你会话已经在回收站里。
- 回收站条目元数据损坏时,列表会标出来,且只允许「彻底删除」,不会误恢复半份文件。

存储布局

~/.dsh/sessions/--<cwd-slug>--/session-<uuid>/ # 原始位置 ~/.dsh/session-trash/ 20261019-165233-a1b2c3/ meta.json # 会话、工作区、时间、字节数、子会话清单 data/--<cwd-slug>--/session-<uuid>/ # 被移动的日志

卸载插件不会自动清空回收站:~/.dsh/session-trash 需要手动删除。

Agent 工具

插件同时注册 session_trash 工具,参数 action:list / trash / restore / purge / empty,与界面走同一套宿主逻辑。action=trash 可传 sessionIds 数组做批量删除(最多 200 个),返回逐条结果 { results, trashed, skipped },单个失败不影响其余。

开发与验证

node --test test/.test.mjs

- test/core.test.mjs:文件层逻辑(移动、回滚、恢复、批量、冲突、损坏条目),不依赖 Cordis。
- test/http.test.mjs:用 stub context 真实调用 apply(),覆盖路由/回环围栏/op 分发/工具 action→op 映射。
- test/client.test.mjs:stub 模块加载器与 React,验证三个注册项、首次渲染、批量页的过滤。

Host 半改动需要重启应用;Client 半改动刷新页面即可。

许可证

MIT © magi
预览分享卡片长什么样 ↓jingmei2/dsh-session-bin
分享 · DeepSeek Harness Hub
jingmei2/dsh-session-bin

物理删除会话日志,可撤销恢复或彻底清空

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部