前言¶
在 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 給出的驗證步驟可直接復現:
- 在某個工作區內新建對話併發送一條消息;
- 檢查工作區:應出現
會話-<標題>/(標題未生成時爲短 ID),內含對話記錄.md; - 讓助手創建表格、圖表等——對話進行中文件仍在文件夾根目錄;
- 停止對話 10 分鐘(或調小
idleDelayMs)後:文件進入01-表格/等目錄並帶調研1_前綴,文件夾可改爲對話標題,對話記錄.md追加整理小結; - 通過菜單刪除該對話:對應文件夾及內容應一併消失。
需要立即整理或排查狀態時,插件提供 HTTP API(路徑前綴 /conversation-folders/api/):
GET /status— 映射統計、idleDelayMs、pendingIdleGET /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 驗證步驟走一遍即可。