在 DeepSeek Harness(DSH)中,歸檔會話通常只是將其從側邊欄隱藏,沒有明確的恢復入口,一旦歸檔往往意味着會話永久消失。@huangzhaoyu/dsh-trashbin 爲 DSH 增加了一個“回收站”機制,讓歸檔操作變成一個可控的“刪除冷靜區”。
下面介紹這個插件的安裝方式、核心功能以及技術實現細節。
功能概覽¶
該插件旨在解決歸檔會話不可找回的問題,提供以下能力:
- 歸檔即回收:歸檔的對話會進入回收站,而不是直接從界面消失。
- 恢復與移除:在 7 天有效期內,支持隨時恢復會話至原工作區;也支持手動移除。
- 自動清理:歸檔超過 7 天未恢復的會話將自動清理。
- 數據安全:插件不修改 DSH 核心,不觸碰
~/.dsh/sessions中的會話日誌文件,只負責界面狀態管理。 - 冪等性:恢復操作具備冪等性,恢復不存在的會話不會報錯。
安裝與啓用¶
所有安裝方式在完成配置後都需要重啓 DSH,插件纔會生效。
方式一:命令行安裝(推薦)¶
如果你本地環境配置了 dsh 命令,可以直接通過 profile 安裝:
dsh plugin --profile web add @huangzhaoyu/dsh-trashbin
方式二:腳本安裝(Windows)¶
插件倉庫提供了 PowerShell 安裝腳本:
powershell -ExecutionPolicy Bypass -File install.ps1
腳本會自動完成備份、複製文件、註冊依賴與 bundles 以及驗證文件完整性。
方式三:手動安裝¶
如果沒有 dsh 命令或無法使用腳本,可以手動複製文件並修改配置:
- 複製
dsh-trashbin目錄到~/.dsh/profiles/web/node_modules/@huangzhaoyu/。 - 修改
~/.dsh/profiles/web/package.json,在dependencies中添加"@huangzhaoyu/dsh-trashbin": "^0.1.0"。 - 在
dsh.profile.bundles數組中追加"@huangzhaoyu/dsh-trashbin"。 - 重啓 DSH。
卸載¶
同樣可以通過提供的腳本卸載:
powershell -ExecutionPolicy Bypass -File uninstall.ps1
或手動從 dsh.profile.bundles 和 dependencies 中移除該插件,並重啓 DSH。
機制與限制¶
回收站入口¶
安裝後,側邊欄左下角的設置按鈕旁會出現一個垃圾桶圖標,點擊進入回收站面板。
狀態存儲¶
回收站的狀態(如歸檔時間)存儲在瀏覽器的 localStorage 中。
* 注意:如果清除了瀏覽器緩存,localStorage 會被清空,此時所有歸檔對話的時間信息會丟失,表現爲全部顯示爲“過期”狀態。但這不會影響歸檔本身,也不會導致數據丟失。
自動清理邏輯¶
7 天自動清理的過濾邏輯是在打開回收站時觸發的。如果連續 7 天未打開回收站,清理順延到下次打開,用戶無感知差異。
目錄與文件結構¶
插件的主要代碼與配置文件如下:
dsh-trashbin/
├── package.json # 聲明 dsh.bundle.patch + dsh.client 雙面機制
├── cordis.patch.yml # 註冊 trashbin 行到 profile
├── install.ps1 # 安裝腳本(包含備份與回滾)
├── uninstall.ps1 # 卸載腳本
└── lib/
├── index.js # host 半邊:處理 /trash/unarchive 路由及存儲域寫入
└── client.js # browser 半邊:處理回收站按鈕、面板 UI 及 localStorage 狀態
結語¶
@huangzhaoyu/dsh-trashbin 通過獨立包的形式,在不侵入 DSH 核心的前提下,爲歸檔操作提供了“後悔藥”。對於習慣使用歸檔整理會話但擔心誤刪的開發者來說,這是一個實用的工具。