dsh-space-optimizer:侧栏空间账本与可选回收

前言

DeepSeek Harness(DSH)用本地磁盘保存会话日志、投影缓存、工具输出落盘和附件。任务一多,很难回答两个问题:每个任务各占多少字节,以及哪些文件删了不会打坏用量统计和上下文重算。手动翻 ~/.dsh 和系统临时目录既费事,也容易误删仍在被引用的 spill 路径。

下面介绍的 dsh-space-optimizer(维护者 wojiao42)在 Web 侧栏底部提供 「优化空间」 入口,打开后是一份只读扫描的空间账本;确认勾选后才回收,且只处理无主垃圾与任务级可优化附属产物,绝不裁剪会话日志。

这是什么

dsh-space-optimizer 是 DSH 组合包插件:Host 半侧提供本地账本与回收 API,客户端注入 @deepseek-ai/dsh-client-ui-sidebar,在 sidebar.footer.action 与 token 费用徽标同一排挂载按钮。

一句话定位:Per-task disk-space ledger for DeepSeek Harness——看清每个任务占用的磁盘、其中多少可优化、以及不属于任何任务的无主垃圾;核对后再逐项勾选确认。

当前版本 1.0.5(见仓库 package.json),许可证 MIT。社区目录页:skillhub.cn/plugins/wojiao42/dsh-space-optimizer;源码:github.com/wojiao42/dsh-space-optimizer。

核心功能

空间账本

点 「优化空间」 后,面板顶部汇总类似:

占用 5.0 MB · 可优化 3.0 MB · 无主垃圾 8.3 MB · 已释放 11.7 MB

任务区按会话一行列出(当前任务置顶并标注)。主要列含义如下:

列 含义
占用 该任务在磁盘上独占的字节(日志 + 投影缓存 + 可优化项)
日志 ~/.dsh/sessions/<项目>/<会话>/session.v4.jsonl.zstd 当前 generation
临时暂存 落盘的超大工具输出(%TEMP%\dsh-spill-<id>\session-<hash>\)
可优化 临时暂存 + 被取代的旧 generation
引用附件 该任务引用的附件;共享的会标出,合计里只算一次

标签包括 当前、运行中、子任务(origin: subagent)。运行中与当前任务不可勾选——临时文件可能仍在被读。

无主垃圾区列出不属于任何任务的项,例如:插件市场目录缓存、无主临时文件、失效的投影缓存、无主附件对象。README 中对每类判定条件有完整说明。

能优化什么、不能动什么

会话日志是规范状态:dsh-token-meter、dsh-client-ui-chat、dsh-session-stats 等投影都依赖完整事件流;账本只统计日志体积,不提供任何瘦身手段。

能安全优化的只有三类附属产物:

  1. 落盘的超大工具输出(临时暂存)
  2. 被取代的旧格式 / 旧 generation 日志
  3. 无人引用的附件(在任务删除或引用断开后才成为无主垃圾)

清理任务级「临时暂存」不会毁掉对话正文,但日志里存的是 spill 路径,删除后该段超大工具输出的全文只剩摘要——因此任务级项目默认不勾选,需自行确认。

默认勾选与安全设计

  • 扫描纯只读:不点 「确认优化」 不会改动任何字节。
  • 无主垃圾默认勾选;任务级默认可不勾。
  • 路径不出 Host:渲染进程只回传 targetId,回收时 Host 重新扫描,只删仍存在的目标;不接受「清空一切」,必须显式列出 targets。
  • 回收路由要求自定义头 x-space-optimizer,并拒绝跨站简单 POST,降低被网页误触发的风险。
  • 读不通的会话日志时,附件「无主」类整体放弃回收并在界面标注原因。

插件以当前 DSH Host 进程权限访问本地文件系统;安装前建议阅读源码与 MIT 许可证,确认符合你的环境策略。

安装与启用

官方 README 给出的 Web profile 安装方式如下(将 OWNER 换为仓库所有者 wojiao42):

dsh plugin --profile web add github:wojiao42/dsh-space-optimizer

安装后刷新页面,侧栏底部应出现 「优化空间」。卸载:

dsh plugin --profile web remove dsh-space-optimizer

DSH 生态采用「一切皆插件」思路;skillhub.cn 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装命令以 GitHub README 为准。

典型用法

  1. 执行上述 dsh plugin --profile web add …,刷新 Web 客户端。
  2. 点击侧栏底部 「优化空间」,等待约 1~2 秒完成扫描(README 实测 9 个任务约 170 ms)。
  3. 逐行核对占用与可优化项;无主垃圾通常已勾选,任务级 spill 等需自行勾选。
  4. 查看底部 「已选 N 项 · 可释放 X」,确认无误后点 「确认优化」;完成后显示 「已释放 X(N 个文件)」。

不放心时可只扫描不确认——界面不会写入磁盘。

若需要在终端做只读核对(脚本 README 标明永远不会删文件):

node tools/space-report.mjs
# 或 JSON 输出
node tools/space-report.mjs --json

(需在插件源码目录下执行;通过 dsh plugin add github:… 安装时,路径位于 profile 的 node_modules 内。)

Host 可调配置

Host 半侧 apply(ctx, config) 支持以下字段(均来自 README):

字段 默认 说明
home $DSH_HOME Harness 家目录
tempDir 系统临时目录 扫描 dsh-* 暂存的位置
minIdleHours 24 无会话归属的临时文件闲置多久才算过期
marketCacheMinAgeHours 1 市场缓存的最小年龄(缓存本身有 6 小时 TTL)

适用场景与注意

适合谁

  • 长期跑多任务、子任务,想先看清磁盘占用再决定是否清理的用户。
  • 需要定期回收 %TEMP% 下孤儿 spill、旧 generation、市场缓存等无主垃圾,又不愿手删 ~/.dsh 的用户。

使用上应知晓

  • 多数任务「可优化」很小:大头是会话日志(README 称约 0.8 MB/任务量级),无法安全裁剪;插件首要价值是透明账本,其次才是释放空间。
  • 回收不走回收站,不可恢复;运行中/当前任务相关项被禁用勾选。
  • 附件内容寻址,多任务共享时各行会标注,总占用不会简单相加各任务「占用」列。
  • 插件不发外网请求;扫描与回收均为本地文件操作。
  • 改 Host 代码(index.js / lib/)需重启 Harness;客户端 client.js 可通过侧栏插件开关摘挂热更新(见 README「改完代码怎么生效」)。

结尾

dsh-space-optimizer 把「每个任务占多少、哪些是无主垃圾、哪些要你自己点头」放进侧栏一份账本,并在设计上坚持不裁剪会话日志、回收前二次确认、显式 targets。若你正在 DSH Web 侧长期积累会话与工具输出,可以先装插件只做扫描,再按需勾选回收。

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

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

Xiaoye