dsh-session-janitor:DSH 会话记录与归档缓存清理

前言

长期使用 DeepSeek Harness(DSH)时,~/.dsh 下会积累大量会话正文、列表缓存和归档条目。直接在文件系统里删目录,一旦误删或删了仍在使用的会话,恢复成本高。手动筛「哪些可以删」也费时。

dsh-session-janitor 是面向上述场景的第三方 DSH 插件:在侧边栏提供独立页面,列出会话记录与归档缓存,删除先进入回收站、可恢复,并对近期仍在写入的会话做拦截。下面介绍其定位、能力与安装方式。

这是什么

dsh-session-janitor(仓库 guokecloud/dsh-session-janitor)由 guokecloud 维护,在 SkillHub 等社区目录中归类为记忆类插件。一句话:DSH 会话清理工具,流程为列表 → 勾选 → 移入回收站 → 可恢复 → 确认后彻底清空;删除不会立刻从磁盘抹掉,先移到 ~/.dsh/session-trash/<时间戳>/,误操作可以救回。

插件版通过 Cordis patch 注册同源 HTTP 路由与侧边栏入口;也可不装插件、单独跑本地服务使用同一套界面逻辑。

核心功能

会话记录

在界面中勾选会话后移入回收站;支持「只选 30 天前」一键勾选老会话,以及「全选 / 清空选择」。删除会话时,会同时将 storages/session_projcache/sessions/<id>.json 移入回收站,恢复时一并还原,避免出现列表缓存还在、正文已删的孤儿条目。

归档缓存

可清理 storages/session_projcache_archive_manager_v2 下的历史归档条目(sessions/*.json)。

回收站

勾选后可恢复到原路径;「彻底清空回收站」为不可恢复操作。顶部还可「打开回收站文件夹」「打开会话目录」。

使用中保护

会话「最后活动时间」取 session.v4.jsonl.zstd 的 mtime;最近 10 分钟内被写过的会话在界面标黄,默认服务端拒绝删除,勾选顶部「强制」开关后才放行。判定依赖写入时间而非文件锁;正在写入的会话还有 rename 失败等额外保护。

安全与监听范围

服务只监听 127.0.0.1;请求校验 Host 须为本机回环、Origin 须同源、Sec-Fetch-Site 不能为 cross-site,否则返回 403。路径均做白名单校验,禁止 .. 与目录穿越。

明确不处理的范围

只处理会话与归档缓存;不动 schedule.json、workspace.json、用量账本等运行状态。

数据目录与 HTTP 接口

默认数据根为 ~/.dsh,测试可用环境变量 DSCC_ROOT 覆盖:

sessions/<项目>/<会话>/session.v4.jsonl.zstd
storages/session_projcache/sessions/<sessionId>.json
storages/session_projcache_archive_manager_v2/sessions/*.json
session-trash/<时间戳>/manifest.json

插件版挂在 DSH GUI 同源端口,独立版默认 8788。主要接口:

GET  /dsh-session-janitor/
GET  /dsh-session-janitor/api/ping
GET  /dsh-session-janitor/api/list
POST /dsh-session-janitor/api/trash
POST /dsh-session-janitor/api/restore
POST /dsh-session-janitor/api/purge
POST /dsh-session-janitor/api/reveal

安装与启用

插件版(推荐,需已安装 DSH)

在插件仓库目录中执行安装脚本(会先备份 profile 的 package.json):

node install-plugin.mjs

上面命令只打印将要执行的操作。确认无误后:

node install-plugin.mjs --apply

安装依赖 profile 的 dsh.profile.bundles 通过 link: 指向本目录。重启 DSH 后生效:左侧边栏出现「会话清理」入口,点开为完整界面(独立页面,不占当前会话)。也可访问 http://127.0.0.1:<DSH GUI 端口>/dsh-session-janitor/。

package.json 要求 Node ^22.19.0 || >=24.0.0,DSH ^0.2.0-rc.2 || ^0.2.1-rc.2,peer 依赖 @deepseek-ai/cordis ^4.0.1。当前包版本为 0.2.4,许可 MIT。

卸载:从 profile package.json 的 dsh.profile.bundles 移除 dsh-session-janitor,执行 pnpm remove dsh-session-janitor(或用备份 package.json.bak-<时间戳> 覆盖),再重启 DSH。

独立版(无需重启 DSH)

双击目录内 启动会话清理.cmd,浏览器打开 http://127.0.0.1:8788/dsh-session-janitor/;关闭对应最小化窗口即停止服务。端口被占用时可手动指定:

node standalone.mjs --port 8899 --open

典型用法

  1. 打开侧边栏「会话清理」或上述独立版 / 同源 URL。
  2. 在「会话记录」中勾选要清理的项,或点「只选 30 天前」再微调;标黄项表示近期有写入,默认不可删,除非开启「强制」。
  3. 执行移入回收站;需要时在「回收站」恢复,或「彻底清空回收站」永久删除。
  4. 若有归档膨胀,在「归档缓存」区块勾选后同样走回收站流程。
  5. 顶部「刷新」更新列表;「打开会话目录」「打开回收站文件夹」便于对照磁盘内容。

适用场景与注意

适合需要定期整理 ~/.dsh 会话与归档、又希望删除可回滚的 DSH 用户。插件版改 profile 后必须重启 DSH 才会挂上路由;独立版即开即用。

插件以当前 DSH 进程权限读写本机 ~/.dsh(或 DSCC_ROOT)。安装前请自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境与合规要求。DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的是第三方插件,非官方应用商店条目。

链接

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