deepseek-design/packages/deepseek-ippt

195Star67Fork2Issue29Watching

iPolloWork 为 DeepSeek Harness 推出的 PPT 视图插件,对话中直接生成与精调幻灯片,附 6 个精选模板并支持 PDF/PPTX 导出。

语言
JavaScript
License
NOASSERTION
分支
main
ai-designdeepseekdeepseek-harnessdesigndesign-studiodsh-pluginipolloworkipollowork-plugin

安装

$ dsh plugin --profile web add github:Devin-AXIS/deepseek-design/packages/deepseek-ippt

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

deepseek-ippt 是 iPolloWork 为 DeepSeek Harness 做的"幻灯片"原生插件,在对话里多出一个 PPT 视图,可以由 AI 直接生成完整演示文稿,也可以选中某张幻灯片或其中某个元素做选区级 Ask AI,最后把真实可继续编辑的 HTML/CSS/设计令牌落到工作区的 design/<sessionId>-ippt/ 目录。

核心能力

  • 在 Harness 对话中多出 PPT 视图(label PPT,与 iDesign 的 Design 视图并存),可在该视图里逐页预览与编辑
  • AI 在对话中直接生成叙事、页面、整篇演示文稿,并支持选区级 Ask AI(选中元素后填好草稿,由用户发送)
  • 6 个精选幻灯片模板(4 套 HTML Anything 系列 + 2 套原生可编辑 PPTX),模板市场只展示幻灯片,不会混入网站/海报/视频
  • 逐页预览 + 直接元素编辑:文字、图片、排版、颜色、位置、视觉样式均可在画布里调整
  • 共享 iPolloWork 设计令牌系统:通过 design-tokens.css 统一管理颜色、字体、背景、圆角、阴影、间距,编辑主题时整本 PPT 同步更新
  • 导出 PDF 与 PPTX(PPT 视图内置 jsPDF、html2canvas、pptxgen、JSZip;原生 PPTX 模板导出后对象在 PowerPoint 里仍可继续编辑)
  • 保存带 baseUpdatedAt 冲突检测 + 原子替换,模板应用先在隔离目录校验再原子替换,失败时恢复旧项目

