dsh-conversation-folders:爲每個 DSH 會話分配專屬文件夾並自動整理

前言

在 DeepSeek Harness(DSH)裏做調研或寫代碼時,助手往往會在工作區根目錄生成表格、圖表、文檔等文件。多開幾個對話後,根目錄容易混雜,事後也很難把某次對話的產出和聊天記錄對應起來。常見做法是手動建子目錄或事後整理,既費時間,也容易漏刪停用的會話殘留。

下面介紹社區插件 dsh-conversation-folders(維護者 myqy91615-web):在已選工作區內,爲真正開始對話的會話創建以標題命名的文件夾、把會話工作目錄指過去,並寫入對話記錄;對話空閒一段時間後再按類型歸檔散落文件;刪除會話時可連同文件夾一併清理。插件已收錄 awesome-dsh-plugin 列表,當前版本 0.4.0,許可證 MIT。

這是什麼

dsh-conversation-folders 是 DSH 的 Cordis 插件,定位可以概括爲:每個會話一個專屬文件夾(以對話標題命名)、對話記錄存檔、空閒後自動分類歸檔、刪除會話時徹底清理。

它不修改 DSH 側邊欄工作區分組的展示方式,而是通過持久化的 working-directory/change 會話事件,把該會話的工作目錄引導到工作區下的 會話-<對話標題>(標題尚未生成時暫用 會話-<短ID>)。作者說明這是其第一個插件,代碼由 DeepSeek 大肥魚輔助生成,歡迎試用並在 GitHub Issues 反饋問題。

目錄頁:https://www.skillhub.cn/plugins/myqy91615-web/dsh-conversation-folders
GitHub:https://github.com/myqy91615-web/dsh-conversation-folders

核心功能

專屬文件夾與惰性分配

在工作區內發送第一條用戶消息時,插件在工作區下創建文件夾並把該會話的工作目錄指過去;僅新建空白佔位會話、未發消息時不會創建文件夾,避免空目錄堆積。

文件夾名儘量與側邊欄對話標題一致(前綴默認 會話-)。標題尚未生成時先用短 ID;若開啓 renameToTitle,在空閒整理時可一次性改名爲標題名,之後標題再變也不會再移動文件夾,以免已展示過的文件路徑失效。

對話記錄存檔

用戶消息與助手回覆會追加寫入文件夾根目錄的 對話記錄.md(文件名可在配置裏改)。合成上下文類消息(如 runtime-context、skill-catalog 等)不寫入。若插件在對話中途才啓用,或記錄文件被刪,會從會話事件日誌回填此前的真實對話。

空閒後自動分類與命名

對話進行中不會移動任何文件,助手創建的文件在會話文件夾根目錄,路徑在對話裏始終有效。當會話結束且長時間無新任務(默認連續 10 分鐘無任何會話事件,idleDelayMs 默認 600000 毫秒)後,才把根目錄散落文件按擴展名移入子目錄,並命名爲 調研<N>_<原文件名>(N 爲整理序號,僅在實際移動了文件時遞增),同時在 對話記錄.md 追加「整理」小結。

默認分類包括:

  • 01-表格/(xlsx、csv、ods 等)
  • 02-圖表/(png、jpg、svg、webp 等)
  • 03-文檔/(docx、pdf、md、pptx 等)
  • 04-數據/(json、parquet、sqlite、sql 等)
  • 05-代碼/(py、js、ts、html 等)
  • 06-壓縮包/(zip、rar、7z、tar 等)
  • 07-其他/

可選配置 categories 覆蓋擴展名表;idleDelayMs: 0 可關閉自動整理。

刪除會話與菜單入口

會話「…」菜單中新增 「刪除對話及其內容」(位於「歸檔會話」與「複製 ID」之間)。確認文案爲「將會刪除對話及其所有內容,請謹慎考慮。」確認後刪除對話、會話持久化產物、會話文件夾及狀態映射,不經過回收站。關機或停止會話不會誤刪文件夾;插件在 session/disposed 後輪詢會話產物目錄,確認真正刪除後才刪文件夾(默認等待上限 deleteTimeoutMs 12000 毫秒,超時則保留文件夾,視爲停止而非刪除)。

