# dsh-plugin-mindmap **MindMap** —— 一个 [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness) 插件:把对话蒸馏成持久化的 **storyline**,渲染成可交互的地图。 [English](./README.md) | 中文 ![MindMap 效果图](mindmap.png) ## 核心亮点 1. **自动整理对话逻辑,识别关键的思维分叉点。** 每条 storyline 是一个独立主题;规则优先、LLM 兜底的分类是增量式的——每条新消息只判定一次(续写 / 分叉 / 新主题),从不全量重聚类。 2. **点击节点即可回顾过往问答,信息已被高效蒸馏。** 节点详情卡片展示问题、工具调用的一句话总结、以及回复;长主题会在语义转折点折成多行,转折点用加粗标签标注。 3. **自动蒸馏并保存开发信息:重启项目、更换 agent 不丢失记忆。** 分类结果持久化在工作区根目录的 `DEV_LOG.json`。重启项目或换 agent 后,地图 0 LLM 秒开,记忆完整保留。 ## 功能 - **Storyline 地图 tab**(会话视图新增 `MindMap`):一行一个主题,贝塞尔渐变丝带,六类节点形状(提问 / 拍板 / 新功能 / 修复 / 重构 / 调研)。 - **状态徽章**:每条主题标题下显示彩色状态胶囊——`进行中`(绿)/ `有阻塞`(琥珀)/ `已完成`(蓝)/ `讨论结束`(灰),后接一句话描述。 - **秒开**:`DEV_LOG.json` 存在且格式版本不变就不重建、0 LLM;新消息后台增量同步完成后自动刷新。 - **后台进度**:全量重建显示进度条,增量同步显示小提示。 ## 安装 前置条件:已安装 DeepSeek Harness(`dsh` 命令可用),且有正在使用的 web profile。 ### 从 GitHub 安装(当前方式) ```sh dsh plugin --profile web add github:ImCabbage/dsh-plugin-mindmap ``` 1. 命令会在 profile 目录里用 pnpm 安装本包,并自动把它加进 profile 的 bundle 列表(本包声明了 `dsh.bundle`)。 2. **首次从 git 源安装时**:pnpm 会要求允许本包的 `prepare` 构建脚本(用于在安装时构建 `lib/`)。按提示在 `$DSH_HOME/profiles/web/pnpm-workspace.yaml` 中加入: ```yaml allowBuilds: - dsh-plugin-mindmap ``` 然后重新执行安装命令。 3. **重启 web**:停掉当前 `dsh web` 进程后重新运行 `dsh web`。 4. 打开任意会话,视图 tab 栏出现 **MindMap** 即安装成功。 ### 从 npm 安装(发布后) ```sh dsh plugin --profile web add dsh-plugin-mindmap ``` 安装后同样需要重启 `dsh web`。 ### 本地开发安装 ```sh dsh plugin --profile mindmap-test add . ``` (用独立测试 profile,不影响日常使用的 web profile。) ## 使用 1. 正常交流即可,MindMap 在后台增量分类(进度显示在 tab 内)。 2. 打开 **MindMap** tab: - 每条彩色丝带是一个独立主题,节点按时间从左到右排列; - 点击节点:聚焦该主题并打开详情卡片(问题 / 工具调用总结 / 回复); - 点击空白:取消聚焦; - 标题下方的小字是当前状态(徽章 + 描述)。 3. 首次打开(或 `DEV_LOG` 格式升级)会做一次全量蒸馏并显示进度条;之后每次打开都是秒开。 ## 原理 - **Host 半**(`src/host`):`MindMapGateway` 服务(Typert remote:`mindmap/graph`、`mindmap/progress`)负责读会话日志、规则 + LLM 增量分类、读写 `DEV_LOG.json`、后台同步任务与进度。 - **Client 半**(`src/client`):在 `conversation.view` 槽位注册 `MindMap` tab;通过 `ctx.remote` 取图渲染,秒开旧图 + 轮询后台进度自动刷新。 - **RPC**:Typert 协议,清单手写于 `src/host/typert.host.js`(host 侧)与 `src/host/typert.remote-client.js`(client 挂载侧),严格 zod codec。 ## 开发 ```sh npm install npm run build # esbuild:lib/index.js(host)+ lib/client.js(浏览器 bundle) ``` 改动后重新构建,重启测试 profile 的 `dsh web` 即可生效。 ## License [MIT](./LICENSE)