技术实现

  • 语言: TypeScript(子包 type: module,主源码在 source/plugins/deepseek-ippt/src/,构建产物在 packages/deepseek-ippt/lib/);Studio 端用 React 18 + Vite 6 + Tailwind CSS v4
  • 关键依赖: @deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-workspace@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversationreact 18.2(全部为可选 peer dependency);运行期只用 Node 内置 node:crypto / node:fs / node:fs/promises / node:path / node:url
  • 架构模式: DSH 适配器插件 —— cordis.patch.yml 向宿主插入 Cordis 插件 id: ipollowork-ppt-studioclient.tsxctx.slots.inject("conversation.view")PPT 视图组件挂到 Harness 对话里;index.tsctx.webServer.register({ kind: "prefix", path: "/ipollowork-ppt" }) 把 Studio 静态资源和 /ipollowork-ppt/api/* 接口挂到 Harness 内置 Web 服务器
  • 入口文件: source/plugins/deepseek-ippt/src/index.ts(服务端,复用 source/shared/design-studio/src/index.tscreateDeepSeekDesignStudioPlugin 工厂,传 mode: "slides"routeRoot: "/ipollowork-ppt"studioTitle: "DeepSeek iPPT"defaultTemplateId: "ipollowork.deepseek-harness.ppt"projectSuffix: "-ippt"),客户端入口 source/plugins/deepseek-ippt/src/client.tsx,编译后分别是 packages/deepseek-ippt/lib/index.jspackages/deepseek-ippt/lib/client.js

适用场景

希望直接在 Harness 对话里就把一份演示文稿做出来、再逐页精调细节的工作者,比如产品/运营做 pitch deck、技术汇报、季度评审、对外宣传页等;也想让生成的 PPT 既能被 AI 修改也能直接打开 PowerPoint 继续编辑的人群。design/<sessionId>-ippt/ 与 iDesign 的 design/<sessionId>/ 目录相互隔离,两边可以同时装在同一工作区,不会互相覆盖。

前置依赖与兼容性

依赖最低版本说明
DSH>=0.0.1-rc.1<0.2.0-0,开发期锁定 0.1.0-rc.6package.json#peerDependencies 声明 @deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-workspace 需要该区间(package.json:51-58),开发依赖实际锁定 0.1.0-rc.6(package.json:81-84)
Node.js^22.19.0>=24.0.0子包 package.json 没有 engines 字段;沿用父仓库 README.md:74 声明;@types/node devDep 锁到 25.6.0(package.json:86)
React^18.2.0由 Harness 宿主提供,列在 peerDependencies(package.json:57)
平台跨平台(macOS / Windows / Linux)package.json 没有 os/cpu 限制;客户端用 iframe + sandbox 属性隔离(lib/client.js:103)
原生模块运行时只使用 Node 内置模块(lib/index.js:1-5),安装不会拉 sharp/onnxruntime-node 等预编译二进制
浏览器运行时Chromium(由 Harness 宿主提供)Studio 是浏览器内运行的 React/Vite 应用(packages/deepseek-ippt/studio/dist/),插件不自带浏览器二进制

安装方式

dsh plugin --profile web add github:Devin-AXIS/deepseek-design/packages/deepseek-ippt

配置项

配置类型说明默认值
本插件无需额外配置cordis.patch.yml 不读任何字段;createDeepSeekDesignStudioPlugin 只在编译期接收 mode/routeRoot/studioTitle/defaultTemplateId/projectSuffix 等构造参数(已硬编码为 slides / /ipollowork-ppt / DeepSeek iPPT / ipollowork.deepseek-harness.ppt / -ippt)。运行期所有交互(工作区 ID、会话 ID、模板 ID、选区上下文)通过 URL 查询参数和 PostMessage 在 Studio 与 Harness 之间传递

常见问题

Q: 这个插件和 deepseek-design 是什么关系?

A: 它是 deepseek-design 套件里的"幻灯片"那一支,专门为 Harness 对话增加一个 PPT 视图。三个兄弟插件 iDesign/iPPT/iVideo 各自独立安装、目录彼此隔离(design/<sessionId>/design/<sessionId>-ippt/video/<sessionId>/),可以只装这一份。

Q: 装了它会不会顺便下载 iPolloWork 桌面端或 iVideo?

A: 不会。npm 包自带 Studio 浏览器资源(packages/deepseek-ippt/studio/dist/lib/client.js),既不下载 iPolloWork 桌面应用,也不加载 iVideo 或 iDesign;安装命令只拉这一份插件。

Q: 作品真实文件落在哪里,能继续手动编辑吗?

A: 落在 Harness 工作区的 design/<sessionId>-ippt/ 下,是真实的 HTML、CSS 设计令牌和 manifest.json 等文件,不是云端封闭画布;你可以用任意编辑器改这些文件,也可以让 AI 通过对话继续修改。

Q: 自带了哪些模板?

A: 6 个精选幻灯片模板:Knowledge Arch Blueprint(技术风)、Hermes Cyber Terminal Deck、Presenter Mode Deck、Pastel Slow-life Deck、Morrow Brand Narrative(PPTX 可继续编辑)、iPollo VI Enterprise Presentation(38 页原生可编辑 PPTX)。

Q: 能导出 PDF/PPTX 吗?

A: 可以。Studio 内置 jsPDF、html2canvas、pptxgen 和 JSZip,PPT 视图支持 PDF 和 PPTX 两种导出;带 "native-editable" 标记的 PPTX 模板导出后对象在 PowerPoint 里仍可继续编辑。

Q: Ask AI 会自动发出消息吗?

A: 不会。Ask AI 只把"目标元素 + 文件路径 + CSS 定位 + 当前样式(文字/alt/src 截断到 240 字)"组装成一段草稿填进当前对话,必须由用户点发送才会提交,插件也不会自动执行任何工具调用。

Q: 保存会覆盖我的手工编辑吗?

A: 不会。文本写入带 baseUpdatedAt 冲突检查——文件自上次读取后被外部改动时返回 409 让用户先刷新再保存;写入采用临时文件 + rename 的原子替换,避免半写状态。模板应用也是先在隔离目录校验再原子替换,失败时恢复旧项目。

Q: PPT 视图能不能和 Design 视图同时用?

A: 可以。两个视图独立注册(viewId: "ipollowork-ppt-studio" vs ipollowork-design-studio),且项目目录分别为 design/<sessionId>-ippt/design/<sessionId>/,互不覆盖;同时安装 deepseek-idesigndeepseek-ippt 即可。

上手难度

入门 — 在新对话里点 PPT 视图即开用,常见路径是"AI 生成大纲与初稿 → 在 Studio 逐页精调或 Ask AI 改元素 → 导出 PDF/PPTX";想榨干选区上下文、设计令牌、manifest schema 则需要再读 iPolloWork 主仓库与子包 README。

已知问题与限制

  • DSH 仍处开发者预览:Harness 主版本号与插件 peer 范围(>=0.0.1-rc.1 <0.2.0-0)较宽,DSH 升级到下一个主版本时本插件需要重新验证(README.md:76-77)
  • 路径写入有强约束:写入路径必须落在工作区 design/ 前缀内,符号链接不能逃逸工作区,相对路径里含 .. 或绝对路径会返回 400/403;这意味着"跨工作区移动项目"会被原样拒绝(lib/index.js:3889-3917)
  • 生成产物不可在 packages/ 直接改:仓库采用 iPolloWork 上游同步模型,packages/ 是构建产物,应改 source/plugins/deepseek-ippt/ 并提交 PR,由上游合并后同步回来(source/README.md:1-7)
  • 每进程 Studio token 不可跨进程复用:进程级随机 base64url token 失效后所有 API 请求会 401,重启 Harness 即可(lib/index.js:4167、3899-3901)
  • iDesign/iVideo 关闭 Studio 路径里的相同 token 通道:本插件的服务端用 x-ipollowork-design-token 头校验 Studio iframe;同进程内的 iDesign/iVideo 复用同一套 host channel 和 token 协议,互不冲突但也不各自独立密钥(lib/index.js:3899-3901、source/shared/design-studio/src/bridge.ts:3-16)
deepseek-design/packages/deepseek-ippt — DeepSeek Harness 插件 | deepseek-plugin.org