會話菜單由客戶端半區提供(client.js + package.json 的 dsh.client)。安裝或升級後需刷新頁面(必要時重啓 DSH)使菜單生效。

目錄結構示例

整理後的工作區可能類似:

D:\deepseek工作區\
├─ 會話-白酒行業調研\
│  ├─ 對話記錄.md
│  ├─ 01-表格\
│  │  └─ 調研1_行業數據對比.xlsx
│  ├─ 02-圖表\
│  │  └─ 調研1_趨勢圖.png
│  └─ 03-文檔\
│     └─ 調研1_研究報告.md
└─ 其他工作區內容…

安裝與啓用

插件詳情頁:https://awesome-dsh-plugin.com/p/myqy91615-web/dsh-conversation-folders/

通過 CLI 從 GitHub 安裝(README 推薦方式;包尚未發佈到 npm,暫不可用 dsh plugin add npm:dsh-conversation-folders):

dsh plugin --profile desktop add github:myqy91615-web/dsh-conversation-folders

也可在 DSH「插件」管理界面添加,或以本地路徑 / file: 方式安裝。安裝或升級後刷新頁面(必要時重啓 DSH)。

在 cordis.patch.yml 中可配置(鍵均可省略):

- id: dsh-conversation-folders
  name: dsh-conversation-folders
  config:
    enabled: true            # 關閉後停止管理文件夾(已有文件夾與映射不刪除)
    folderPrefix: 會話-       # 會話文件夾名前綴
    transcriptName: 對話記錄.md
    categorize: true         # 空閒後自動分類歸檔
    runNamePrefix: 調研       # 自動命名前綴:調研<N>_<原文件名>
    idleDelayMs: 600000      # 空閒多久後整理(毫秒);0 關閉
    renameToTitle: true      # 空閒整理時把短 ID 文件夾改名爲對話標題
    deleteTimeoutMs: 12000   # 刪除後等待會話產物消失的最長毫秒數

典型用法與驗證

README 給出的驗證步驟可直接復現:

  1. 在某個工作區內新建對話併發送一條消息;
  2. 檢查工作區:應出現 會話-<標題>/(標題未生成時爲短 ID),內含 對話記錄.md;
  3. 讓助手創建表格、圖表等——對話進行中文件仍在文件夾根目錄;
  4. 停止對話 10 分鐘(或調小 idleDelayMs)後:文件進入 01-表格/ 等目錄並帶 調研1_ 前綴,文件夾可改爲對話標題,對話記錄.md 追加整理小結;
  5. 通過菜單刪除該對話:對應文件夾及內容應一併消失。

需要立即整理或排查狀態時,插件提供 HTTP API(路徑前綴 /conversation-folders/api/):

  • GET /status — 映射統計、idleDelayMs、pendingIdle
  • GET /mappings — 全部映射詳情
  • POST /organize-session,body {"sessionId":"…"} — 立即整理某會話
  • POST /delete-session,body {"sessionId":"…"} — 刪除對話及全部內容

適用場景與注意

適合誰:在同一 DSH 工作區裏頻繁做多輪調研、寫報告、生成代碼和附件,希望按對話隔離文件、保留 Markdown 對話記錄、並在對話結束後再自動分門別類的人。

實現上的邊界(README「限制」一節):

  • 只整理會話文件夾根目錄的散落文件;已有子目錄及其中的文件不會被打散;
  • 被其他程序佔用的文件(例如 Excel 打開的 xlsx)可能無法移動,重試仍失敗則保留原位並記日誌;
  • 刪除等待超時則保留文件夾,避免誤判爲刪除。

安全與信任:插件以當前 DSH 進程權限讀寫工作區與會話目錄;刪除邏輯經過 realpath 正規化與父目錄校驗。安裝前建議閱讀 倉庫源碼 與 MIT 許可證,確認符合你的環境與合規要求。awesome-dsh-plugin 社區目錄爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-conversation-folders 把「一次對話的一攤文件 + 聊天記錄」收攏到工作區下的專屬文件夾,並在空閒後按類型歸檔,同時提供菜單級徹底刪除,減輕工作區根目錄被污染和會話殘留難以清理的問題。若你在 DSH desktop profile 下長期使用多會話工作流,可按上文 GitHub 命令安裝,並用 README 驗證步驟走一遍即可。

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

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

小夜