# iPolloWork

> Add PPT view to DeepSeek Harness dialogue, generate editable slides directly in workspace and export as PDF/PPTX.

## Metadata

- Author: [@Devin-AXIS](https://github.com/Devin-AXIS)
- Repo: <https://github.com/Devin-AXIS/iPolloWork.git>
- GitHub: [Devin-AXIS/iPolloWork](https://github.com/Devin-AXIS/iPolloWork)
- Stars: 4,317
- Language: TypeScript
- License: [NOASSERTION](https://spdx.org/licenses/NOASSERTION.html)
- Homepage: <https://www.ipollo.ai/>
- Topics: `agent-collaboration`, `agent-skills`, `ai-agents`, `ai-work`, `claude-code`, `codex`, `deepseek-harness`, `dsh-plugin`, `enterprise-agent-workspace`, `hermes-agent`, `ipollowork-plugin`, `ipollowork-skill`, `openclaw`, `opencode`, `opencode-plugin`, `self-evolving-ai`, `visual-editor`
- Forks: 833
- Open Issues: 76
- Last push: 2026-08-20T13:35:49.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:Devin-AXIS/iPolloWork/external-plugins/deepseek-harness/ppt-studio
```

## Wiki

## 一句话定位
deepseek-ippt 把 iPolloWork 的 PPT Studio 作为原生 PPT 视图注入 DeepSeek Harness，让你在对话里让 AI 起草或修改幻灯片，然后直接在画布上逐页精调文字、图片、排版、颜色与位置，并能把成果导出为 PDF 或 PPTX。

## 核心能力
- 在 DeepSeek Harness 对话标签栏中提供原生 PPT 视图，与 Design、Video 视图并列
- 通过对话让 AI 生成完整幻灯片，并对选中的某一页/某一元素发起 Ask AI 精准修改（草稿需用户确认）
- 在 Studio 中逐页预览幻灯片，直接编辑文字、图片、排版、颜色、尺寸、位置与全局主题
- 提供幻灯片专属模板市场（`+` 入口只展示 slides 类模板），网站、海报、报告模板不会混入
- 支持保存、撤销、文件版本冲突检测，写入采用临时文件 + rename 的原子替换
- 可将作品导出为 PDF（所有 PPT 模板均支持）或 PPTX（仅标注 PPTX-compatible 的模板支持）

## 技术实现
- **语言**: TypeScript + React（Studio 前端）+ Node.js（HTTP 桥接）
- **关键依赖**: `@deepseek-ai/cordis`（插件注入与 effect）、`@deepseek-ai/dsh-host-webserver`（路由注册）、`@deepseek-ai/dsh-workspace`（工作区解析）、`@deepseek-ai/dsh-client-ui-conversation`（前端视图插槽）
- **架构模式**: 本目录 `src/index.ts` 是一个 12 行的薄壳，调用 `../../design-studio/src/index.ts` 中的 `createDeepSeekDesignStudioPlugin` 工厂并传入 `mode: "slides"`、`routeRoot: "/ipollowork-ppt"`、`studioTitle: "DeepSeek iPPT"`、`defaultTemplateId: "ipollowork.deepseek-harness.ppt"`、`projectSuffix: "-ippt"`；apply 阶段在 `/ipollowork-ppt` 前缀下注册 webServer 路由，前端通过 `dsh.client.inject` 在 Harness 对话里注册 `conversation.view` slot 渲染承载 Studio 的 iframe
- **入口文件**: `src/index.ts`（服务端注册与 HTTP API）、`src/client.tsx`（前端 PPT 视图）、`studio/vite.config.ts`（Studio 前端构建）

## 适用场景
适合需要在 DeepSeek Harness 工作区里直接产出可编辑幻灯片、对外汇报材料或课堂讲稿的用户。痛点是以前只能在对话里得到一次性图片或截图，无法继续精调单页元素；本插件把真实的 HTML/CSS 项目留在工作区，并允许 AI 生成、画布直接编辑、选区级 Ask AI 三种方式交替进行。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| `@deepseek-ai/dsh-client-runtime` | `>=0.0.1-rc.1 <0.2.0-0` | 客户端运行时，DSH Web 端必需 |
| `@deepseek-ai/dsh-client-ui-conversation` | `>=0.0.1-rc.1 <0.2.0-0` | 对话视图插槽机制 |
| `@deepseek-ai/dsh-host-webserver` | `>=0.0.1-rc.1 <0.2.0-0` | 宿主的 HTTP 路由注册能力 |
| `@deepseek-ai/dsh-workspace` | `>=0.0.1-rc.1 <0.2.0-0` | 工作区解析（幻灯片文件读写需要） |
| `@deepseek-ai/cordis` | `^4.0.1` | 注入与 effect 框架（构建期可选） |
| `react` | `^18.2.0` | Studio 前端运行时 |
| Node.js | 未声明 | 插件 package.json 无 engines；上层 DeepSeek Design 文档建议 `^22.19.0` 或 `>=24.0.0` |
| 平台 | 跨平台 | 仅依赖宿主 DSH 的 Web 服务，与操作系统无关 |

## 安装方式
```bash
dsh plugin --profile web add github:Devin-AXIS/iPolloWork/external-plugins/deepseek-harness/ppt-studio
```

## 配置项
本插件无需用户级配置。安装后插件以 `ipollowork-ppt-studio` 标识注入宿主（cordis.patch.yml），自动在 DSH Web 端注册 PPT 视图，使用 32 字节随机令牌保护 iframe 通信与 API 调用，所有读写都限制在当前工作区的 `design/` 目录内。

## 常见问题

**Q: deepseek-ippt 与 iPolloWork 主项目是什么关系？**

A: deepseek-ippt 是 iPolloWork 为 DeepSeek Harness 单独发布的 PPT 子插件（package.json 的 name 为 `deepseek-ippt`），只携带 PPT 视图所需的浏览器资源；安装它不会下载或启动 iPolloWork 桌面端，也不会把 Design（`deepseek-idesign`）和 Video（`deepseek-ivideo`）两个独立插件一起拉进来。

**Q: 幻灯片文件保存在哪里？**

A: 全部文件直接写入 DeepSeek Harness 当前注册工作区的 `design/<sessionId>-ippt/` 目录（src/index.ts:9 / design-studio/src/index.ts:87-92），含 `index.html`、`design-tokens.css`、`manifest.json`、`brief.json` 等真实可编辑文件。`-ippt` 后缀与 iDesign 项目严格隔离，不会相互覆盖。

**Q: 安装后会自动包含 Design 或 Video 视图吗？**

A: 不会。PPT 模板筛选只放行 `category === "slides"` 且 `surface === "design"` 的模板（design-studio/src/index.ts:132-135），网站、海报、报告模板由独立的 `deepseek-idesign` 提供，Video Studio 由 `deepseek-ivideo` 提供；三个插件的项目目录彼此隔离。

**Q: Ask AI 会自动发送消息吗？**

A: 不会。Ask AI 只把当前幻灯片或选中元素的文件路径、样式和修改要求整理成对话草稿填入 Harness 输入框（src/client.tsx:32-43），由用户确认后再手动发送，避免 AI 自动提交造成不可控改动。

**Q: 多人同时编辑会覆盖对方的工作吗？**

A: 不会。Studio 写入附带 `baseUpdatedAt`，如果文件自上次加载后被改动会返回 409 冲突提示让用户重新加载（studio-host/src/http.ts:161-163）；写入本身通过临时文件 + `rename` 实现原子替换，避免半写状态。

**Q: 可以导出成什么格式？**

A: 取决于模板兼容性：标注 PPTX-compatible 的模板可以导出 PPTX（apps/app/.../design-panel.tsx:2556-2561），其中文字、形状与图片都会转成可编辑的 PowerPoint 对象；任意 PPT 模板都能通过 html2canvas + jsPDF 逐页截图导出 PDF（design-panel.tsx:1155-1225）。

**Q: 单个文件大小有限制吗？**

A: 有。文本文件与 HTTP 请求体上限都是 20 MB（design-studio/src/index.ts:60 / studio-host/src/http.ts:10、140、155），超出时返回 413。

**Q: 如何卸载？**

A: 运行 `dsh plugin --profile web remove deepseek-ippt` 即可。卸载后 PPT 视图会从对话标签栏消失，但工作区中的 `design/<sessionId>-ippt/` 文件不会被自动删除，如不再需要请手动清理。

## 上手难度
入门 — 安装后无需配置即可在对话中选择 PPT 视图开始创作，AI 生成、画布精调、Ask AI 三种交互在同一个界面里就能完成，不需要写代码或调整配置文件。

## 已知问题与限制
- **不支持发布到生产环境**：发布能力由 iPolloWork 主项目接管，PPT 插件与 Design 插件一样不内置发布到线上的能力（参考 iDesign 实现的 `studio/src/deepseek-client.ts:76-80`），最终成品需通过 Studio 内的 PDF/PPTX 导出获得。
- **仅能读写 `design/` 子目录**：所有 API 都通过 `safeRelativePath` 强制把路径限制在 `design/` 前缀下（design-studio/src/index.ts:75-77 / studio-host/src/http.ts:55-72），工作区其它目录不会被插件访问。
- **单文件与请求体上限 20 MB**：单文件读取与写入都受 `MAX_TEXT_BYTES = 20 * 1024 * 1024` 约束（design-studio/src/index.ts:60），HTTP 请求体上限同样为 20 MB（studio-host/src/http.ts:10），超出时返回 413。
- **目录枚举上限 1000 项**：`listFiles` 在遍历到 1000 个条目时停止（design-studio/src/index.ts:61、191），超大项目可能不会列出全部文件。
- **Session ID 格式受限**：必须匹配 `^[A-Za-z0-9_-]{1,128}$`（design-studio/src/index.ts:62），过短或带特殊字符的会话 ID 会直接返回 400。
- **PPTX 导出仅对 PPTX 兼容模板有效**：只有用 `data-pptx-text` / `data-pptx-shape` / `data-pptx-image` 等 marker 构建的模板才能导出为可编辑的 PPTX，其它模板只能走 PDF 截图导出（design-panel.tsx:451、1380、2556-2561 / pptx-compatible-export.ts:267、305、395）。
- **跨插件模板与项目不会互通**：只安装本包不会下载 `deepseek-idesign` 或 `deepseek-ivideo` 的模板，Design 项目的目录也不会被 PPT 插件读取（README.md:128 / external-plugins/deepseek-harness/README.md:56）。
- **Studio 通信通过进程级令牌**：iframe 与宿主 API 之间用 32 字节随机令牌鉴权（design-studio/src/index.ts:281）并校验同源消息，DSH 重启或工作区切换后旧令牌会失效，需要刷新页面。

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [iPolloWork](https://deepseek-plugin.org/plugins/Devin-AXIS/iPolloWork/external-plugins/deepseek-harness/ppt-studio)
Wiki generated by AI (model: `MiniMax-M3`)
