前言¶
DeepSeek Harness(DSH)側欄裏,單條會話自帶固定、重命名、分叉、歸檔等操作,但會話日誌按設計是隻追加、長期累積的,官方並沒有「從列表裏刪掉這條會話並清掉磁盤上的日誌目錄」這一項。試驗性對話、誤建會話、或需要把工作區註冊表理順時,往往只能手動刪目錄、改 registry,且多端已連接的客戶端不一定立刻去掉對應行。
下面介紹社區插件 dsh-delete-session-menu(維護者 ba1ying2,目錄分類爲「記憶」):在每條會話的 … 菜單裏增加 Delete conversation,確認後刪除持久化會話目錄、從工作區註冊表解綁,並向所有客戶端廣播移除。
這是什麼¶
dsh-delete-session-menu 是 DSH 插件包,在 Web 側欄的會話行菜單中註冊刪除入口(中英文界面),由宿主執行真正的刪除邏輯,客戶端負責確認對話框與刪除後的頁面刷新。它補上 DSH 原生菜單裏缺失的「刪除會話」能力,而不是替代固定或歸檔。
- 倉庫:ba1ying2/dsh-delete-session-menu
- 目錄頁:SkillHub 插件頁
- 許可證:MIT(見倉庫 README)
核心功能¶
確認刪除後,插件會依次完成這些事(與 README 描述一致):
- 刪除
<DSH_HOME>/sessions/<project>/session-<id>/目錄;同一 project 下其它會話不動;僅當 project 目錄變空時才 pruning。 - 從工作區註冊表的
sessionIds以及固定 / 歸檔集合中移除該 id。 - 若會話仍在內存中活躍,先在刪文件前從內存 store detach,避免刪除後又被寫回。
- 發出
api-session/removed,各已連接客戶端立刻去掉側欄行,隨後頁面 reload。
實現上分爲宿主與客戶端兩半:
| 部分 | 文件 | 作用 |
|---|---|---|
| host | lib/index.js |
POST /session-delete/exec,經 ctx.connection.requestRejection 准入;刪目錄、改註冊表、detach 活躍會話、發事件 |
| client | client.js |
註冊 sidebar.workspaces.session.menu.item(order 500)與 shell.overlay 確認框;確認後 POST 並 reload |
包聲明 dsh.bundle.patch,安裝時會把 mount 寫入 composition,一般無需手改 cordis.patch.yml。dsh.client(platform: web)與 exports["./client"] 使 dsh-client-modules 能提供 /plugins/dsh-delete-session-menu/client.js。
安裝與啓用¶
在對應 profile 下執行(命令取自倉庫 README):
dsh plugin --profile <profile> add dsh-delete-session-menu
DSH Desktop 也可走 Settings → Plugins 安裝同一包。
插件以當前 DSH 進程權限運行,安裝前建議閱讀倉庫源碼與 MIT 許可證。Node 引擎要求 >=20;peer 依賴 @deepseek-ai/cordis ^4.0.5(optional)。
本地開發時可在 profile 的 cordis.patch.yml 裏 insert mount(README Development 小節),例如 id session-delete、name dsh-delete-session-menu;改 client.js 後刷新頁面即可拾取新版本。
典型用法¶
- 在側欄找到目標會話行,懸停。
- 點擊行末
…。 - 選擇 Delete conversation(中文環境下爲對應譯文)。
- 在確認對話框中確認。對話框會說明刪除不可恢復。
無需額外配置文件;刪除完全由菜單與確認流程觸發。
如需從集成側直接調用,宿主暴露路由(README 已給出):
POST /session-delete/exec
content-type: application/json
{ "sessionId": "session-3c98f71c-5e75-4d87-8274-21fa1ce83cf8" }
成功時返回 { "ok": true, "value": { … } };失敗爲 { "ok": false, "error": "…" }(400 錯誤請求、403 准入、405 方法、500 文件系統等)。
適用場景與注意¶
適合誰: 需要在 DSH 裏真正丟掉某條會話及其持久化日誌、並讓多端側欄同步去掉該行的開發者;與工作區「記憶」相關的清理也屬於常見用途。
限制(README Limits):
sessionId必須符合session-<id>形態,用作路徑段前會做白名單校驗。- 只刪該會話目錄;
.dsh/storages/session_projcache不會動,刪除後 reload,陳舊項可能變成不可達。 - 正在運行的 agent 不會阻塞刪除:會先 detach 再刪文件。
- 刪除是永久的,以確認文案爲準。
社區插件目錄(如 SkillHub)與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本包是其中一例。
結尾¶
DSH 默認只提供固定、重命名、分叉、歸檔;dsh-delete-session-menu 在側欄補上可確認的「刪除會話」,並把磁盤日誌、註冊表與多客戶端列表對齊。需要安裝命令、API 與行爲細節時,以 README 與倉庫爲準。