DSH SessionGraph:把当前会话整理成可编辑导图

前言

DSH 社区目录是一个独立站点,与 DeepSeek / 幻方没有官方从属关系。在 DSH「一切皆插件」的思路下,很多开发者会围绕自己的会话流程加装轻量工具。

长会话里常见的问题是:中间有大量调试、报错、反复修改和终端输出,最后真正需要留下的却只有结论、决策、待办和文件产出。dsh-sessiongraphlwklbb 维护的一个 DSH web 插件,用来读取当前会话,把内容整理成可编辑、可复制的结构化大纲与导图。

下面介绍它的功能、安装方式、典型用法和提取规则。

这是什么

dsh-sessiongraph 是一个给 DSH 用的小插件,目标是把当前会话整理成可编辑、可复制的结构化大纲与导图。

它的特点是:

  • 只在当前 DSH 会话页面上增加一个按钮入口。
  • 不接管原来的输入框。
  • 不修改会话持久化文件。
  • 只读当前页面已有的会话快照。
  • 真正功能在浏览器侧完成。
  • MIT 许可,维护者是 lwklbb

package.json 中的 package 名是 dsh-sessiongraph,仓库地址是 https://github.com/lwklbb/DSH-SessionGraph

核心功能

插件在会话输入框上方右侧增加一个 SessionGraph ▾ 按钮。

点击后,它会读取当前会话内容,提取以下信息:

  • 会话目标
  • 最终结论
  • 关键要点
  • 决策与取舍
  • 待办 / 下一步
  • 文件 / 产出

同时,它会过滤一些明显不需要进入导图的内容,例如:

  • stack trace
  • 终端日志
  • stdoutstderrexit code
  • npm errpnpm err
  • warningdebugverbose 日志
  • 重复试错过程
  • 大段终端命令输出

整理结果可以在弹窗里继续编辑,支持手动修改节点、增加子节点、删除不想要的节点,也支持一键复制导出结果。

三种导图模式

插件支持三种模式:

模式 内容 适合场景
默认导图 会话目标、最终结论、关键要点、决策与取舍、待办、文件 / 产出 平时整理一段会话
精简导图 只保留最终结论和待办 快速复盘、交接、写 commit 前看一眼
详细导图 默认导图 + 压缩后的时间线 会话比较长,想回头看过程时使用

导出格式

目前支持这些格式:

  • Markdown 大纲
  • Mermaid mindmap
  • PlantUML mindmap
  • XMind 缩进文本
  • 待办清单简介

这些格式都适合复制后继续编辑,例如贴进文档、代码仓库说明、复盘记录或思维导图工具。

安装与启用

插件要求:

  • engines.node: >=20
  • dsh.client.platform: web

在插件目录里执行:

dsh plugin --profile web add .

这条命令的作用是把当前目录作为插件加入 DSH 的 web profile。

安装后重启或刷新 DSH,打开一个已有内容的会话,就能看到输入框上方右侧的 SessionGraph ▾ 按钮。

如果只是想确认安装入口,不建议凭仓库名直接拼接远程安装命令;已核实资料里给出的本地安装方式就是上面的 dsh plugin --profile web add .

典型用法

下面是一组常见流程:

  1. 打开一个已经有一定内容的 DSH 会话。
  2. 点击输入框上方右侧的 SessionGraph ▾ 按钮。
  3. 选择默认导图、精简导图或详细导图。
  4. 在弹窗里检查生成的节点。
  5. 手动删除无关节点,补充遗漏结论或待办。
  6. 点击一键复制,导出 Markdown、Mermaid、PlantUML、XMind 缩进文本或待办清单简介。

这个流程适合用在:

  • 一次开发会话结束后做简短复盘。
  • 把长对话压缩成一份可交接的要点。
  • commit message 或任务记录前快速回顾结论。
  • 把会话中的文件产出整理成清单。

提取规则

主要解析逻辑在 lib/extractor.js。当前实现是本地规则,不依赖额外模型。

大致流程如下:

  1. 从当前 ConversationSnapshot 里读取用户消息和助手消息。
  2. 默认跳过 reasoning / thinking 内容。
  3. 对每一行做清理,过滤明显噪声。
  4. 优先保留最后几条助手回复里的结论。
  5. 识别一些结论类关键词。
  6. 从文本里抓取疑似文件路径,放进“文件 / 产出”节点。

它会识别这些关键词:

  • 结论
  • 总结
  • 完成
  • 结果
  • 决定
  • 待办
  • 下一步
  • TODO
  • Decision
  • Summary

文件路径会被放到“文件 / 产出”节点里,便于后续整理。

需要注意的是,这套规则不是完整记录所有过程,而是为了快速得到一份现在还能用的信息。

项目结构

仓库结构大致如下:

DSH-SessionGraph/
├─ cordis.patch.yml
├─ lib/
│  ├─ index.js        # host 侧入口,目前保持 no-op
│  ├─ client.js       # 浏览器 UI 和 slot 注册
│  └─ extractor.js    # 会话解析、导图生成、格式导出
├─ test/
│  └─ extractor.test.mjs
├─ docs/
│  └─ sessiongraph-showcase.png
├─ package.json
├─ LICENSE
└─ README.md

其中:

  • lib/index.js 是 host 侧入口,目前只是空实现。
  • lib/client.js 负责浏览器侧 UI 和 slot 注册。
  • lib/extractor.js 负责会话解析、导图生成和格式导出。

核心函数包括:

  • extractMessages(snapshot):从会话快照提取可用消息。
  • summarizeSession(snapshot, mode):按模式生成导图树。
  • exportGraph(tree, format):把导图树导出为 MarkdownMermaidPlantUMLXMindTODO brief。

适用场景与注意

适合以下场景:

  • DSH 会话比较长,希望快速提取结论。
  • 需要在开发、调试、排查问题后整理一份要点。
  • 需要把会话中的待办和文件产出单独复制出来。
  • 想把一次会话转成可编辑的 MarkdownMermaidPlantUMLXMind 大纲。

使用前需要注意:

  • 它只读取当前页面已有的会话快照,不修改会话持久化文件。
  • 它会主动过滤一部分过程噪声,因此结果不是完整聊天记录。
  • 它会以当前 DSH 进程拥有的权限运行,安装前应检查源码、依赖和许可证。
  • 当前实现面向 web 端,依赖关系在 package.json 中声明。

项目地址:

  • GitHub: https://github.com/lwklbb/DSH-SessionGraph
  • 许可证:MIT © 2026 lwklbb
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye