前言¶
DeepSeek Harness(DSH)在会话与工作区变更过程中会在系统临时目录下产生 dsh-workspace-changes-* 一类缓存。默认落在 %TEMP% 或系统盘上时,长时间使用容易挤占系统盘空间;手动删临时文件又容易误伤 captures、会话日志或凭据。社区插件 dsh-cache-cleaner(维护者 strikesuitzero,分类 admin-security)把宿主进程的 TEMP/TMP 重定向到可配置根目录,仅按严格白名单清理临时对象,并支持归档会话与工作区 temp/archive 子目录的管理。插件双语(中/英),MIT 许可。
下面介绍它的定位、能力与安装配置方式。事实以 GitHub 仓库 README 为准;生态目录见 SkillHub 插件页。DSH 社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-cache-cleaner 是 DSH 的缓存与磁盘管理插件:将 DeepSeek Harness 临时缓存迁到可配置目录,用 allowlist 做清理,并管理归档会话以及工作区临时/归档文件夹。可通过设置面板、CLI 或 7 个 agent 工具操作。当前 package 版本为 0.5.0(以仓库 package.json 为准)。
核心功能¶
缓存重定向¶
插件将宿主进程的 TEMP/TMP(因而 os.tmpdir() 及子进程)指向 <cacheRoot>/temp,新会话快照不再默认落在系统盘。
默认 cacheRoot:Windows 为 %LOCALAPPDATA%\dsh-cache-cleaner;其他系统为 $XDG_CACHE_HOME/dsh-cache-cleaner 或 ~/.cache/dsh-cache-cleaner。可通过配置改到有剩余空间的盘符。
白名单清理与双门槛¶
仅删除匹配 dsh-workspace-changes-*/objects/<2 hex>/tmp_obj_<6 chars> 的文件。captures/、sha1 对象、锁文件、会话、配置与凭据不会被触碰。
清理有两道门:按 mode 预设的天数(默认 normal 为 14 天)与配额(超 50 GiB 时按最旧优先删至约 80%)。遗留的 %TEMP%/dsh-workspace-changes-* 目录可单独处理,自动清理时最短保留 24 小时(autoCleanLegacy 默认关闭)。
归档会话与工作区根¶
可列出归档会话、预览删除计划,再删除会话及(可选)附件与会话投影缓存;删除走宿主注册表 API,进行中的会话会被拒绝。
可汇报并在显式启用后清理所配置的 workspace temp/archive 根目录下的直接子项;kind: archive 的删除需打开 manageArchives。
设置面板与 Agent 工具¶
设置里增加 缓存清理 / Cache cleaner 区块(概览、缓存、工作区、归档会话、清理选项);面板先渲染,后台扫描完成后填充数据。界面语言随 DSH UI;各 agent 工具描述含中英文。
7 个工具:cache_status、cache_clean、cache_ownership、conversation_list、conversation_delete、workspace_status、workspace_clean。
安全模型(使用前宜知晓)¶
- 仅白名单匹配项可删;不跟随或删除符号链接与 junction。
- CLI 与工具默认 dry-run;真正执行需
--apply/apply:true,且通常需confirm:true。归档根另需manageArchives:true与includeArchives:true。 cacheRoot须有插件写入的.dsh-cache-cleaner.json标记(--init或插件初始化),误配根目录不会被扫。- 工作区根必须严格落在
workspaceBases内;卷根、用户主目录、DSH_HOME与缓存根会被拒绝。 - 单次删除失败记为
skipped并继续其余批次。
临时目录与会话的归属在部分场景下按创建时间窗口 推断(confidence: "time-window"),并非宿主持久化存储的所有权。
安装与启用¶
仓库发布后,可从 GitHub 安装;bundle patch 声明插件行,宿主在下次重启或插件禁用/启用重载后加载。
# from GitHub (once the repository is published)
dsh plugin add github:strikesuitzero/dsh-cache-cleaner
# or from a local checkout
dsh plugin add file:D:/path/to/dsh-cache-cleaner
本地路径示例以 README 为准,按实际 checkout 位置替换 file: 路径。
配置¶
键均可选。可在 profile 的 cordis.patch.yml 里编辑插件条目的 config;设置 → Plugins → cache cleaner 也会持久化部分清理选项。
| Key | 默认 | 含义 |
|---|---|---|
cacheRoot |
见上文 | 重定向临时目录与报告的根路径 |
redirectTemp |
true |
是否重定向宿主 TEMP/TMP |
autoClean |
true |
是否定时清理(启动延迟 + 间隔 + 空闲 debounce) |
autoCleanLegacy |
false |
自动清理是否包含遗留 %TEMP%/dsh-workspace-changes-* |
startupDelaySeconds |
60 |
首次自动清理前延迟(秒) |
intervalHours |
6 |
计划扫描间隔(UI 有 1/3/7/15/30 天等预设) |
idleQuietMinutes |
10 |
Agent 空闲这么久后额外跑一次 |
mode |
normal |
safe(30 天 / 50 GiB)、normal(14 天 / 50 GiB)、aggressive(1 天 / 30 GiB) |
retainDays |
null |
覆盖 mode 的年龄门槛 |
quotaBytes |
null |
覆盖 mode 的配额门槛 |
workspaceBases |
[] |
工作区根必须严格位于其内的目录列表 |
workspaceRoots |
[] |
[{path, kind: temp\|archive, retainDays, auto}],只看直接子项 |
manageArchives |
false |
是否允许删除 kind: archive 根下的内容 |
profile 覆盖示例:
- id: dsh-cache-cleaner
config:
cacheRoot: 'D:\\Cache\\dsh-cache-cleaner'
workspaceBases: ['D:/work/project']
workspaceRoots:
- { path: 'D:/work/project/_tmp', kind: temp, retainDays: 7, auto: true }
- { path: 'D:/work/project/_archive', kind: archive, retainDays: 30, auto: false }
典型用法¶
CLI¶
先初始化根标记,再 dry-run,确认后 --apply:
node bin/dsh-cache-clean.mjs --init # write the root marker
node bin/dsh-cache-clean.mjs # dry-run
node bin/dsh-cache-clean.mjs --apply # clean
node bin/dsh-cache-clean.mjs --status --json
node bin/dsh-cache-clean.mjs --ownership
node bin/dsh-cache-clean.mjs --conversations
node bin/dsh-cache-clean.mjs --delete-archived all --apply --confirm
node bin/dsh-cache-clean.mjs --workspace-status
node bin/dsh-cache-clean.mjs --workspace-clean --apply --confirm
宿主未运行时若需改离线注册表,须加 --offline-registry;CLI 会在改动 workspace.json 前写入带时间戳的 .bak-<ms>,无该标志则拒绝。
日常维护路径¶
- 在设置面板查看缓存与工作区概览,按需调整
mode或cacheRoot。 - 用
cache_status或--status --json看重定向状态、体积与定时器。 - 清理前先用默认 dry-run 或
cache_clean无apply,再带confirm执行。 - 删归档会话前用
conversation_list/--conversations核对,再--delete-archived。
仓库提供 smoke 测试(如 node test/smoke-v4.mjs,116 assertions),使用假宿主服务与 fixture,不触碰真实会话与缓存。
适用场景与注意¶
适合需要把 DSH 临时缓存迁到大容量盘、又想用白名单与 dry-run 控制清理风险的开发者或运维向用户。归档与会话清理适合定期整理历史会话、释放附件与投影缓存占用的场景。
插件以当前 DSH 宿主进程权限运行,安装前应自行审阅 源码与 LICENSE。设置面板经 /api/cache-cleaner.api 与宿主通信,未授权 HTTP 探测会得到 401;应在已登录浏览器的 DSH 设置中验证。若系统“删除”实际移入回收站,报告可能提示未观察到预期释放在用空间。
结尾¶
dsh-cache-cleaner 把临时缓存迁出系统盘、用 allowlist 与双门槛做可控清理,并补齐归档会话与工作区 temp/archive 的管理入口。需要详情与 issue 时打开 GitHub;在生态目录检索可用 SkillHub 插件页。