READMESource: main@893b23bb
dsh-conversation-folders
DSH 插件:每个会话一个专属文件夹 + 对话记录存档 + 调研后自动分类归档 + 删除会话时彻底清理。
作者的话 这是我自己做的第一个插件,全代码由 DeepSeek 大肥鱼 生成 🐟。 新手自用作品,平时用着觉得挺顺手,就分享给大家;可能还有一些我还没发现的 bug(很多知识还在学,不太清楚哪里会出问题)。 欢迎大家试用和反馈,希望能和大家一起进步 🙏
功能
- 专属文件夹:在已创建的工作区内开始对话(发送第一条消息)时,自动在工作区下创建
会话-<短ID>/文件夹,并把该会话的工作目录指过去——之后助手创建的所有文件(表格、图表、文档…)都落在文件夹里,不污染工作区根目录。 - 对话记录存档:用户消息与助手回复自动追加写入文件夹根目录的
对话记录.md(每次调研结束还会追加一段"调研 N 结束"小结,列出本次整理的文件)。若插件在对话进行中才启用,或记录文件被删除,会从会话日志自动回填此前的全部真实对话(合成上下文消息不记录)。 - 调研后自动分门别类 + 自动命名:每次调研(一个回合)结束,文件夹根目录的散落文件按类型自动移入分类子文件夹,并自动命名为
调研<N>_<原文件名>(N 为该会话的调研序号):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-其他/
- 删除会话 → 彻底删除(含菜单入口):会话「…」菜单里新增 「删除对话及其内容」(位于「归档会话」与「复制 ID」之间),点击后弹出自定义确认框,文案为 「将会删除对话及其所有内容,请谨慎考虑。」;确认后删除该对话、会话持久化产物、会话文件夹(对话记录 + 分类文件)与状态映射,不过回收站(Windows 下先清除只读属性再递归删除并校验)。关机或停止会话不会误删文件夹。
- 惰性分配:仅新建空白占位会话不会产生文件夹,真正发送第一条消息才分配,避免空文件夹堆积。
会话菜单由客户端半区提供(
client.js+package.json的dsh.client)。安装或升级后需刷新页面(必要时重启 DSH)让客户端模块生效。
目录结构示例
D:\deepseek工作区\
├─ 会话-29c06ebbe914\
│ ├─ 对话记录.md
│ ├─ 01-表格\
│ │ └─ 调研1_行业数据对比.xlsx
│ ├─ 02-图表\
│ │ └─ 调研1_趋势图.png
│ └─ 03-文档\
│ └─ 调研1_研究报告.md
└─ 其他工作区内容…
安装
在 DSH 的「插件」管理界面添加 dsh-conversation-folders,或通过 CLI:
dsh plugin --profile desktop add npm:dsh-conversation-folders
本目录的开发版以 file: 方式链接安装(见 profile 的 package.json)。
配置
在 cordis.patch.yml 中可设(键均可省略):
- id: dsh-conversation-folders
name: dsh-conversation-folders
config:
enabled: true # 关闭后停止管理文件夹(已有文件夹与映射不删除)
folderPrefix: 会话- # 会话文件夹名前缀,实际名 会话-<短ID>
transcriptName: 对话记录.md # 对话记录文件名
categorize: true # 调研结束后自动分类归档
runNamePrefix: 调研 # 自动命名前缀:调研<N>_<原文件名>
deleteTimeoutMs: 12000 # 删除后等待会话产物消失的最长毫秒数
# categories: # 可选:覆盖扩展名分类表 { 分类名: [扩展名…] }
验证
- 在某个工作区内新建对话并发送一条消息;
- 检查工作区目录:应出现
会话-<短ID>/,内含对话记录.md; - 让助手创建表格/图表等文件,回合结束后文件自动进入
01-表格/等分类文件夹并带调研1_前缀; - 删除该对话:
会话-<短ID>/连同全部内容一并消失(不经过回收站)。
插件运行状态可查询:
GET /conversation-folders/api/status— 映射统计GET /conversation-folders/api/mappings— 全部映射详情
原理
- 不动 header.cwd:通过持久化的
working-directory/change会话事件引导工作目录(DSH 内置 workingDirectory 投影折叠该事件),侧边栏工作区分组完全不受影响; - 对话记录:监听
session/event的user/message、assistant/message写入 markdown;只记录source.kind === "user"的真实用户输入(runtime-context / skill-catalog / time-context 等合成消息不记录);记录文件缺失时从会话事件日志回填全部历史对话; - 删除检测:
session/disposed后轮询磁盘上的会话产物目录(~/.dsh/sessions/...),确认产物消失(真正的"删除会话"动作,例如 dsh-session-manager 的删除流程)后才删除文件夹;关机/停止会话产物仍在,文件夹保留; - 安全校验:所有删除动作经过 realpath 正规化 + 父目录精确匹配 + 非符号链接/文件检查,杜绝误删;删除后校验目标确已消失并重试。
发布到插件市场(DSH Market)
本包已满足 awesome-dsh-plugin 收录的硬性要求:package.json 声明 dsh.bundle、可独立安装、真实可运行代码、MIT 许可、无安装期脚本。
- 把本仓库推送到 GitHub(仓库需创建满 1 天,CI 自动检查),并给仓库加
dsh-plugintopic; - 向 registry 提一个 PR,新增
data/plugins/<owner>__dsh-conversation-folders.yml,内容模板见market-entry.yml(把<OWNER>换成你的 GitHub 用户名); - 可选:
npm publish发布为dsh-conversation-folders(包名已验证可用),并在package.json里补repository字段指回仓库,市场会展示下载量; - 可选:放置
screenshots.json(1–8 张 GitHub 托管图片)让市场详情页展示截图。
市场收录后会从 awesome-dsh-plugin.com 的目录一键安装。
限制
- 仅整理会话文件夹根目录的散落文件;已有子目录与其中的文件不会被打散;
- 被其他程序占用中的文件(如 Excel 打开中的 xlsx)可能无法移动,稍后重试仍失败则保留原位并记日志;
- 删除等待上限默认 12 秒:超时仍未确认会话产物消失则保留文件夹(视为停止而非删除)。
License
MIT
No comments yet. Be the first to write one.