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

会话彻底删除 Sakurasign/dsh-session-delete

DeepSeek 客户端
Sakurasign3 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

彻底清除会话及其子会话的日志、缓存与记账

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Sakurasign/dsh-session-delete.git

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 26 处,展示前 23 条)
  • 发起网络请求
    client.js:93
    const response = await fetch(apiUrl(), {
  • 读取本地文件
    bin/dsh-session-delete.js:66
    if (!existsSync(sessionsDir)) return []
  • 读取本地文件
    bin/dsh-session-delete.js:67
    return readdirSync(sessionsDir, { withFileTypes: true })
  • 读取本地文件
    bin/dsh-session-delete.js:90
    if (existsSync(candidate) && statSync(candidate).isDirectory()) dirs.push(candidate)
  • 读取本地文件
    bin/dsh-session-delete.js:90
    if (existsSync(candidate) && statSync(candidate).isDirectory()) dirs.push(candidate)
  • 读取本地文件
    bin/dsh-session-delete.js:98
    .filter((path) => existsSync(path))
  • 读取本地文件
    bin/dsh-session-delete.js:102
    if (existsSync(workspacePath)) {
  • 写入本地文件
    bin/dsh-session-delete.js:126
    mkdirSync(trash, { recursive: true })
  • 写入本地文件
    bin/dsh-session-delete.js:127
    if (workspace) copyFileSync(workspacePath, join(trash, 'workspace.json.bak'))
  • 删除本地文件递归
    bin/dsh-session-delete.js:129
    for (const dir of dirs) rmSync(dir, { recursive: true, force: true })
  • 删除本地文件
    bin/dsh-session-delete.js:130
    for (const cache of caches) rmSync(cache, { force: true })
  • 删除本地文件递归
    bin/dsh-session-delete.js:135
    if (readdirSync(project.dir).length === 0) rmSync(project.dir, { recursive: true, force: true })
  • 写入本地文件
    bin/dsh-session-delete.js:151
    writeFileSync(workspacePath, JSON.stringify(workspace, null, 2), 'utf8')
  • 写入本地文件
    bin/dsh-session-delete.js:154
    writeFileSync(join(trash, 'manifest.json'), JSON.stringify({ ...plan, applied: true, at: new Date().toISOString() }, null, 2), 'utf8')
  • 读取本地文件
    lib/delete.js:121
    if (!target || !existsSync(target)) return false
  • 读取本地文件
    lib/delete.js:123
    try { info = statSync(target) } catch { return false }
  • 删除本地文件递归
    lib/delete.js:125
    rmSync(target, { recursive: true, force: true, maxRetries: 3, retryDelay: 60 })
  • 读取本地文件
    lib/delete.js:240
    if (existsSync(candidate)) {
  • 删除本地文件
    lib/delete.js:241
    rmSync(candidate, { force: true })
  • 读取本地文件
    lib/delete.js:253
    if (existsSync(root)) {
  • 读取本地文件
    lib/delete.js:254
    for (const project of readdirSync(root, { withFileTypes: true })) {
  • 读取本地文件
    lib/delete.js:258
    if (readdirSync(projectPath).length === 0) rmSync(projectPath, { recursive: true, force: true })
  • 删除本地文件递归
    lib/delete.js:258
    if (readdirSync(projectPath).length === 0) rmSync(projectPath, { recursive: true, force: true })
扫描于 2026/11/6(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

DeepSeek Harness 插件:彻底删除会话(含子智能体会话)的日志目录、投影缓存与工作区记账。

README

由 DeepSeek 最新模型翻译生成
dsh-session-delete 给 DeepSeek Harness(DSH)的侧栏会话行加一条真正管用的「删除会话」。确认后它会把该会话——连同它派生出的所有子智能体会话——的日志目录、投影缓存,以及工作区里的会话记账一起清掉,而不是只在界面上隐藏。 DSH 自带的「归档」只是把会话从列表里挪走,~/.dsh/sessions/ 里的记录原封不动。想在本地真正抹掉一个会话时,缺的就是这个动作。 会话行菜单里的「删除会话」 目录 - 它到底删什么 - 它刻意不碰什么 - 安装 - 使用 - 命令行工具 - 工作原理 - 兼容性 - 排错 - 开发 - 许可 它到底删什么 一次删除只动三处,全部位于 $DSH_HOME(默认 ~/.dsh)内: | 位置 | 内容 | | sessions/<项目键>/<会话段>/ | 该会话(含全部子会话)的日志目录,通常只有一个 session.v4.jsonl.zstd | | storages/session_projcache/sessions/<id>.json | 该会话的投影缓存,含 session- 前缀与无前缀两种历史拼写 | | storages/workspace.json | 把 id 从 sessionIds、archivedSessionIds、pinnedSessionIds 里摘掉 |
展开完整文档(README 剩余 1 节)
dsh-session-delete

给 DeepSeek Harness(DSH)的侧栏会话行加一条真正管用的「删除会话」。确认后它会把该会话——连同它派生出的所有子智能体会话——的日志目录、投影缓存,以及工作区里的会话记账一起清掉,而不是只在界面上隐藏。

DSH 自带的「归档」只是把会话从列表里挪走,~/.dsh/sessions/ 里的记录原封不动。想在本地真正抹掉一个会话时,缺的就是这个动作。

会话行菜单里的「删除会话」

目录

- 它到底删什么
- 它刻意不碰什么
- 安装
- 使用
- 命令行工具
- 工作原理
- 兼容性
- 排错
- 开发
- 许可

它到底删什么

一次删除只动三处,全部位于 $DSH_HOME(默认 ~/.dsh)内:

| 位置 | 内容 |
| sessions/<项目键>/<会话段>/ | 该会话(含全部子会话)的日志目录,通常只有一个 session.v4.jsonl.zstd |
| storages/session_projcache/sessions/<id>.json | 该会话的投影缓存,含 session- 前缀与无前缀两种历史拼写 |
| storages/workspace.json | 把 id 从 sessionIds、archivedSessionIds、pinnedSessionIds 里摘掉 |

子会话的收集依据是持久化头与活跃会话头上的 parentSession 字段,与界面里的折叠状态无关。删除顺序是「先停活 → 再删盘 → 最后摘记账」:反过来的话,正在运行的回合会在删除过程中把状态写回磁盘。

它刻意不碰什么

- 工作区目录本身及其中的任何文件。你的代码、笔记、构建产物一个字节都不会动。
- attachments/ 内容寻址仓库。同一张图可能被别的会话引用,删掉会连带弄坏别人。
- 其他会话的任何数据。
- workspace.json 里的工作区记录。工作区还在,只是少了这个会话。

安装

从 GitHub 安装(推荐)

在 DSH 的侧栏打开 插件页,选择从 Git 地址安装:

https://github.com/DreamStars168/dsh-session-delete.git

或者直接写进 profile 的 package.json:

{
"dependencies": {
"dsh-session-delete": "github:DreamStars168/dsh-session-delete"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-session-delete"]
}
}
}

从源码目录安装(本地开发)

git clone https://github.com/DreamStars168/dsh-session-delete.git
cd dsh-session-delete

然后把绝对路径写进 profile:

{ "dependencies": { "dsh-session-delete": "file:/绝对路径/dsh-session-delete" } }

生效

- 客户端(client.js)刷新页面即可,dsh-client-hmr 会轮询到变更。
- 宿主侧(lib/)改的是服务装配,需要重启 DSH。

使用

1. 在侧栏找到目标会话。
2. 点该行的 「…」 按钮,或直接在行上 右键 —— 右键弹出的是同一个原生菜单。
3. 选 删除会话。
4. 确认弹窗里点 删除。

新条目排在「复制 Session ID」之后的独立分区里。

如果删的是你当前正在看的会话,主视图会自动在原工作区新开一个空会话,聊天框不会挂在已被删掉的记录上。

清理过程中若有单项失败(比如某个缓存文件被占用),会话仍然会被移除,界面提示「会话记录已移除,但有 N 项未能清理」,失败的条目打在控制台里,方便逐项排查。

命令行工具

宿主没启动时——比如你想在启动前先把某个会话清掉——用附带的 CLI:

预演:只列路径与记账命中,不改任何文件
node bin/dsh-session-delete.js session-abc123

真删(先把 workspace.json 备份到 _trash/session-delete-<时间戳>/)
node bin/dsh-session-delete.js session-abc123 --apply

只删磁盘、保留 workspace.json 里的记账
node bin/dsh-session-delete.js session-abc123 --apply --keep-workspace

列出磁盘上所有会话目录
node bin/dsh-session-delete.js --list

选项:--dsh-home <dir> 指定主目录,--json 机器可读输出,-h 帮助。

预演是默认行为,这很重要:--apply 之前的每一步都能反悔,加上之后不能。

工作原理

插件由两半组成,都从 package.json 的 dsh 字段声明:

Host 半侧(lib/)注册一个具名 HTTP 路由 POST /session-delete/api,请求体是 { "op": "delete", "sessionId": "…" }。删盘逻辑不依赖任何官方 npm 包——所有宿主能力都经 Cordis 的服务对象软取,取不到就走纯文件系统兜底,因此 profile 里解析不到官方 node_modules 也能跑。

路由入口有两道闸:只收 POST;只认同源与回环请求(对端回环,或 Host 指向 localhost 且 Origin 缺省 / 为 null / 为 app: / 同源)。其余一律 403,避免任意网页用 CSRF 触发删盘。

浏览器半侧(client.js)往 sidebar.workspaces.session.menu.item 槽位注册菜单项,往 shell.overlay 注册确认弹窗。右键菜单不另造副本——它找到该行行尾的省略号按钮,合成一次 click(),让宿主自己的 Menu 组件展开。条目、快捷键、分隔线、权限判断全部是原生那份,不会随宿主升级而漂移。

client.js 菜单项 + 确认弹窗 + 右键转发 └─ POST /session-delete/api └─ lib/server.js HTTP 闸门与错误映射 └─ lib/delete.js 停活 → 删盘 → 摘记账 └─ lib/paths.js 路径编码(与官方持久化后端同源)

兼容性

- Node.js ≥ 18(用到 node:test、fs.rmSync)。
- DSH ≥ 0.2.0。宿主侧只依赖 webServer 服务;sessionPersistence、sessions、agents、workspaceRegistry 全部软取,缺了不会让路由挂掉,只是对应步骤跳过。
- 桌面端与 Web 端都可用。桌面端走 app: 来源判定。

路径编码(encodeSegment / projectKey)是从官方持久化后端同名函数推导的同源实现,不是 import —— 这样插件在没有官方 node_modules 的环境里也能算回同一个目录。宿主升级若改变了命名规则,插件会在拿不到 locate() 时算错目录;此时优先依赖后端 locate(),或提 issue。

排错

菜单里没有「删除会话」

先确认插件真的加载了:侧栏 插件页里 dsh-session-delete 应为启用状态。若刚改过 lib/,需要重启 DSH,仅刷新页面不够。

点了删除,提示失败

打开开发者工具看 Network 面板里 /session-delete/api 的响应体,errors 数组会逐条列出失败的路径与原因。常见原因是文件被另一个进程占用——关掉那个进程后重试。

删除后会话又出现了

几乎都是宿主进程里还留着活跃句柄,重启 DSH 后应消失。若仍然存在,说明记账没摘干净:用 CLI 的 --list 确认磁盘状态,再对残留 id 跑一次 --apply。

想先看看会删什么

永远先跑不带 --apply 的 CLI。它是纯预演,一个字节都不改。

开发

npm run check # 语法 + 清单自检 + 隐私/密钥扫描
npm test # 46 项单测,全部在临时目录里跑

测试分四组:路径编码(test/paths.test.js)、删除主流程(test/delete.test.js)、HTTP 闸门(test/server.test.js)、CLI(test/cli.test.js)。所有用例都在 mkdtempSync 造出的临时目录里跑,不会碰你真实的 ~/.dsh。

npm run check 里带一道隐私扫描:本机用户目录绝对路径、API Key、私钥、GitHub token、AWS Access Key 命中即失败。提交前跑一次,能挡住绝大多数误传。

许可

MIT
预览分享卡片长什么样 ↓Sakurasign/dsh-session-delete
分享 · DeepSeek Harness Hub
Sakurasign/dsh-session-delete

彻底清除会话及其子会话的日志、缓存与记账

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