把 DSH Web 对话里的单轮或多轮问答导出为 PNG 图片或 Markdown,支持多选、宽度字号调节与中英文。
- 语言
- JavaScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add dsh-share在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 hellodigua/dsh-share:先查看仓库 https://github.com/hellodigua/dsh-share 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
为 DeepSeek Harness Web 对话加入分享图片能力:把单轮或多轮问答导出为 PNG 图片或 Markdown,多选交互与 DeepSeek 官网一致,宽度、字号、是否隐藏思考过程都可以在弹窗里现调。
核心能力
- 在每轮问答下方与会话顶部右侧各加入一个分享按钮,分别预选当前问答或默认全选当前已加载的问答进入选择模式
- 支持不连续多选:在问题和回答两侧各放一个联动勾选框,也可直接点击整组内容快速勾选或取消
- 长内容滚动时勾选框会吸顶跟随,直到滚出该轮问答范围才让位
- 一键复制图片到剪贴板,或下载 PNG、Markdown 文件,文件名形如
dsh-share-20260819-153012.png - 导出图片保留 Markdown、代码块、表格、图片与工具调用摘要;可单独关闭"不展示过程"只保留提问和最终回答
- 预览弹窗里可调宽度(手机 375 / 平板 768 / 电脑 1024)与字号(标准 16 / 大 18 / 超大 20),并对长图支持滚动预览
技术实现
- 语言: TypeScript(含 React 18 客户端组件)
- 关键依赖:
@deepseek-ai/dsh-client-runtime(slots/locale)、@deepseek-ai/dsh-client-ui-primitives(IconShareOutline16、Tooltip)、html-to-image(DOM → PNG Blob)、turndown+turndown-plugin-gfm(DOM → GFM Markdown) - 架构模式: 纯 Web 客户端插件。Host 端
src/index.ts是空apply(),仅声明name让 DSH 发现客户端 bundle;客户端apply()通过 DSH 官方slots.inject把两个 React 组件挂到conversation.chat.assistant-actions和conversation.session.header.utilities插槽,并通过slots.register的inject字段把ShareRuntime实例注入到每个组件实例 - 入口文件:
src/index.ts(Host 占位) +src/client/index.ts(Web 客户端 apply 与导出 API)
适用场景
想把 DSH Web 上某次有价值的对话整理出来发给同事、贴到文章里、或留档备份的普通用户。多轮问答不用手动拼接截图,勾几下就能拿到一张或一组干净的图;想拿到可二次编辑的文本版也能一键下载 Markdown。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness | ^0.1.0-rc.6 | 由 package.json 的 dsh.client.inject 与 peerDependencies 声明;cordis.patch.yml 仅声明插件插入点 |
| Node.js | ^22.19.0 || >=24.0.0 | 由 package.json#engines 声明,仅在本地构建/打包时生效 |
| React | ^18.2.0 | Web 客户端组件所依赖 |
| 浏览器 | 支持 <dialog> 与 dialog.showModal | 预览弹窗基于原生 <dialog> 元素;复制图片依赖 ClipboardItem API(不支持时回退为下载 PNG) |
| 操作系统 | 跨平台 | 仅依赖浏览器,不引入任何原生模块 |
安装方式
dsh plugin --profile web add github:hellodigua/dsh-share
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| width | 枚举 phone / tablet / desktop | 导出图片的画布宽度:手机 375、平板 768、电脑 1024(像素) | tablet |
| fontSize | 枚举 normal / large / xlarge | 导出图片正文字号:标准 16、大 18、超大 20(像素) | normal |
| hideProcess | 布尔 | 是否在导出图中隐藏思考、工具调用与中间步骤,只保留提问和最终回答 | false |
上述设置保存在当前浏览器的
localStorage(键名dsh-share.width/dsh-share.font-size/dsh-share.hide-process),跨会话保留;在隐私模式或浏览器禁用localStorage时回到默认值,分享功能不受影响。
常见问题
Q: 安装后在哪能找到分享入口?
A: 会出现两个入口:每个问答的操作区多出一个圆形分享按钮,点击进入选择模式且只预选当前问答;会话顶部右侧多出一个分享按钮,点击进入选择模式并默认全选当前已加载问答。两个入口都打开同一个多选底栏,不会动 DSH 官方的按钮栏。
Q: 导出的图片里能否隐藏思考过程、工具调用、中间步骤?
A: 可以。预览弹窗里有"不展示过程"开关,开启后每条回答只保留最后一个最终回答步骤,工具调用与中间步骤会从 PNG 和 Markdown 中一起剔除;用户消息不受该开关影响。设置会写到 localStorage,下次打开自动恢复。
Q: 复制图片到剪贴板失败怎么办?
A: "复制图片"按钮依赖浏览器的 ClipboardItem 与 navigator.clipboard.write。浏览器不支持、权限被拒或非安全上下文时,状态行会显示"当前浏览器不支持复制图片,请下载 PNG"或"复制失败,请下载 PNG"。此时改用"下载图片"按钮即可拿到 PNG,文件名形如 dsh-share-YYYYMMDD-HHMMSS.png。
Q: 插件会读取或修改 DSH 官方的按钮栏、对话 DOM 吗?
A: 不会。分享入口只挂在 DSH 官方的 conversation.chat.assistant-actions 和 conversation.session.header.utilities 插槽;多选模式通过稳定的 data-* 属性(data-chat-flow-kind、data-turn-tail、data-conversation-scroll 等)添加勾选框,不依赖 CSS Module 生成的类名,也不扫描或修改按钮栏 DOM。
Q: 能否只选择页面顶部之外、还没渲染出来的旧问答?
A: 不能。多选模式只能在当前会话页面上已经渲染并完成加载的轮次之间选择。需要更早的内容时,请先把页面向上滚动让 DSH 把那几轮问答加载到 DOM,再进入选择模式勾选。
Q: 配置(宽度、字号、不展示过程)保存在哪里?
A: 保存在当前浏览器的 localStorage,键名分别是 dsh-share.width、dsh-share.font-size、dsh-share.hide-process。在隐私/无痕模式或浏览器禁用 localStorage 时设置只对当前会话生效,分享功能本身仍可正常使用。
Q: 卸载插件会影响已经导出的 PNG 或 Markdown 吗?
A: 不会。导出文件已在用户本地,插件卸载只影响 DSH Web 端是否再显示分享按钮。通过 dsh plugin --profile web remove 卸载即可,已导出的图片和 Markdown 文件不受影响。
Q: 插件支持哪些平台?需要本地原生模块吗?
A: 仅作为 DSH Web 客户端插件运行在浏览器里,不依赖任何原生模块;只要 DSH Web Profile 正常,浏览器支持 <dialog> 与 dialog.showModal 即可使用,Windows / macOS / Linux 桌面端都可以。
上手难度
入门 — 安装后即可看到分享按钮,进入多选模式默认全选当前问答,点"生成图片"就拿到 PNG;调节宽度、字号和"不展示过程"都在弹窗内,无需阅读文档。
已知问题与限制
- 复制图片到剪贴板依赖浏览器授予 Clipboard API 权限;权限被拒或浏览器不支持时会显示对应提示,仍可下载 PNG(
src/client/preview-dialog.ts:401-418) - 无法读取的远程资源(跨域图片等)会以透明 GIF 占位跳过,不会让整张图生成失败(
src/client/preview-dialog.ts:13-14、src/client/preview-dialog.ts:19-27) - 多选模式只能在当前会话页面已经渲染并完成的问答里选择;想要更早内容需先向上滚动加载(
README.md:81) - DSH 调整官方对话结构(如修改
data-chat-flow-kind等稳定属性)后,本插件的多选逻辑需要同步适配(README.md:75) - 预览弹窗的图片生成不支持中途取消;连续切换宽度、字号或过程开关时只渲染最后一次停留的设置(
src/client/runtime.ts:570-617)
简体中文 | English
DSH 对话分享插件,分享单轮或多轮对话,可导出为图片或 Markdown。
和 DeepSeek 网页端一致的多选交互,操作体验完全一致。

