前言¶
在 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,二选一:
- 在 DSH 「插件」页面启用(会写入
dsh.profile.bundles); - 或手工把
"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。
典型用法¶
界面¶
- 在侧栏目标会话的行菜单中选 分享会话。
- 选择 完整记录 或 仅对话,按需打开「包含 DSH 自动注入的上下文」。
- 查看预览后点击 复制 Markdown、导出 .md 或 导出 HTML。
- 导出后可用 打开文件 或 打开所在文件夹 定位产物。
命令行(不依赖正在运行的 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