DSH 官方支持會話歸檔,但不提供查看歸檔列表、關閉內存中的會話、取消歸檔或刪除歸檔會話的途徑。這個插件填補了這一操作缺口。
功能¶
- 瀏覽歸檔會話:列出歸檔集中的會話,顯示標題、會話 ID、工作區路徑、創建時間、運行狀態以及日誌路徑。
- 無重啓關閉會話:使用
archived_session_close將空閒的內存會話分離並持久化,無需重啓 DSH。 - 取消歸檔:將會話從歸檔集中移除,使其重新出現在側邊欄中。
- 刪除歸檔:在明確確認後,物理刪除會話日誌目錄。
- 設置 UI:在 DSH Web 設置中提供獨立的“Archived Sessions”管理頁面。
- HTTP API:提供簡單的 JSON 端點,便於自動化操作。
安裝¶
前置條件¶
- 已安裝 DSH,命令行可執行
dsh。 - 如果需要從源碼構建,需要 Node.js 和 npm。
安裝步驟¶
- 下載或構建插件包(建議使用發佈版本)。
- 執行安裝命令:
dsh plugin --profile web add dsh-external-dsh-archive-session-0.0.9.tgz
- 安裝完成後,重啓 DSH 服務。
用法¶
Agent 工具¶
| 工具 | 描述 |
|---|---|
archived_sessions_list |
列出仍指向真實會話的歸檔會話。 |
archived_session_close |
關閉空閒的內存歸檔會話(刷新並分離),無需重啓。 |
archived_session_unarchive |
將會話從歸檔集中移除,使其可通過常規 UI 訪問。 |
archived_session_delete |
徹底刪除歸檔會話。需要參數 confirm: true。 |
HTTP API¶
插件宿主在 /dsh-archive-session/api 路徑下。
| 方法 | 路徑 | Body | 描述 |
|---|---|---|---|
| GET | /archived |
- | 列出歸檔會話。 |
| POST | /close |
{ "sessionId": "..." } |
關閉空閒的內存會話。 |
| POST | /unarchive |
{ "sessionId": "..." } |
取消歸檔會話。 |
| POST | /delete |
{ "sessionId": "...", "confirm": true } |
刪除歸檔會話。 |
注意事項¶
- 刪除前必須關閉:DSH 在對話結束後仍會將會話對象保留在內存中。若要刪除處於“運行/空閒”狀態的會話,必須先使用
archived_session_close將其持久化,或重啓 DSH。 - 取消歸檔以管理:歸檔會話默認在側邊欄中隱藏。若需通過常規 UI 打開、關閉或恢復會話,需使用
archived_session_unarchive。 - 忽略過期 ID:如果歸檔 ID 不再指向真實的會話日誌,該 ID 會被忽略。
- 後端限制:刪除功能僅支持 JSONL 持久化後端(路徑通常爲
~/.dsh/sessions)。SQLite 後端會被拒絕,因爲 DSH 未提供公開的刪除 API。