前言¶
在 DeepSeek Harness(DSH)里,会话归档后会从项目侧栏消失,但磁盘上仍保留会话日志与相关缓存。Harness 本身没有专门界面去查看这些「已归档」条目,也无法在设置里一键复原或连同日志一起删掉。若你长期在同一台机器上跑多个项目,归档会话会越积越多,占用 $DSH_HOME 空间,却难以判断每条记录对应哪条会话、占多少空间、是否还能恢复。
下面介绍的 dsh-archive-manager(仓库 linanbuan/dsh-archive-manager)是社区维护的客户端插件:在 DSH 设置里增加一页「归档会话管理」,列出本机全部已归档会话,并支持逐条复原回工作区,或永久删除会话日志与投影缓存。维护者为 linanbuan;包版本在资料中为 1.0.0,许可证 MIT。插件不联网、无遥测,只在 Host 侧读本机文件与 Harness 服务。
这是什么¶
插件定位可以概括为:DSH 桌面端设置面板插件,补全「已归档会话」的管理入口。
- 入口位置:设置 → 归档会话管理(
settings.section,order: 100,排在内置页面与其它插件之后;行 id 为archive-manager)。 - 运行时依赖:无额外 npm 运行时依赖;浏览器半边仅
require('react')。 - 与官方关系:非 DeepSeek 官方插件;依赖 Harness 内部接缝(如
workspaceRegistry、sessionPersistence等),Harness 升级后可能失效。
核心功能¶
列表与统计¶
页面顶部展示汇总:已归档数量、可删除数量、运行中数量、磁盘占用、数据时间。
每条已归档会话显示:
- 会话标题(来自
sessionQuery的标题快照,超时或失败时可能显示「无标题」); - 所属项目;
- 占用大小;
- 创建时间、最后写入时间;
- 磁盘目录(展示为
~/.dsh/...或$DSH_HOME/...,不把本机绝对路径送到浏览器)。
若归档记录已无对应日志,仍会列出并标为「仅归档记录」,允许从归档列表移除而不删文件。
复原回工作区¶
点击 复原回工作区 时,Host 调用 ctx.workspaceRegistry.unarchiveSession(id):从归档集合移除该 id。会话在工作区中的记账槽位一直保留,因此会回到原来的项目与位置。此操作可再次归档,不是删数据。
永久删除¶
点击 永久删除 时,行内二次确认(非弹窗)。成功后操作结果条会列出本次真正被移除的路径,而不是笼统提示「已删除」。
删除步骤(资料中的确切含义):
- 删除会话日志目录
~/.dsh/sessions/<项目键>/<会话 id>/; - 删除投影缓存
~/.dsh/storages/session_projcache/sessions/<会话 id>.json; - 调用
unarchiveSession(id)更新记账,并广播api-session/removed,侧栏相应行会收起。
不能撤销:Harness 没有恢复入口。运行中的会话不能永久删除(界面会标「运行中」并禁用删除),需先关闭该会话或重启应用。
删除为何由插件自行实现¶
DSH 的 sessionPersistence 不提供文件路径与删除 API;workspaceRegistry 文档写明移除不会删磁盘数据。因此「永久删除」是插件按与 DSH JSONL 后端同一套规则(lib/layout.js 中的 projectKey、encodeSegment)推导路径后,在 Host 侧做的文件系统操作,并带有多条前置校验(例如 id 必须在归档集合中、不能 SESSION_LIVE、路径必须在 $DSH_HOME/sessions 内且与 header 推导一致等)。任一条件不满足则拒绝删除,不改动磁盘。
安装与启用¶
先安装 DSH 桌面端(deepseek.com/download)。本插件为标准 DSH bundle(package.json 声明 dsh.bundle.patch 与 dsh.client),任选下列方式之一。
方式一:DSH 桌面端内安装(推荐)¶
- 侧栏 插件 → 添加插件(Add plugin);
- 在输入框填写 spec,例如仓库地址
https://github.com/linanbuan/dsh-archive-manager,或该仓库的 Source code (zip) 链接、本机已存在的目录绝对路径,或将来可能的 npm 包名; - 点 安装,确认包信息后完成安装;
- 点 立即启用。
安装由 Harness 插件管理器写入当前 profile 的 dsh.profile.bundles,无需命令行或手改 profile。
方式二:交给 Agent 安装¶
将会话中的 Agent 指向仓库 URL 或本机目录,由 Agent 调用 plugin_manager(action: install_bundle),与方式一走同一路径。
方式三:命令行¶
已安装 dsh CLI 时:
dsh plugin --profile <profile 名> add <spec>
<spec> 与方式一相同;具体参数以 dsh plugin --help 为准。
装上之后¶
- 浏览器半边注册设置页,随启动图加载;HMR 更新时通常不必刷新页面。
- Host 半边注册三条
/api/archive/*路由。若安装提示需重启,应重启 DeepSeek Harness 应用(不是仅刷新浏览器)。 - 确认运行:侧栏 插件 中找到该包,组件状态应为「运行中」。
临时停用可在 profile 的 cordis.patch.yml 或插件页开关中设置 archive-manager 的 disabled: true;彻底移除用插件页的 卸载。
插件管理器目前不支持自动更新;升级需先卸载再装新版。替换已安装包后,Host 半边需重启应用才会加载新代码。
典型用法¶
- 打开 DSH 设置,进入 归档会话管理。
- 浏览列表:根据标题、项目、大小与时间判断是否需要保留。
- 需要重新出现在项目里:点该行的 复原回工作区,侧栏项目会话列表会恢复该条。
- 确认不再需要且会话未在运行:点 永久删除,在行内确认;查看结果条中的路径列表,核对是否与预期一致。
- 若某条仅为「仅归档记录」、磁盘上已无日志:仍可从列表移除归档记账,而不删文件。
开发者在仓库内可用自检脚本验证 Host/Client 逻辑(不需要网络与真实 Harness):
node test/selfcheck.mjs
或 pnpm test;全部通过时输出 19/19 checks passed。
适用场景与注意¶
适合谁
- 长期在单机使用 DSH、频繁归档旧会话的开发者;
- 需要查看
$DSH_HOME里归档占用、清理无用会话日志与投影缓存的用户; - 希望从 UI 复原误归档会话、而不是手改
workspace.json或目录的人。
使用前请知悉
- 插件以当前 DSH 进程的文件系统权限运行;
$DSH_HOME若位于需提权或受安全软件锁定的目录,删除可能报EACCES/EPERM。 - 永久删除无回收站;删前请确认会话内容不再需要。
- 只影响本机这一份
$DSH_HOME,不同步其它设备或云端。 - 资料记载的开发验证环境为 DSH
0.1.7-rc.2桌面版(Windows);所依赖 API 为内部实现,非稳定契约。 - 安装第三方插件前,建议自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
社区插件目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中针对归档会话缺口的一个客户端扩展。
结尾¶
dsh-archive-manager 把本机已归档会话集中到设置里的一页:能看标题、项目、大小与时间,能复原回工作区,也能在严格校验后永久删除日志与缓存。若你正被「归档后找不到、删不干净」困扰,可按上文安装方式装入当前 profile,从 设置 → 归档会话管理 开始处理。
- 目录页:https://www.skillhub.cn/plugins/linanbuan/dsh-archive-manager
- 源码与说明:https://github.com/linanbuan/dsh-archive-manager