前言¶
在 DeepSeek Harness(DSH)里,你发给对话的每一张图、每一个文件,以及工具返回的附件,都会落到本机 ~/.dsh/attachments/v1 下,以内容寻址的方式持久保存。Harness 本身不会回收这些对象:没有垃圾回收、没有保留策略、退出 dsh 也不会动这个目录,容量只会增长。几段带 TIFF、PDF 或截图的对话,就可能占去数 GB。
更棘手的是,DSH 默认界面不会告诉你「哪段对话占用了哪些字节」,也不会说明手动删文件会破坏什么。dsh-attachment-cache(社区目录分类:记忆)是维护者 junecattle 提供的侧边栏插件,专门面向 ~/.dsh/attachments 的浏览、有说明的删除,以及整库迁移。
这是什么¶
dsh-attachment-cache 是 DeepSeek Harness 的 web profile 侧边栏面板:展示 ~/.dsh/attachments 里按对话归类的库存,支持在删除前说明影响、批量选择与无引用对象清扫,并可在 Windows 上把存储迁到另一块盘而不丢旧对话引用。插件只读会话日志以建立 digest 与对话的映射,不修改 session 日志,也不调用 DSH 附件服务的内部 API。
存储布局(摘自项目说明):规范化图片在 objects/<sha256>;文件在 file-objects/<sha256>,另有 files/<sha256>/<name> 硬链接作为展示名。可再生的派生缓存在 ~/.dsh/cache/attachments(请求用图片),与持久化 store 分开处理。
核心功能¶
按对话清点¶
每个已存对象都会映射回引用它的对话,按类别(图片、文档、其他)分组,并以所属消息作为组标题。面板支持搜索(文件名、扩展名、对话标题)和扩展名过滤(逗号分隔后缀,例如 tif,pdf)。
删之前先说明¶
选中一行会说明文件是什么、被多少对话共享,以及删除后具体会坏什么。附件是内容寻址的,同一对象可服务多段对话。删除经确认对话框后,通过 POST /delete 执行,且不可恢复(无回收站)。
| 删除对象 | 影响 |
|---|---|
| 图片 object | 所有用过该图的对话里该图不再渲染;文本与工具输出仍在 |
| 文件 object | 原文件无法在后继轮次再下载或再读;files/ 下对应别名一并消失 |
仅 files/<sha>/<name> 别名 |
只影响该展示名;object 仍可供其他名称使用 |
~/.dsh/cache/attachments |
无永久损失;请求图片可按需再生 |
| 无引用 object | 无会话指向,删除无功能影响 |
批量与无引用清扫¶
支持按组「全选本组」、按当前筛选「全选当前」或逐条点选后一次确认删除。「无引用」页单独列出已无任何会话引用的对象,便于安全回收空间。
派生缓存清理¶
~/.dsh/cache/attachments 可随时清空;项目将其标为可再生意,与 attachments/v1 的持久对象区分开。
存储迁移(Windows)¶
逻辑路径仍为 ~/.dsh/attachments/v1,实际字节可放到其他 NTFS 本地卷,通过目录联接(junction)对 DSH 透明;引用是内容哈希而非路径,旧对话仍可解析。
典型步骤:
- 面板中「存储位置 → 选择目标文件夹」(例如
D:\dsh-attachments)。 - 选择模式:移动(校验 digest 后删旧副本并建 junction)、保留副本(旧目录改名为
v1.backup-<timestamp>)、或切换(指向已有 store,不复制)。 - 后台显示进度(files / bytes / phase),面板可关闭再开。
- 还原 可把数据拷回、去掉 junction、恢复普通目录。
说明:联接在 Windows 11 + Node 22+ 上测试;store 须在本地 NTFS 卷。派生缓存仍留在 C:。目标盘不可用时,附件读取会失败,面板会报告而非静默。备份工具若不跟随重解析点,可能看到空目录。
安装与启用¶
要求(资料原文):DeepSeek Harness ≥ 0.2.1,web profile;Node ≥ 20(会话日志解压依赖 zlib.zstdDecompress)。浏览与删除跨平台;存储迁移面向 Windows 11。
安装命令:
dsh plugin --profile web add github:junecattle/dsh-attachment-cache
重启 DSH 后,打开 Settings → Plugins,启用 Attachment cache manager,再点击侧边栏的归档图标。后续更新使用同一条 add 命令。
启用前请自行查看仓库源码与 MIT 许可证。插件以当前 dsh 进程权限读写 ~/.dsh 下文件;预览经本机 DSH 已认证的 localhost 路由提供,资料称不向外上传。
典型用法:面板区域¶
| 区域 | 作用 |
|---|---|
| 标签页 | 全部、图片、文档、其他、无引用,各带实时计数 |
| 搜索 / 扩展名过滤 | 见上文 |
| 全选当前 | 选中当前可见项(含折叠组) |
| 展开全部 / 收起全部 | 展开或折叠所有对话卡片 |
| 存储位置 | 打开迁移对话框 |
| 重新扫描 | 重读 store 与会话日志 |
| 删除选中 | 确认后删除选中对象 |
悬停文件可见大小、digest、共享次数及删除后果;点击可在详情区固定并预览 PNG/JPEG/GIF/WebP。
会话日志路径(只读):~/.dsh/sessions/<workspace>/<session>/session.v4.jsonl.zstd(zstd 多帧),用于把 sha256:<digest> 映射到对话。Host 路由挂在 /attachment-cache-manager,由宿主连接围栏保护。
适用场景与注意¶
适合长期使用 DSH、频繁贴图或传 PDF、又需要看清磁盘占用并按对话清理的开发者。也适合 Windows 用户把 attachments/v1 从系统盘迁到大容量盘,同时保留历史对话里的附件引用。
不适合指望「装完自动限流」的场景:Harness 仍不会自带 GC,本插件是显式管理工具,删除永久且需你理解共享 object 的影响。
隐私与边界:资料写明一切本地处理。插件不写入会话日志,DSH 升级不应通过该插件破坏 store;但若你手动改目录或使用不识别 junction 的备份策略,仍需自担风险。
结尾¶
dsh-attachment-cache 把 ~/.dsh/attachments 从「只增不减的黑盒」变成可清点、可说明后果地删减、并在 Windows 上可迁移的库存面板,分类落在社区目录的「记忆」维度,与 DSH「一切皆插件」的生态一致;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
- 目录页:https://www.skillhub.cn/plugins/junecattle/dsh-attachment-cache
- 仓库:https://github.com/junecattle/dsh-attachment-cache