前言¶
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:...一類命令。
核心功能¶
入口與行爲¶
| 入口 | 菜單項 | 行爲 |
|---|---|---|
會話行 … 菜單 |
刪除會話 | 永久刪除該會話的全部本地記錄,不可恢復 |
要點如下:
- 危險操作用紅色菜單項,並彈出獨立確認對話框,明示「不可恢復」,並顯示會話標題。
- 運行中的會話一律拒絕刪除(含當前會話)。宿主返回
409 live,對話框給出提示。 - 刪除成功後側欄該行立即消失,無需刷新頁面(複用官方已轉發的
api-session/removed事件)。 - 菜單文案跟隨 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/,然後:
- 在
<profile>/cordis.patch.yml追加一行掛載(文件被 HMR 監聽,保存後熱加載):
- insert:
- id: dsh-session-delete-next
name: dsh-session-delete-next
- 瀏覽器刷新一次,側欄會話
…菜單中應出現「刪除會話」。
不要把本包寫進 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
典型用法¶
- 在側欄找到已結束、非當前運行的會話(正在運行或仍打開的會話會被拒絕)。
- 點擊該行
…,選擇紅色 刪除會話。 - 在確認對話框中核對會話標題,點擊 永久刪除(或取消)。
- 成功後該行從側欄消失;磁盤上對應會話目錄應被移除(路徑形態爲
~/.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 爲準。