归档管理:在设置页列出已归档会话,并可真正删除,连同会话日志、归档标记与投影缓存一并清理。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-archive-manager-plus
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:MS666666/dsh-archive-manager
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
归档管理:在设置页列出已归档会话,并提供真正的删除(会话日志、归档标记、投影缓存一并清理)。
English | 中文

特性
- 设置页新增**「归档管理」**标签页(官方
settings.sectionslot 机制,与「通用」「模型」等同级) - 列出所有已归档会话:标题、创建时间、日志是否仍在磁盘
- 每条右侧删除按钮,二次确认后彻底删除
- 安全设计:仅接受同源 POST、sessionId 严格校验、写后由 Node 自校验、失败自动回滚备份
- 跨 PowerShell 版本无 BOM 隐患(Windows PowerShell 5.1 与 PowerShell 7 行为一致)
背景
DSH 的「归档会话」只是把会话从分组视图隐藏:session.jsonl.zstd 日志与记账原样保留,且官方 UI 没有删除入口。本插件补齐「真删除」能力——归档只是隐藏,需要真正清理磁盘时可以在这里完成。
工作原理
双半插件(与官方插件生态一致的形态):
| 半 | 位置 | 职责 |
|---|---|---|
| host 半 | lib/ |
挂载两条 HTTP 路由:GET /dsh-archive-manager-plus/list 列出归档会话;POST /dsh-archive-manager-plus/delete 删除(会话目录 + workspace 记账 + 投影缓存) |
| 浏览器半 | client/ |
注册 settings.section 页面,渲染列表 + 删除按钮(先 confirm 二次确认,再调用 host 路由) |
删除动作的落盘范围:
workspace.json的global.archivedSessionIds移除该 id- 各 workspace 的
sessionIds移除该 id - 删除
<DSH_HOME>/sessions/<workspace-encoded>/<session-id>/目录 session_projcache.json中该会话条目清除
不清理
cost-meter/ledger.json(费用流水属历史记录,予以保留)。
安装
方式一:npm(推荐,社区标准)
npm install dsh-archive-manager-plus
npm 会把包装进当前项目/全局 node_modules;DSH 插件需要注册进 profile 的 bundle 层:
- 在
<profile>/package.json的dependencies加入:"dsh-archive-manager-plus": "^0.1.0" - 在
dsh.profile.bundles尾部加入:"dsh-archive-manager-plus" npm install(或pnpm install)后在 profile 里确认包已落位,重启 DSH 并刷新页面
方式二:一键安装脚本(本地开发调试)
powershell -ExecutionPolicy Bypass -File .\install.ps1
脚本自定位插件根目录(可从任意位置运行),自动完成:白名单复制发布物 → 注册依赖与 bundle → Node 自校验(无 BOM / JSON 合法 / 条目齐全)→ 失败回滚备份。
| 参数 | 说明 |
|---|---|
-ProfileDir <path> |
显式指定 profile 目录(优先于自动探测) |
-ProfileName <name> |
profile 名,默认 web |
-DSHHome <path> |
指定 DSH home(默认取 $env:DSH_HOME,其次 ~/.dsh) |
-DryRun |
只预览,不写入 |
-SkipCopy |
跳过复制,只更新 manifest |
.\install.ps1 -DryRun # 预览
.\install.ps1 -DSHHome <your-dsh-home> # 指定安装位置
方式三:手动
- 复制
lib/、client/、cordis.patch.yml、LICENSE、README.md、package.json到<profile>/node_modules/dsh-archive-manager-plus/ - 在
<profile>/package.json的dependencies加入:"dsh-archive-manager-plus": "<version>" - 在
dsh.profile.bundles尾部加入:"dsh-archive-manager-plus" - 保存(务必 UTF-8 无 BOM)后重启 DSH,并刷新页面
⚠️ BOM 陷阱:
package.json若带 UTF-8 BOM 会导致 DSH 启动报Unexpected token ''。 推荐用 npm 安装或一键脚本(已内置无 BOM 写入与 Node 校验)。
使用
- 侧边栏任一会话行
⋯菜单 → 归档会话(归档 1–2 个会话备用) - 打开 设置(齿轮)→ 归档管理
- 列表展示已归档会话:标题 / 创建时间 / 日志是否在盘
- 点击右侧 删除 → 确认 → 该项消失,磁盘日志一并清除
隐私与安全
- 删除范围仅限已归档会话;运行中的会话不应执行删除(由调用方负责判断)
- 删除会移除磁盘日志文件与关联记账;费用流水保留
- 宿主内存态(如
session.list残留行)在删除后到下次重连/刷新间可能短暂可见——文件与注册表层始终是一致且持久的 - 网关侧仅接受同源请求,sessionId 有严格的格式白名单(
session-+ 十六进制/连字符),杜绝路径穿越 - 本 README 中的路径均为占位符(
<DSH_HOME>、<profile>…),请勿在 issue / 讨论中粘贴本机绝对路径、用户名或会话 id
开发
- 浏览器半为纯手写 CJS bundle(无构建步骤):改
client/client.js后刷新页面可见(HMR 生效) - host 半为纯 ESM:改
lib/后重启 DSH - 版本号改动后重新运行
install.ps1即可同步 manifest(无需改脚本)
发布新版本(npm)
- 在
package.json提升version(遵循 SemVer) - 本地验证:
node --check lib/*.js client/client.js+npm publish --dry-run - 发布:
npm publish --registry=https://registry.npmjs.org/ - 生成新的 GitHub release / tag(
v<version>),保持仓库与 npm 版本同步
许可
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-plugin-manager★ 8835
设置 → 插件 分区里的插件管理 Tab:从 npm/git 安装带进度、下次启动生效的启停开关、安装冲突对账可撤销、失败一键转交修复会话。
dsh-market/dsh-market★ 6775
在 DeepSeek Harness 设置页内浏览、搜索并安装社区插件,支持分类筛选、一键更新与停用,以及主题切换与配置备份。
kingOfSoySauce/dsh-skin-market★ 202
原生皮肤市场与生命周期管理器,发现社区皮肤、展示预览与兼容状态,并提供已验证的一键安装或手动安装入口。
awesome-dsh-plugin/dsh-find-plugin★ 188
会话内直接找插件:按关键词/分类搜索本精选 registry,返回描述与可直接执行的安装命令。
bradeGithub/DSH-Plugins-Marketplace★ 176
面向 GitHub dsh-plugin 话题的插件与技能市场:设置页内逛自动收录的全量索引(CI 每 2 小时刷新),一键安装带类型识别、安装脚本与宿主依赖遮蔽安全检查、环境变量密钥管理,并附 STANDARD.md 识别层规范。
Sanqi-normal/dsh-webui-market-plugin★ 104
dsh Web GUI 内的社区插件市场:浏览 awesome-dsh-plugin.com 目录,从 设置 → 插件 → 插件市场 安装/卸载插件到 profile。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。