# dsh-deck-builder 📽️ > DeepSeek Harness 工具插件:把 Markdown 一键转成**自包含 HTML 演示文稿**(幻灯片)。主题可选、键盘翻页、零依赖、零核心改动。 [English](./README.md) | 简体中文 一个 **DeepSeek Harness(DSH)** 的纯工具插件:注册 `deck_build` 工具,让 agent 把任意 Markdown 内容(研究报告、会议纪要、课程大纲…)渲染成单文件 HTML 幻灯片——用户直接用浏览器打开,`←`/`→` 翻页、`f` 全屏、打印时每页一张。所有生成逻辑是**零依赖纯函数**,产物完全自包含(内联 CSS/JS,无外部资源、无网络请求)。 ## ✨ 特性 - **`deck_build` 工具**:`markdown` → HTML 幻灯片,返回输出路径/页数/字节数。 - **三种主题**:`deepseek`(DeepSeek 蓝)/ `light`(明亮)/ `dark`(暗色),CSS 变量内联。 - **智能分页**:默认按 `---` / `***` / `___` 分页,无分隔线时回退到 H1/H2 标题分页。 - **完整 Markdown 渲染**:标题、段落、有序/无序列表、代码块、引用、粗斜体、行内代码、链接、图片。 - **零依赖、零核心改动**:纯 `ctx.tools.register`,无客户端 bundle、无网络、无外部资源。 - **纯函数可测**:分割/渲染/转义/自包含全部有单测覆盖。 ## 📦 安装 前置:DSH(`dsh web` 可运行)、Node ≥ 22.19、pnpm。 ```bash # GitHub 安装(预构建 lib/ 已提交) dsh plugin --profile web add "github:Blaczz/dsh-deck-builder#main" # 本地目录安装 cd dsh-deck-builder && npm install --legacy-peer-deps && npm run build dsh plugin --profile web add ./dsh-deck-builder ``` 安装后**重启 `dsh web`**。然后直接对 agent 说"把这份内容做成幻灯片",或让 agent 调用 `deck_build` 工具。 ## 🎬 使用 在对话里让 agent 生成幻灯片: ``` 把下面这份研究报告做成幻灯片,用 deepseek 主题: ``` agent 会调用 `deck_build`,产出 `deck-<标题>.html`。打开该文件: - `←` / `→` 或空格翻页,`Home`/`End` 首尾; - `f` 全屏; - 打印/导出 PDF 时每张幻灯片一页。 也可手动调用工具参数: ```json { "markdown": "# 标题\n正文\n\n---\n\n# 第二页\n更多内容", "title": "我的演示", "theme": "deepseek", "outputPath": "slides/my-deck.html" } ``` ## 🛠️ 本地开发 ```bash npm install --legacy-peer-deps $env:DSH_NODE_MODULES = "$env:USERPROFILE\.dsh\profiles\node_modules" npm run setup:dsh-workspace npm run verify # ★ 一键门禁:clean + typecheck + test + build npm test # vitest(19 项:分割/渲染/自包含/主题/转义) ``` ## 目录结构 ``` dsh-deck-builder/ ├── package.json # dsh.bundle.patch(纯工具插件,无客户端半) ├── cordis.patch.yml # bundle 补丁层 ├── scripts/ # build(仅 tsc)/ clean / setup-dsh-workspace / verify ├── src/ │ ├── deck.ts # ★ 纯生成逻辑:splitSlides / renderBlocks / renderDeck │ ├── theme.ts # 主题 token(light/dark/deepseek) │ └── index.ts # 宿主半:注册 deck_build 工具 └── tests/ # deck 生成 + manifest 契约 ``` ## 🧩 生态定位 - 填补空白:DSH 生态 Slides/PPT 类此前仅有 `dsh-openmaic`(教学)与 `dsh-k12-lesson-builder`,缺一个通用的"Markdown → 演示文稿"工具;`mdPresenter` 证明"用 DSH 做演示"有真实需求但无人做成插件。 - 技术路线:纯工具插件(`ctx.tools.register` + `defineTool`),复用 `hccccc01333/dsh-report-html`(自包含 HTML)的产物形态。 - 零核心改动:单文件产物 + 零依赖纯函数 + `ctx.effect` 注册。 ## ⚖️ License MIT © 2026 Blaczz。独立社区插件,与 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 无关。