dsh-unarchive:在 DeepSeek Harness 中恢復已歸檔會話

前言

DeepSeek Harness 裏,歸檔一個會話後,它通常不會再按原 workspace 位置展示;但歸檔並不等同於刪除會話。如果你只是想把這個會話找回來,而不是重建會話或手動改數據,就需要一個顯式的反向入口。

下面介紹的 dsh-unarchive 就是補這個入口:它爲 DeepSeek Harness 增加一個 /unarchive 命令和一個 unarchive_session 智能體工具,把會話從 registry-global archive set 中移除,讓它重新出現在 workspace。

這是什麼

  • 維護者:edfrey0044
  • 許可證:MIT
  • 定位:爲 DeepSeek Harness 提供恢復已歸檔會話的插件入口。

這個插件提供兩個入口:一個是人用的 /unarchive 命令,一個是智能體用的 unarchive_session 工具。兩者都把會話從 archive set 移回 workspace,而不是刪除會話或改寫會話日誌。

核心功能

/unarchive 命令

/unarchive 用於在命令入口裏操作已歸檔會話。

  • 不帶參數:列出已歸檔會話,返回會話 id 和 best-effort titles。
  • <sessionId>:恢復這個會話。

可以先運行 /unarchive 查看有哪些會話被歸檔,再運行 /unarchive <sessionId> 恢復指定會話。

unarchive_session 工具

unarchive_session 暴露給智能體調用,行爲與命令入口對應。

  • 省略 sessionId:列出已歸檔會話。
  • 傳入 sessionId:恢復一個會話。

如果你已經在會話裏,也可以直接對智能體說:

把歸檔的會話恢復一下

模型會調用 unarchive_session。如果只想查看,就省略 sessionId;如果要恢復特定會話,就傳入 sessionId

恢復效果

兩個入口的恢復效果是:

  • 會話會 live 恢復到所有已連接的 GUI client,信號爲 host/archived-sessions-changed
  • 變更會 survive restarts。
  • 插件不會 touch session logs。
  • 插件不會 touch workspace accounting slots。

寫入路徑

插件優先使用核心 API:

workspaceRegistry.unarchiveSession

噹噹前 build 沒有提供這個 API 時,它會直接寫 workspace domain 的:

archivedSessionIds

也就是說,它會直接修改同一個 durable、live-updating 的 archive set,讓會話重新出現。

bundle 集成

插件聲明瞭:

dsh.bundle.patch

因此,以 bundle 方式加入 profile 時,bundle patch 會自動加入 profile 的 layer stack。

插件本身 self-contained,除了一個 stock DeepSeek Harness profile,沒有其他額外要求。

安裝與啓用

作爲 profile bundle 安裝

先在 profile 裏添加插件:

dsh plugin --profile web add github:edfrey0044/dsh-unarchive

然後重啓 dsh web 或你的 profile。

執行上面的命令後,插件會作爲 profile bundle 的一部分進入當前 profile。由於它聲明瞭 dsh.bundle.patch,patch 會按 DSH 的 layer stack 機制自動參與組合。

手動組合到 profile

如果你不走 bundle 安裝,而是手動組合插件,需要先在該 profile 的 cordis.patch.yml 中加入 dsh-unarchive 的 insert 行,然後在 profile 目錄裏安裝包:

cd ~/.dsh/profiles/<name>
pnpm add github:edfrey0044/dsh-unarchive

經過上面的步驟,插件會進入該 profile 的依賴與 patch 組合中。之後按你的 profile 啓動方式重啓 dsh,例如重啓 dsh web

典型用法

先列出,再恢復

最常用的流程是兩步:

/unarchive

這一步列出已歸檔會話。

/unarchive <sessionId>

這一步恢復指定的會話,讓它重新出現在 workspace 的原始位置。

通過智能體恢復

如果當前環境裏有可用的 agent tools,可以直接讓智能體操作:

把歸檔的會話恢復一下

智能體會調用 unarchive_session。如果你希望它先查看歸檔列表,就讓它省略 sessionId;如果你已經知道要恢復哪個會話,就讓它傳入 sessionId

適用場景與注意

適合誰

適合使用 DeepSeek Harness 的開發者或用戶,尤其是遇到下面情況的人:

  • 會話被歸檔後想恢復,但不想手動改存儲。
  • 希望智能體也能通過工具完成歸檔恢復。
  • 只需要恢復展示集合,不需要改動會話日誌或 workspace accounting slots。

安全與審覈

插件會以當前 dsh 進程權限運行。安裝前建議先檢查源碼和許可證。當前插件許可證爲 MIT

直接寫路徑的穩定性注意

當插件走直接寫 workspace domain 的 archivedSessionIds global 的路徑時,workspace registry 的 in-memory cache 會保持 stale,直到下一次重啓。

在這個窗口內,可能會遇到兩類現象:

  • 刷新 GUI 後,會話再次被隱藏。
  • 後續發生 archive 或 workspace 變更時,會話再次被歸檔。

如果你剛完成恢復,並且發現狀態沒有穩定下來,執行一次 dsh 重啓,讓 registry cache 與 durable archive set 對齊。

可選 peer dependencies

插件聲明瞭以下 optional peer dependencies:

@deepseek-ai/cordis
@deepseek-ai/dsh-commands
@deepseek-ai/dsh-tools
@deepseek-ai/dsh-workspace

這些依賴是 optional 的。插件本身只需要一個 stock DeepSeek Harness profile。

結尾

dsh-unarchive 的價值在於給歸檔提供一個可控的反向入口:不刪除會話,不碰 session logs,不碰 workspace accounting slots,只把會話從 archive set 移回 workspace。

GitHub 倉庫:https://github.com/edfrey0044/dsh-unarchive

目錄頁:以當前 DSH 插件目錄中的 dsh-unarchive 條目爲準。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