dsh-unarchive
by edfrey0044
DeepSeek Harness恢复存档会话:/unarchive命令 + unarchive_session工具(配置包)
Restore archived sessions in the DeepSeek Harness: /unarchive command + unarchive_session tool (profile bundle)
安装
dsh plugin --profile web add github:edfrey0044/dsh-unarchiveGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
English | 中文
为 DeepSeek Harness 恢复已归档的会话。归档只会把会话从所有分组视图(工作区分组、未分组、平铺列表、搜索)中隐藏,从不删除数据。这个插件补上了缺失的逆操作:两个入口把会话从注册表级全局归档集合中移除,让它在原位置重新出现。
提供的入口
| 入口 | 位置 | 行为 |
|---|---|---|
/unarchive |
GUI 命令面板(/ 菜单)或任意命令入口 |
不带参数列出归档会话(id + 尽力而为的标题);带会话 id 则恢复该会话 |
unarchive_session |
模型工具(任意会话可用) | 省略 sessionId 时列出归档会话;传入 sessionId 恢复一个 |
两个入口都能让会话在所有已连接的 GUI 客户端里实时恢复(host/archived-sessions-changed),且重启后仍然生效。会话日志和工作区记账席位完全不受影响。
要求
除标准 DeepSeek Harness profile 外无额外要求。插件是自包含的:
- 当所在构建提供
workspaceRegistry.unarchiveSession时,走这条持久化核心 API; - 否则直接写入 workspace 域的
archivedSessionIds全局数据——这正是archiveSession读写的那份持久化、可实时刷新的数据。
自包含模式的已知限制: 直接写域会让 workspace 注册表的内存缓存陈旧,直到下次重启。在此之前,会话会实时恢复显示,但(a)刷新页面会再次隐藏它,(b)再做归档/工作区变更可能把它重新归档。重启 dsh 后即完全恢复正常。
安装
以 profile bundle 方式安装(推荐),在本仓库检出目录执行:
dsh plugin --profile web add github:edfrey0044/dsh-unarchive
# 或发布到 npm 之后:
dsh plugin --profile web add dsh-unarchive
重启 dsh web(或你的 profile)。由于本包声明了 dsh.bundle.patch,补丁层会自动加入 profile 的层栈。
手动组合:在 profile 的 cordis.patch.yml 中加一行,并把包安装进 profile:
# ~/.dsh/profiles/<name>/cordis.patch.yml(向 profile 根插入一条)
- insert:
- id: dsh-unarchive
name: dsh-unarchive
cd ~/.dsh/profiles/<name>
pnpm add github:edfrey0044/dsh-unarchive
用法
先看归档了哪些会话,再恢复:
/unarchive
Archived sessions:
- session-0a701da0-449d-4997-bf87-a4b6aae7ceee (张雪峰谈2026文科女生报考西财中外学院)
- session-b96a78f1-b6bf-439b-9570-c054307e6adb (张雪峰视角:西财中外合作报考建议)
/unarchive session-0a701da0-449d-4997-bf87-a4b6aae7ceee
Session session-0a701da0-449d-4997-bf87-a4b6aae7ceee restored; it is visible again in the workspace at its original position.
英文演示(GUI 命令面板里的 /unarchive):

也可以直接在任意会话里对 agent 说"把归档的会话恢复一下",模型会替你调用 unarchive_session。
会话 id 也存在于磁盘:~/.dsh/sessions/<项目>/<会话id>/(或 $DSH_HOME/sessions/...),归档集合本身在 ~/.dsh/storages/workspace.json 的 global.archivedSessionIds。
工作原理
归档时会话在 workspace 记账中的 sessionIds 席位保持不变,只做一次"展示集合"写入把 id 放进 archivedSessionIds;取消归档就是逆写入,所以会话会回到原位置。
当构建提供核心 API(WorkspaceRegistry.unarchiveSession)时插件优先走它;在标准构建上则通过 ctx.storageDomain 直接写 workspace 域的 archivedSessionIds 全局数据。该写入是持久化的,并会发出 domain/changed,宿主据此向所有已连接客户端推送 host/archived-sessions-changed。自包含路径的唯一限制是注册表的内存缓存(见上文"要求")。
开发
实现是纯 ESM(lib/index.js)+ 手写类型声明,无构建步骤。
npm test:基于桩的单元测试(假注册表,不启动 DSH)。- 端到端验证:在真实 harness 检出里挂载插件 + 真实
storage-domain/workspaceRegistry,用临时世界驱动捕获的命令处理器。场景结构见tests/。
许可证
MIT
原始 README: https://github.com/edfrey0044/dsh-unarchive/blob/main/README.zh.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