dsh-delete-session-menu:在 DSH 側欄徹底刪除會話

前言

DeepSeek Harness(DSH)側欄裏,單條會話自帶固定、重命名、分叉、歸檔等操作,但會話日誌按設計是隻追加、長期累積的,官方並沒有「從列表裏刪掉這條會話並清掉磁盤上的日誌目錄」這一項。試驗性對話、誤建會話、或需要把工作區註冊表理順時,往往只能手動刪目錄、改 registry,且多端已連接的客戶端不一定立刻去掉對應行。

下面介紹社區插件 dsh-delete-session-menu(維護者 ba1ying2,目錄分類爲「記憶」):在每條會話的 … 菜單裏增加 Delete conversation,確認後刪除持久化會話目錄、從工作區註冊表解綁,並向所有客戶端廣播移除。

這是什麼

dsh-delete-session-menu 是 DSH 插件包,在 Web 側欄的會話行菜單中註冊刪除入口(中英文界面),由宿主執行真正的刪除邏輯,客戶端負責確認對話框與刪除後的頁面刷新。它補上 DSH 原生菜單裏缺失的「刪除會話」能力,而不是替代固定或歸檔。

核心功能

確認刪除後,插件會依次完成這些事(與 README 描述一致):

  1. 刪除 <DSH_HOME>/sessions/<project>/session-<id>/ 目錄;同一 project 下其它會話不動;僅當 project 目錄變空時才 pruning。
  2. 從工作區註冊表的 sessionIds 以及固定 / 歸檔集合中移除該 id。
  3. 若會話仍在內存中活躍,先在刪文件前從內存 store detach,避免刪除後又被寫回。
  4. 發出 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 後刷新頁面即可拾取新版本。

典型用法

  1. 在側欄找到目標會話行,懸停。
  2. 點擊行末 …。
  3. 選擇 Delete conversation(中文環境下爲對應譯文)。
  4. 在確認對話框中確認。對話框會說明刪除不可恢復。

無需額外配置文件;刪除完全由菜單與確認流程觸發。

如需從集成側直接調用,宿主暴露路由(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 與倉庫爲準。

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

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

小夜