simbamo
dsh-session-unarchive
DeepSeek Harness 插件:查看并恢复已归档的会话(侧边栏「归档会话」入口 + session_archive 工具 + /unarchive 命令)
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 17, 2026
- Updated
- Aug 17, 2026
Introduction
dsh-session-unarchive
DeepSeek Harness 插件:查看并恢复已归档的会话。
原生 DSH 侧边栏只有「归档会话」、没有「取消归档」——会话一旦归档就从所有分组界面消失,且没有任何查看或恢复入口(这是 dsh-client-ui-workspace README 明确记录的已知限制)。本插件补齐这个能力:把归档的会话单独展示在一个「归档会话」入口里,可随时打开查看或恢复回原位。
功能
- 侧边栏「归档 (N)」入口(客户端 UI):列在侧边栏底部(设置按钮旁),点开弹出面板,列出全部已归档会话,每个可「打开」或「恢复」。
session_archive工具:list/unarchive/unarchive-all(供 agent 调用)。/unarchive命令:list/restore <序号|id|关键词>/restore-all。- HTTP API:
GET /session-unarchive/api/archived、POST /session-unarchive/api/unarchive(供客户端 UI 调用)。
安装
本插件是 host + client 双半插件,零运行时依赖。
- 克隆到插件目录:
git clone https://github.com/simbamo/dsh-session-unarchive.git ~/.dsh/plugins/dsh-session-unarchive - 建符号链接到 profile node_modules:
ln -sfn ../../../plugins/dsh-session-unarchive ~/.dsh/profiles/web/node_modules/dsh-session-unarchive - 在
~/.dsh/profiles/web/package.json的 dependencies 里加:"dsh-session-unarchive": "link:/Users/<你>/....../dsh-session-unarchive" - 在
~/.dsh/profiles/web/cordis.patch.yml里插入 loader 条目:- insert: - id: dsh-session-unarchive name: dsh-session-unarchive - 重启 DSH web + 浏览器硬刷新。
装完必须重启 DSH web 才生效(agent 无法从会话内自重启 DSH web,需手动
kill $(lsof -nP -t -iTCP:3080 -sTCP:LISTEN)后重跑dsh web)。
使用
侧边栏 UI
重启后,侧边栏底部(设置按钮旁)会出现「归档 (N)」入口:
- 点开 → 列出全部已归档会话(标题 + 工作目录)
- 「打开」→ 直接打开该会话查看
- 「恢复」→ 把会话移回它原来的工作区分组(取消归档)
命令
/unarchive list
/unarchive restore 3
/unarchive restore <id或标题关键词>
/unarchive restore-all
工具
让 agent 直接调 session_archive 工具(list / unarchive / unarchive-all)。
原理
- 归档集合持久化在
~/.dsh/storages/workspace.json的global.archivedSessionIds(由核心workspaceRegistry服务维护)。 - 原生只有
archiveSession()(写入归档集合)、没有unarchiveSession()。本插件在apply()阶段给ctx.workspaceRegistry实例补上unarchiveSession(sessionId),复用其自身的enqueueOperation串行化 +setState持久化,与原生完全对称。 - 客户端 UI 通过
sidebar.footer.action槽注册(DSH 原生侧边栏没有树内分组扩展槽,只能用 footer 入口方案),数据来自useWorkspaces(归档集合)与useSessions(标题)。 - 「恢复」通过 HTTP API 调 host 的
unarchiveSession,成功后ctx.workspaces.refresh()刷新侧边栏。
目录
lib/
index.js # host 端:unarchive 补丁 + 工具 + 命令 + HTTP API
client.js # 客户端 bundle:sidebar.footer.action 的「归档会话」面板
package.json
License
MIT