前言¶
在 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 验证步骤走一遍即可。