DeepSeek Harness Hub
← 返回列表

归档会话清理zimixvx/dsh-archive-manager

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

从侧边栏彻底删除已归档会话的磁盘目录

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/13 · 已提供中文文档
综合分
27.4
GitHub 分
27.4
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add zimixvx/dsh-archive-manager
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-workspace@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-primitives
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-archive-manager

一个极简的树外 DeepSeek Harness Web Cordis 插件,用于从侧边栏永久删除已归档会话在磁盘上的会话目录。

它不会修改 DSH 核心安装或任何配置文件。对 $DSH_HOME 的唯一持久影响是预期中的那一个:在用户确认后,它会删除 $DSH_HOME/sessions 下所选会话的目录。不会写入任何其他 DSH 持久状态(工作区注册表、投影缓存、共享附件)。宿主端负责一个 HTTP 路由;客户端在侧边栏底部添加一个操作项,列出已归档会话,并在明确二次确认后将其删除。

功能

- 宿主端(index.js)注册 POST /archive-manager/delete。
- 客户端(client.js)注册一个 sidebar.footer.action 列表项
(id: archive-manager,order: 80)。宽模式显示标签 已归档 N;
窄栏仅显示归档图标。
- 模态框仅列出工作区注册表 archivedSessionIds 中同时存在于客户端会话基线中的会话摘要的 id,
显示 displayTitle(或 id)、cwd 和 updatedAt。
- 每一行都有一个垃圾桶按钮。删除需要明确的二次确认,
说明会话目录将被永久删除且无法恢复。
- 删除会发起同源的 POST /archive-manager/delete,成功后
刷新 sessions 和 workspaces。本地已删除 id 集合会隐藏该行,
尽管归档标记被有意保留不变。

安装

这是一个树外插件:将其放到磁盘上,并安装到现有的 web 配置中。

方式 A — 从 GitHub 安装

dsh plugin --profile web add "github:zimixvx/dsh-archive-manager"

方式 B — 从本地路径安装

插件目录位于 D:\Code\DeepseekHarness\plugins\dsh-archive-manager 时:

dsh plugin --profile web add "D:\Code\DeepseekHarness\plugins\dsh-archive-manager"

然后将该插件添加到 $DSH_HOME/profiles/web/package.json 中 web 配置的 bundle 列表:

{
"name": "dsh-profile-web",
"private": true,
"dependencies": {
"dsh-archive-manager": "file:D:/Code/DeepseekHarness/plugins/dsh-archive-manager"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-archive-manager"
]
}
}
}

确切的 dependencies 条目由 dsh plugin --profile web add 写入;
只有 bundles 列表需要手动添加。

插件的 cordis.patch.yml(通过 dsh.bundle.patch 声明)插入宿主行:

- insert:
- id: archive-manager
name: dsh-archive-manager

重启

正在运行的进程不会加载新的 bundle 行,因此请重启 web 配置:

dsh web

刷新页面后,侧边栏底部会显示归档管理操作。

安全性与限制
- 仅限已归档的会话。 该路由会拒绝任何不存在于
workspaceRegistry.archivedSessionIds 中的 id。
- 活跃会话会被拒绝 —— 在持久化查找之前检查一次,在 rm 之前
再次检查,返回 HTTP 409。
- 需要原始产物后端。 持久化后端必须声明
supportsRawArtifacts === true,并且 locate() 返回
{ kind: 'jsonl', path }。否则该路由会返回 501。
- 仅删除会话目录。 rm(dirname(location.path),
{ recursive: true, force: false }) 会删除存放该会话 JSONL 日志的目录
(以及其中的任何会话本地文件)。它不会修改工作区注册表、归档标记、
投影缓存或内容寻址附件(它们位于单独的共享存储中,并在会话之间共享)。
- 过期的归档标记。 成功删除后,archivedSessionIds 中的归档标记会
按设计保留(移除它会改动注册表)。由于面板只列出仍有会话摘要的归档 id,
而物理删除会移除该摘要,因此该残留标记在页面重新加载后不会重新出现。
即使后续刷新失败,本地已删除 id 集合也会立即隐藏该行。
- 不可逆。 该删除是带 force: false 的递归 rm。
没有回收站或恢复路径。

卸载

从配置文件的 dsh.profile.bundles(以及 dependencies)中移除
dsh-archive-manager,然后重启。该插件自身不添加任何持久状态,
因此没有其他需要清理的内容。

许可证

MIT —— 参见 LICENSE。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群