前言¶
用智能体开发时,会话往往是最重要的记录:一个话题拖上几个小时,中间有分叉、有折返、有推翻重来。想回头看「这个问题当时讨论到哪、为什么这么定」,能依赖的只有原始日志,一条条往上翻;重启项目或换个代理之后,这些上下文基本就丢了。
dsh-plugin-mindmap 针对的就是这个场景:在对话进行的同时,把内容提炼成一条条独立的故事线(storyline),渲染成可交互的地图,并持久化到工作区里。
这是什么¶
dsh-plugin-mindmap 是一个 DeepSeek Harness(DSH)插件,由 ImCabbage 维护,许可证为 MIT。一句话定位:把会话提炼为持久化的故事线,并渲染成可交互的地图。
DSH 的理念是「一切皆插件」,会话视图、RPC、持久化机制都开放给插件扩展。这个插件正是建立在这些扩展点上:Host 侧负责分类与持久化,Client 侧在会话视图中注册标签页做渲染。
核心功能¶
故事线分类:规则优先,增量运行¶
插件自动组织对话逻辑并识别关键思维分叉。每个 storyline 对应一个独立主题;分类规则优先、LLM 兜底,以增量方式运行——每条新消息只判定一次是 append、fork 还是 new,不会整体重聚类。
点击节点回顾过往问答¶
点击节点会聚焦其 storyline,并打开详情卡片,内含问题、工具调用的一行摘要与答案。较长的 storyline 会在语义断点折叠为多行,用粗体标签标注回合。
持久化的开发记忆¶
分类结果存于工作区根目录的 DEV_LOG.json——这个文件本身就是提炼出的记忆。重启项目或切换代理后,地图即时重载,0 次 LLM 调用。
会话视图中的 MindMap 标签页¶
插件在会话视图中注册 MindMap 标签页:每行一个主题,以贝塞尔渐变缎带绘制,共六种节点形状(question / decision / feature / bugfix / refactor / research)。每个标题下有状态徽章——进行中(绿)、有阻塞(琥珀)、已完成(蓝)、讨论结束(灰),后跟一行描述。
即时打开与后台进度¶
DEV_LOG.json 存在且格式版本匹配时,打开无需重建、0 次 LLM 调用;新消息在后台同步,地图自动刷新。进度呈现上,完整重建显示进度条,增量同步显示小提示。
实现方式¶
- Host 侧:MindMapGateway 服务(Typert remotes
mindmap/graph与mindmap/progress)负责读取会话日志、增量分类(规则 + LLM)、读写DEV_LOG.json,并运行带进度的后台同步任务。 - Client 侧:在
conversation.view槽位注册 MindMap 标签页,通过ctx.remote拉取图形、从DEV_LOG即时渲染,并轮询后台进度自动刷新。 - RPC:使用 Typert 协议,manifest 手写于
src/host/typert.host.js(host 端)与src/host/typert.remote-client.js(client 挂载端),使用严格的 zod 编解码。
安装与启用¶
前提条件:已安装 DeepSeek Harness(dsh 命令可用)、正在使用 web profile,且 PATH 上有 pnpm(dsh plugin 会转发给 pnpm;缺失时用 npm install -g pnpm 安装)。
安装命令:
dsh plugin --profile web add github:ImCabbage/dsh-plugin-mindmap
1、该命令用 pnpm 把包安装进 profile,并自动加入 profile 的 bundle 列表(包内声明了 dsh.bundle)。Host 与浏览器 bundle 均为预构建产物,随仓库提供,无需额外构建。安装会写入 $DSH_HOME/profiles/<name> 目录,该目录必须可写。
2、重启 web 进程:停止正在运行的 dsh web 并重新启动。仅刷新浏览器页面不够——组合在启动时固定。
3、验证挂载:
dsh --profile web --dump-config | grep mindmap
应看到 - id: mindmap 位于 name: dsh-plugin-mindmap 旁。
4、打开任意会话,视图标签栏会出现 MindMap 标签页。
典型用法¶
1、正常聊天,MindMap 在后台分类,进度显示在标签页内。
2、打开 MindMap 标签页:
- 每条彩色缎带是一个独立主题,节点按时间从左到右排列;
- 点击节点,聚焦其 storyline 并打开详情卡片(问题 / 工具调用摘要 / 答案);
- 点击空白处,清除聚焦;
- 标题下的小字是当前状态(徽章 + 描述)。
3、首次打开(或 DEV_LOG 格式升级)会带进度条运行一次完整提炼,之后每次打开都是即时的。
本地开发使用独立测试 profile,不影响日常的 web profile:
dsh plugin --profile mindmap-test add .
修改源码后执行构建,esbuild 会生成主机端 lib/index.js 与浏览器端 lib/client.js:
npm install
npm run build
构建后重启测试 profile 的 dsh web。注意构建产物 lib/ 已提交到仓库,git 安装直接使用它,因此修改源码后需将 lib/ 与源码改动一起提交。
适用场景与注意¶
适合的场景:会话周期长、话题多的开发工作;需要重启项目或切换代理后回顾过往决策过程;想以低成本复用会话结构作为开发记忆。
几点注意:
- 插件会在每个使用它的项目工作区根目录创建
DEV_LOG.json,不想提交可加入项目.gitignore。 - 首次完整提炼需要可用的模型凭据(LLM 调用);LLM 调用失败时标签页会显示警告行,请检查模型凭据与网络。
- 出现权限 /
EROFS/ 只读错误,说明安装目标目录$DSH_HOME/profiles/<name>不可写,请换到可写环境再执行。 - 该插件没有构建脚本(预构建
lib/随仓库提供),pnpm 失败后 dsh 打印的 allowBuilds 提示不适用、可忽略,应查看其上方的真实 pnpm 错误。 - 插件以当前 dsh 进程的权限运行。安装前建议先查看仓库源码并确认许可证(MIT)符合预期。
结尾¶
dsh-plugin-mindmap 把会话内容提炼为持久化的故事线地图,回顾决策、恢复上下文不再依赖翻日志。对以会话为主要工作记录的 DSH 用户来说,值得一试。
社区目录页面(独立站点,与 DeepSeek / 幻方无官方从属关系):https://www.skillhub.cn/plugins/ImCabbage/dsh-plugin-mindmap
GitHub 仓库:https://github.com/ImCabbage/dsh-plugin-mindmap