前言¶
DeepSeek Harness(DSH)用久了,會話列表會堆滿長期不再打開的線程。手動逐條歸檔費時,而會話相關的派生數據(例如投影緩存)也會佔磁盤。若只靠刪文件來「減負」,很容易誤傷 transcript 或附件。下面介紹社區插件 dsh-auto-archive:在 DSH 官方歸檔 API 之上做定時巡檢,按可配置天數歸檔閒置會話,並對已歸檔且長期閒置的會話清理可重建的 projection cache,不刪除會話記錄、附件與工作區產出。
這是什麼¶
dsh-auto-archive 是面向 DSH 桌面版 / Web 的本地插件,維護者爲 StanElka,在 SkillHub 等社區目錄中歸類爲「記憶」。它解決兩類問題:一是把超過閒置閾值的會話移入 DSH 歸檔列表(仍可恢復);二是對已歸檔且超過更長時間未用的會話,刪除 DSH 派生的投影緩存文件,需要時由 DSH 按需重建。歸檔與清緩存均通過 DSH 內核暴露的服務與 registry 完成,邊界在 README 中寫得很明確。
核心功能¶
下面表格概括默認行爲(均可通過配置與設置面板修改):
| 能力 | 默認值 | 行爲 |
|---|---|---|
| 自動歸檔 | 閒置 14 天 | 調用官方 workspaceRegistry.archiveSession();歸檔後會話仍在歸檔列表中可恢復。 |
| 緩存清理 | 已歸檔且閒置 90 天 | 僅刪除 ~/.dsh/storages/session_projcache/sessions/<id>.json 投影緩存。 |
| 定時巡檢 | 每 30 分鐘 | 後臺靜默執行;設置面板可預覽或立即運行。 |
| 保護 | 置頂會話等 | 可選按 session id、workspace id 或 cwd 片段加入白名單,匹配項不歸檔。 |
| 審計 | 最近 30 次 | 記錄每次歸檔/清理詳情;支持一鍵恢復已歸檔會話。 |
安全邊界(插件設計上僅兩類寫操作):
- 歸檔狀態 — 通過 registry API 增刪
archivedSessionIds,可逆。 - 投影緩存 — 刪除上述
session_projcache下的 json,DSH 可重建。
插件不會刪除:transcript(如 session.v4.jsonl.zstd 及會話目錄)、~/.dsh/attachments、溢出文件、工作區或項目文件,也不會刪除對話產出的實質內容。進行中的會話始終跳過(不傳 stopActivity),不會打斷正在運行的 turn、job 或 subagent。
安裝與啓用¶
DSH 桌面 profile 由 Electron 應用管理,安裝需使用 CLI。資料中的命令如下(注意倉庫標識與目錄頁展示名可能不同,以 README 爲準):
dsh plugin --profile desktop add github:elk-9527/dsh-auto-archive
本地開發目錄安裝:
dsh plugin --profile desktop add "file:D:/path/to/dsh-auto-archive"
安裝後完全退出並重新打開 DSH(宿主插件在啓動時加載)。在 左下角頭像 → Settings → 自動歸檔 打開面板,位置在 General / Built-in plugins 旁。
卸載:
dsh plugin --profile desktop remove dsh-auto-archive
插件版本 0.1.0,許可證 MIT,宿主側要求 Node ≥ 22,無第三方 npm 依賴。
配置與典型用法¶
配置保存在 ~/.dsh/auto-archive/config.json(首次運行自動創建,也可在面板編輯)。默認結構示例:
{
"version": 1,
"autoArchive": { "enabled": true, "idleDays": 14, "checkIntervalMinutes": 30 },
"cacheCleanup": { "enabled": true, "unusedDays": 90 },
"protect": { "pinnedSessions": true, "sessionIds": [], "workspaces": [] },
"limits": { "maxOperationsPerRun": 50 },
"dryRun": false
}
要點說明:
idleDays:末次活動超過該天數的會話會被歸檔;末次活動取 transcript 修改時間與createdAt的較大值。unusedDays:已歸檔且閒置更久的會話,其投影緩存會被清理。protect.workspaces:workspace id 或大小寫不敏感的 cwd 片段;匹配的工作區永不歸檔。dryRun: true:每次自動運行變爲預覽,不寫歸檔狀態、不刪緩存。limits.maxOperationsPerRun:單次運行操作上限,避免首次啓用一次性掃光歷史。
運行狀態在 ~/.dsh/auto-archive/state.json(原子寫入,保留最近 30 次運行)。
設置面板:查看狀態卡片、改配置、瀏覽會話清單與歷史,並觸發預覽或立即執行。
本機 HTTP API(前綴 /dsh-auto-archive,僅 loopback Host,否則 403)可用於腳本或排查:
| 方法 | 路徑 | 用途 |
|---|---|---|
| GET | /dsh-auto-archive/api/state |
配置、上次/下次運行、計數 |
| GET | /dsh-auto-archive/api/sessions?limit=200 |
會話清單(含閒置天數與是否 eligible) |
| GET | /dsh-auto-archive/api/history |
最近 30 次運行 |
| POST | /dsh-auto-archive/api/config |
深度合併並保存配置 |
| POST | /dsh-auto-archive/api/run |
{"dryRun":true} 預覽 / {"dryRun":false} 執行 |
| POST | /dsh-auto-archive/api/restore |
{"sessionIds":["..."]} 取消歸檔 |
典型流程:先設 dryRun: true 或在面板預覽,確認候選會話數量與保護規則無誤後,再關閉 dry-run 或 POST 正式執行;誤歸檔可用 restore API 或面板一鍵恢復。
適用場景與注意¶
適合:長期本地使用 DSH、會話數量多、希望列表保持可讀、又需要保留完整 transcript 與附件以備查或恢復的用戶。
已知限制(來自 README):
- 緩存清理僅針對已歸檔會話,活躍列表上的投影緩存不會被本插件清理。
- 「對話緩存」指 projection cache;transcript 與附件按設計不刪,磁盤佔用仍可能較大,歸檔不會 magically 釋放全部空間。
- 歸檔遵循 DSH 自身的活動判定;其他插件仍視爲活躍的會話會被跳過。
- 修改插件代碼後需重啓 DSH,宿主在啓動時加載。
權限與安全:插件以當前 DSH 進程權限讀寫 ~/.dsh 下配置、狀態及上述緩存路徑,並調用 registry 歸檔 API。安裝前建議在 GitHub 閱讀源碼與 MIT 許可證,確認行爲符合預期。DSH 生態強調「一切皆插件」;SkillHub 等目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-auto-archive 把「閒置歸檔」和「已歸檔會話的可重建緩存清理」做成可配置、可審計的後臺任務,並在文檔中劃清不刪 transcript 與附件的邊界。需要試用或查看說明時,可打開社區目錄頁與倉庫:
- 目錄頁:https://www.skillhub.cn/plugins/StanElka/dsh-auto-archive
- GitHub:https://github.com/StanElka/dsh-auto-archive
安裝命令以 README 中的 github:elk-9527/dsh-auto-archive 爲準;若倉庫地址與目錄不一致,以你實際 clone / add 的來源爲準。