生成图片前可调整宽度、字号和过程显示,完成后可下载或复制图片。

功能
- 从右上角进入问答选择模式,默认全选
- 每轮的分享按钮也会进入选择模式,并只预选当前问答
- 问题和回答两侧都有联动勾选框,也可直接点击内容整组选择,支持不连续选择
- 勾选框会在长内容滚动时吸附在页面上,到当前问题或回答末尾再移出
- 可复制图片、下载 PNG 或 Markdown
- 保留 Markdown、代码块、表格、图片和工具调用摘要
- 可调整图片宽度和字号,长图支持滚动预览
- 可勾选“不展示过程”,只保留提问和最终回答
性能测试:日常聊天仅保留分享按钮等轻量开销;选择处理和图片生成只在使用分享功能时启动,并针对多轮对话做了优化。
快速安装
使用 DSH CLI 把插件加入 Web Profile,然后重启 dsh web:
dsh plugin --profile web add dsh-share
其他安装方式
安装指定的 GitHub 版本:
dsh plugin --profile web add github:hellodigua/dsh-share#vX.Y.Z
安装本地源码:
dsh plugin --profile web add /absolute/path/to/dsh-share
修改源码后,先运行 corepack pnpm build,再使用 dsh plugin --profile web add --force /absolute/path/to/dsh-share 刷新插件。
开发
项目不依赖本机 DSH checkout 即可安装依赖、运行测试和构建:
corepack pnpm install --frozen-lockfile
corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
也可以用一条命令执行完整检查:
corepack pnpm verify
lib/ 是 DSH 直接加载的交付物,需要和源码一起提交。修改 src/ 后,请重新构建并确认 lib/ 已同步更新。
发布前使用 corepack pnpm release:check 校验 npm 包边界,GitHub → npm 的自动化约定见 RELEASING.md。
兼容性
兼容 @deepseek-ai/dsh ^0.1.0-rc.6。分享入口使用官方 conversation.chat.assistant-actions 和 conversation.session.header.utilities 插槽,不扫描或修改按钮栏 DOM。多选模式通过 data-chat-flow-kind 等稳定的 data-* 属性添加选择框,不依赖 CSS Module 生成的类名;DSH 调整对话结构后可能需要同步适配。
已知限制
- 复制图片需要浏览器授予剪贴板权限,权限不足时仍可下载图片。
- 无法读取的远程资源会以透明占位跳过。
- 只能选择页面已经加载的完整问答;需要更早内容时,请先向上滚动加载。
License
项目使用 MIT 许可证。浏览器 bundle 内联依赖的许可证见 THIRD_PARTY_LICENSES.md。
友情链接
已加入 dshfind.com DSH 插件超市。
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/hellodigua/dsh-share)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。