Skip to content
dsh.fish
Bundle

dsh-doc-share

DSH 对话报告化分享插件:生成带封面、摘要统计与章节排版的精美报告,导出为 PNG 图片 / 单 HTML 文件 / PDF。

Source
dawsondx
stars
1 stars
License
MIT
Updated
Updated 14 days ago

Readme

<p align="center">
  <img src="./assets/readme/hero.svg" width="100%" alt="dsh-doc-share:把 DSH 对话重排成带封面、摘要统计与章节的报告,一键导出 PNG/HTML/PDF/Markdown">
</p>

<p align="center">
  <a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"></a>
  <img src="https://img.shields.io/badge/DSH-rc.6-1f2937.svg" alt="DSH 0.1.0-rc.6">
  <a href="https://github.com/dawsondx/dsh-doc-share/actions"><img src="https://github.com/dawsondx/dsh-doc-share/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  <a href="https://www.npmjs.com/package/dsh-doc-share"><img src="https://img.shields.io/npm/v/dsh-doc-share.svg" alt="npm"></a>
</p>

DSH(DeepSeek Harness)的**对话报告化分享**插件。它把一次问答整理成带封面、内容摘要与章节排版的正式报告,而不是把聊天记录原样丢给你。

## 为什么需要它

| 平铺复制的痛点 | 本插件对应的方案 |
| --- | --- |
| 复制出去是一长串消息,没有开头、没有结构 | 生成带**封面(可自定义标题)**、**摘要统计**、**按轮次分章**的报告 |
| 想摘取更早的对话,只能在页面里一直往上滑、等加载 | v0.4.0 起用**轮次选择弹窗**,列出全部轮次,可直接搜索、全选、一键加载更早历史 |
| 只有文字,代码块、图片、工具调用混在一起难读 | **代码块单独成块,表格保留排版,工具调用折叠成摘要行** |
| 只能导出一种格式 | 一次生成,**PNG / 单 HTML / PDF / Markdown** 四种格式任选 |

## 功能特性

- **轮次选择弹窗**:从会话数据列出全部已完成轮次(轮次号 / 时间 / 提问与回答摘要 / 图片与工具徽标),支持搜索过滤、全选、清空;更早的历史可在弹窗内「加载更早」或「全部加载」,无需先到页面滚动
- **单轮快捷分享**:悬停任意一轮消息的分享按钮,只导出该轮问答
- **报告排版**:封面(标题可自定义)+ 内容摘要统计(轮数 / 问题数 / 字数 / 代码块 / 工具调用)+ 按轮次分章的 Q&A
- **兼容 gen-UI 富组件**:由 [dsh-genui](https://github.com/omdsh-dev/dsh-genui) 插件渲染的卡片、键值面板、步骤条等富组件,导出 PNG / PDF 时完整呈现,不会因入场动画未播放而整块空白
- **四种导出**:PNG 图片、单 HTML 文件(自包含样式,可脱离 DSH 打开)、PDF(A4 自动分页)、Markdown
- **可调版式**:宽度(手机 / 平板 / 电脑)与字号三级可调,可勾选「不展示过程」只保留提问与最终回答
- **深色主题**:HTML / PDF 导出跟随系统 / DSH 深浅色偏好(HTML 在新设备上也会自适应);PNG 图片固定浅色底,保证在任何查看环境下清晰
- **设置自动保存**:localStorage 持久化上次的宽度、字号、隐藏过程与标题
- **中英文自动适配**:界面文案跟随 DSH 界面语言

## 四种导出,按需选择

| 格式 | 适用场景 | 特点 |
| --- | --- | --- |
| **PNG 图片** | 发到社交平台、即时聊天 | 整页截图,所见即所得 |
| **单 HTML 文件** | 发给同学、同事、客户 | 自包含样式与图片(base64 内联),双击即可阅读,无需联网 |
| **PDF** | 打印、归档、正式提交 | A4 自动分页,长代码块自动跨页不截断 |
| **Markdown** | 二次编辑、进知识库 | 与报告同构的标题 / 摘要 / 分章 / 代码块 / 表格 |

## 安装

### 方式一:npm 安装(推荐,已发布)

```bash
dsh plugin --profile web add dsh-doc-share
```

已发布到 npm(v0.4.5),一行命令安装,无需 clone。安装完成后重启 `dsh web`。

### 方式二:clone 后安装

```bash
git clone https://github.com/dawsondx/dsh-doc-share.git
cd dsh-doc-share
dsh plugin --profile web add \
  --ignore-scripts --config.auto-install-peers=false \
  .
```

仓库自带构建产物 `lib/`,clone 后无需本地构建即可安装。

### 方式三:从本地路径安装(开发模式)

```bash
dsh plugin --profile web add \
  --ignore-scripts --config.auto-install-peers=false \
  /path/to/dsh-doc-share
```

## 使用

1. 打开 `dsh web`,进入一个会话
2. 点击右上角「报告化分享」打开**轮次选择弹窗**;点任意一轮消息的分享按钮则只导出该轮
3. 在弹窗中勾选要包含的问答,可按关键词搜索;更早的对话点「加载更早」或「全部加载」后即可勾选
4. 点击「生成报告」,在预览弹窗中调整标题、宽度、字号,按需勾选「不展示过程」
5. 选择下载 **PNG / HTML / PDF / Markdown**

## 与 dsh-share 的区别

| | dsh-share | dsh-doc-share |
| --- | --- | --- |
| 定位 | 对话原样导出 | 对话报告化排版 |
| 封面 / 摘要统计 | 无 | 有(标题、日期、轮次、字数、代码块、工具调用) |
| 章节结构 | 平铺 | 按轮次分章节,问题 / 回答卡片化 |
| 导出格式 | PNG / Markdown | PNG / 单 HTML / PDF / Markdown |
| 独立阅读 | 图片 | HTML / PDF 可脱离 DSH 直接阅读 |

## 开发

```bash
pnpm install
pnpm typecheck     # 类型检查
pnpm test          # 单元测试(vitest + jsdom)
pnpm build         # 构建(生成 lib/)
pnpm verify        # typecheck + test + build
```

修改源码后重新构建并强制刷新安装:

```bash
pnpm build
dsh plugin --profile web add --force \
  --ignore-scripts --config.auto-install-peers=false \
  .
```

> `lib/` 是 DSH 直接加载的交付物,随源码提交,方便无构建环境的用户直接安装。

## 兼容性

面向 `@deepseek-ai/dsh@0.1.0-rc.6`。插件通过官方插槽 `conversation.chat.assistant-actions`(单轮入口)与 `conversation.session.header.utilities`(会话入口)挂载。轮次列表读取会话快照(`ConversationSnapshot`)并调用 `loadOlder` 分页加载;导出内容依赖官方页面稳定的 `data-conversation-scroll`、`data-chat-flow-kind`、`data-turn-tail` 属性定位问答。DSH 调整页面结构后可能需要同步适配。

## 已知限制

- 超长对话的 PNG 生成较慢(html-to-image 全量截图)
- 确认选择的轮次需已在页面渲染(「全部加载」后一般均已渲染);个别轮次若被页面虚拟化卸载,会跳过并在控制台提示

## License

[MIT](LICENSE)。本项目参考了 [hellodigua/dsh-share](https://github.com/hellodigua/dsh-share) 的交互与 DOM 扫描方案。

Install

dsh plugin --profile web add github:dawsondx/dsh-doc-share

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source