dsh-session-delete-next:爲 DSH 0.2.0-rc.2 側欄補上「刪除會話」

前言

DeepSeek Harness(DSH)把界面與能力拆成 Cordis 插件,側欄裏每條會話行通常帶有固定、重命名、分叉、歸檔等官方菜單項。若你本地積累了大量測試會話或誤開的空會話,側欄沒有「刪除」時,只能依賴歸檔或手動清理磁盤目錄,既不方便,也容易和 workspace 賬目不一致。

插件市場裏的 dsh-session-delete 面向較早的 peer 範圍(^0.1.0-rc.5),在 0.2.0-rc.2 運行時往往裝不上。維護者 ljp888 在 GitHub 倉庫 ljp888/dsh-session-delete-next 提供了重寫版:走官方 slot,不再依賴 DOM 注入。社區目錄頁見 SkillHub(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

下面介紹它做什麼、怎麼裝、怎麼用,以及安裝前需要知道的限制。

這是什麼

dsh-session-delete-next 是 DSH 的客戶端插件(宿主 + 瀏覽器各一半),在側欄每條會話行的 … 菜單中增加 刪除會話,永久刪除該會話的全部本地記錄,不可恢復。

  • 目標運行時:0.2.0-rc.2
  • 包版本(資料):1.0.0
  • 許可證:MIT
  • 本包未發佈到 npm,安裝方式以倉庫 README 爲準,不要用名稱臆造 dsh plugin add github:... 一類命令。

核心功能

入口與行爲

入口 菜單項 行爲
會話行 … 菜單 刪除會話 永久刪除該會話的全部本地記錄,不可恢復

要點如下:

  1. 危險操作用紅色菜單項,並彈出獨立確認對話框,明示「不可恢復」,並顯示會話標題。
  2. 運行中的會話一律拒絕刪除(含當前會話)。宿主返回 409 live,對話框給出提示。
  3. 刪除成功後側欄該行立即消失,無需刷新頁面(複用官方已轉發的 api-session/removed 事件)。
  4. 菜單文案跟隨 GUI 語言(中文 / 英文),走官方 locale 服務。

與舊版的技術差異

0.2.0-rc.2 已開放官方擴展點,本插件通過標準 slot 註冊,側欄結構變動時不會像 DOM 注入那樣靜默失效:

  • Host(index.js):註冊同源路由 POST /dsh-session-delete-next/delete,請求體 { sessionId };刪除順序爲先刪文件、後記賬,避免「界面已隱藏但磁盤仍在」的半刪狀態;跨站 Origin 返回 403。
  • Client(client.js):註冊 sidebar.workspaces.session.menu.item(order: 500,排在 pin/rename/fork/archive 之後)與 shell.overlay(確認框)。

安裝與啓用

最省事的方式是把倉庫 clone 到 profile 的插件目錄(<profile> 默認爲 ~/.dsh/profiles/desktop):

git clone https://github.com/ljp888/dsh-session-delete-next.git \
  ~/.dsh/profiles/desktop/node_modules/dsh-session-delete-next

Windows PowerShell:

git clone https://github.com/ljp888/dsh-session-delete-next.git `
  "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-session-delete-next"

也可以手動複製整個包目錄到 <profile>/node_modules/dsh-session-delete-next/,然後:

  1. 在 <profile>/cordis.patch.yml 追加一行掛載(文件被 HMR 監聽,保存後熱加載):
- insert:
    - id: dsh-session-delete-next
      name: dsh-session-delete-next
  1. 瀏覽器刷新一次,側欄會話 … 菜單中應出現「刪除會話」。

不要把本包寫進 profile 的 package.json 的 dependencies:包不在 npm 上,後續 pnpm install / dsh plugin 可能去 registry 拉取而失敗;在 profile 裏跑 pnpm install 也可能剪掉該目錄,重裝即可。

宿主加載成功時,可在 ~/.dsh/logs/desktop-next.log 看到類似:

[dsh-session-delete-next] host ready: POST /dsh-session-delete-next/delete

典型用法

  1. 在側欄找到已結束、非當前運行的會話(正在運行或仍打開的會話會被拒絕)。
  2. 點擊該行 …,選擇紅色 刪除會話。
  3. 在確認對話框中核對會話標題,點擊 永久刪除(或取消)。
  4. 成功後該行從側欄消失;磁盤上對應會話目錄應被移除(路徑形態爲 ~/.dsh/sessions/<項目目錄>/<會話 id>/ 整目錄消失)。

若你只有一條活躍會話、無法做破壞性實測,可按 README 建議:新開一個測試會話 → 發一條消息 → 切回原會話 → 對測試會話執行刪除。

適用場景與注意

適合誰

  • 已在 DSH 0.2.0-rc.2 上使用桌面 profile,需要單條清理本地會話記錄的智能體開發者或日常用戶。
  • 需要從側欄安全入口刪除,而不是手刪目錄導致賬目不一致的場景。

已知限制(資料原文)

  • 不能刪除 live 會話;需先關閉該會話或重啓 DSH 後再刪。
  • 子智能體會話可刪;父會話側欄會隨 api-session/removed 收斂。
  • 附件不刪:~/.dsh/attachments/** 爲內容尋址、跨會話共享,刪會話不會動附件。
  • Windows 上若其他進程持有 session.lock,刪除可能報 EBUSY;對話框顯示原始錯誤,磁盤狀態不變,可重試。
  • 未實現按工作區批量刪除,僅支持單會話。
  • index.js 中部分 fail-closed 加固不在 HMR 監聽根內,需重啓 DSH 後才能在運行實例中生效。

安裝前請自行覈對

插件在當前 DSH 進程權限下讀寫會話目錄與 workspace 賬目。安裝前應閱讀 index.js 與 client.js,確認行爲與 MIT 許可證可接受。

結尾

dsh-session-delete-next 在 0.2.0-rc.2 上補上了側欄「刪除會話」,用官方 slot 與先刪文件後記賬的流程,替代因 peer 不兼容而難以安裝的 dsh-session-delete。安裝以 clone 到 profile 的 node_modules 並追加 cordis.patch.yml 爲準。

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

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

小夜