dsh-session-share:在 DSH 侧栏把会话导出为 Markdown 或 HTML

前言

在 DeepSeek Harness(DSH)里跑完一轮智能体会话后,常见需求是把记录留给同事评审、写进文档,或离线归档。手动复制侧栏内容往往丢格式、丢工具调用与图片;截屏则无法检索。社区插件 dsh-session-share(维护者 Nay-1)在侧栏会话行的「⋯」菜单里增加 分享会话,在面板里选范围、看预览,再复制 Markdown 或导出文件。插件归类为客户端,当前版本 v1.0.0(MIT 许可证)。DSH 生态主张「一切皆插件」;SkillHub 目录页 是社区站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-session-share 给 DSH 侧栏「会话行 ⋯ 菜单」加一项 分享会话,位置在「归档会话」与兄弟插件「删除会话」之间(菜单插槽 sidebar.workspaces.session.menu.item,order 为 450)。点开后在框架浮层 shell.overlay 上打开面板(id: session-share.panel),由 primitives 的 Modal 渲染。

设计上是只读:除向你选择的目录写入导出文件外,不修改 DSH 会话数据。

核心功能

面板里的操作

下面介绍面板上的四个控件与三个动作。

控件 说明
内容范围 完整记录:用户/助手、思考过程、工具调用与结果逐步保留;仅对话:仅用户与助手正文,同一轮助手分步消息合并为一段。切换即重新取预览
包含 DSH 自动注入的上下文 默认关。打开后保留 system-reminder、运行环境快照等注入消息,并标注「由 DSH 自动注入」
预览 与导出同一份 Markdown 的前 8000 字符,固定高度 240px,内容区滚动
保存目录 默认依次尝试「下载」「桌面」、家目录;可改,路径记在 localStorage

三个动作:复制 Markdown、导出 .md、导出单文件 HTML。导出完成后可出现 复制路径、打开所在文件夹、打开文件(Windows / macOS / Linux 分别用 explorer.exe、open、xdg-open 等,由 host 子进程 spawn;接口只回报「已请求系统打开」,不谎报是否成功)。

导出形态

Markdown

  • 会话含图片时:在保存目录下新建同名文件夹,内含 .md 与 <文件名>.assets/(附件、工具结果图、正文引用的工作区图复制进去,正文用相对路径引用)。
  • 纯文字(含「图只在围栏代码里」)时:直接输出单个 .md,不单独建文件夹。
  • 同名已占用则顺延 (2)、(3) 等。

HTML

  • 单文件自包含:样式内联、图片多为 data: URI,深浅色跟随系统;思考与工具调用用 <details> 折叠。
  • 图片总量超过 25 MB 时改为同名 .assets/ 目录 + 相对引用,并在面板说明。

默认不截断工具结果、思考过程与参数;需要截断时可通过 API 传 maxToolChars / maxReasoningChars / maxArgumentChars,或使用 CLI 的 --max-chars。

图片与边界

图片来源包括:记录中的附件对象(attachmentId)、工具结果里的图、以及对话正文里按路径引用的工作区图片。第三类仅当路径落在会话 header 的 cwd(会话工作目录)内、扩展名与大小符合规则时才会打包;解析失败的引用保留在正文中,面板会按原因分组提示。围栏代码块与行内代码里的 ![](...) 不计为引用。

安装与启用

README 给出的安装方式如下(需将占位符换成本地克隆或解压后的仓库绝对路径):

dsh plugin --profile desktop add "file:<本仓库所在目录的绝对路径>"

装完后还须让 DSH 加载该 bundle,二选一:

  1. 在 DSH 「插件」页面启用(会写入 dsh.profile.bundles);
  2. 或手工把 "dsh-session-share" 加入 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 数组。

改动需重启 DSH 后生效(bundle 与 client 均在启动时加载)。

卸载:

dsh plugin --profile desktop remove dsh-session-share

再从 dsh.profile.bundles 中删除 "dsh-session-share" 并重启。

运行环境要求(来自 package.json):Node ^22.15.0 || >=24.0.0,peer 依赖 cordis >=4.0.0-rc <5。

典型用法

界面

  1. 在侧栏目标会话的行菜单中选 分享会话。
  2. 选择 完整记录 或 仅对话,按需打开「包含 DSH 自动注入的上下文」。
  3. 查看预览后点击 复制 Markdown、导出 .md 或 导出 HTML。
  4. 导出后可用 打开文件 或 打开所在文件夹 定位产物。

命令行(不依赖正在运行的 DSH)

仓库 tools/export.mjs 用 mock 的 cordis ctx 加载插件 host 半,逻辑与界面一致;DSH_HOME 优先,缺省为 ~/.dsh。

node tools/export.mjs --list
node tools/export.mjs <sessionId> --preview
node tools/export.mjs <sessionId> --format html --dir D:/share
node tools/export.mjs <sessionId> --scope chat --format md --reveal
node tools/export.mjs <sessionId> --max-chars 4000
node tools/why-skipped.mjs <sessionId>

MSYS/Git Bash 下 --dir 需传 host 视角的绝对路径(例如 D:/share)。

HTTP API 位于 /session-share/api/*,调用须带请求头 x-dsh-plugin-call: 1(详见 README「HTTP 端点」一节)。

适用场景与注意

适合:需要把 DSH 会话完整或精简地分享给他人、写入 Wiki/PR、或本地归档;需要带图片的 Markdown 文件夹或单文件 HTML 离线阅读。

注意:

  • 插件在 DSH 的 desktop host 子进程中运行,具备读写你指定导出目录、读取会话日志与附件、以及 spawn 系统打开命令的权限。安装前请阅读 GitHub 源码 与 MIT 许可证,确认可接受其行为。
  • DSH 若已将超大工具输出 spill 到临时文件,会话里只会留下省略说明,导出无法恢复未写入日志的正文——这与本插件无关。
  • 使用 file: 安装时,pnpm 为拷贝安装;改源码后需按 README 说明手动同步到 ~/.dsh/profiles/desktop/node_modules/dsh-session-share,否则可能仍是旧副本。

结尾

dsh-session-share 把「分享会话」收进侧栏菜单:预览与导出同源、只读不改会话,并处理 Markdown/HTML 与图片打包。可从社区目录了解概况,从仓库 README 查看安装、API 与 CLI 细节。

  • 目录页:https://www.skillhub.cn/plugins/Nay-1/dsh-session-share
  • GitHub:https://github.com/Nay-1/dsh-session-share
羽毛球分组比赛记分
小程序二维码

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

Xiaoye