# deepseek-design

> DeepSeek Harness 的原生 Video 视图，27 个可编辑视频模板，对话中用 AI 直接生成与精调视频，并提供自动校验工具。

## Metadata

- Author: [@Devin-AXIS](https://github.com/Devin-AXIS)
- Repo: <https://github.com/Devin-AXIS/deepseek-design.git>
- GitHub: [Devin-AXIS/deepseek-design](https://github.com/Devin-AXIS/deepseek-design)
- Stars: 195
- Language: JavaScript
- License: [NOASSERTION](https://spdx.org/licenses/NOASSERTION.html)
- Homepage: <https://github.com/Devin-AXIS/iPolloWork>
- Topics: `ai-design`, `deepseek`, `deepseek-harness`, `design`, `design-studio`, `dsh-plugin`, `ipollowork`, `ipollowork-plugin`, `plugin`, `ppt`, `presentation`, `prototyping`, `visual-editor`
- Forks: 67
- Open Issues: 2
- Last push: 2026-08-18T09:54:38.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:Devin-AXIS/deepseek-design/packages/deepseek-ivideo
```

## Wiki

## 一句话定位
deepseek-ivideo 把 iPolloWork 的 HyperFrames Video Studio 作为原生 Video 视图注入 DeepSeek Harness，对话里可以由 AI 直接生成或大范围修改整段视频，也能选中画面里的标题、图片、素材等元素发起 Ask AI 精准修改，最终落到工作区里真实的可编辑 HTML/CSS 项目文件。

## 核心能力
- 在 DeepSeek Harness 对话标签栏中提供原生 **Video** 视图（label "Video"），与 Design、PPT 视图并列
- 通过对话让 AI 完整生成或大范围修改视频，并把改动写入当前工作区的真实 HyperFrames 项目文件
- 选中画面中标题、图片、素材或其他元素后用 **Ask AI** 触发精准修改，插件只准备草稿不自动发送
- 内置 27 个可编辑视频模板（覆盖动态标题、代码讲解、数据图表、产品演示、品牌片头、AI 工作流等），可一键套用到当前会话项目，失败自动回滚
- 提供 `ipollowork_video_validate` 模型工具，对当前会话的视频项目做结构化校验并返回有限结果
- 每个会话对应独立的 HyperFrames 预览进程，所有 lease 释放 60 秒后自动回收，端口冲突时自动回退

## 技术实现
- **语言**: TypeScript + React（Studio 前端，Vite 构建）+ Node.js（HTTP 桥接与运行时进程管理）
- **关键依赖**: `@deepseek-ai/cordis`（插件注入与 effect）、`@deepseek-ai/dsh-host-webserver`（路由注册）、`@deepseek-ai/dsh-tools`（模型工具注册）、`@deepseek-ai/dsh-workspace`（工作区解析）
- **架构模式**: 服务端通过 `cordis.patch.yml` 把 `ipollowork-video-studio` 插件插入宿主；apply 阶段在 `/ipollowork-video` 前缀下注册 webServer 路由（承载 7 个 HTTP API 与 Studio 静态资源），把工作区根、模板目录、项目初始化以及 `ipollowork_video_validate` 模型工具接到宿主；同时通过 `dsh.client.inject` 把客户端代码注入到 Harness Web 端，对话里注册 `conversation.view` slot 渲染承载 Studio 的 iframe；客户端 View 与 Studio 通过 `postMessage`（channel `ipollowork-video-studio-host-v1`）交换 ask-ai-selection / ask-video-ai 消息，事件源同时校验 origin 与 source 指向 iframe contentWindow
- **入口文件**: `packages/deepseek-ivideo/lib/index.js`（服务端注册与 HTTP API）、`packages/deepseek-ivideo/lib/client.js`（前端 Video 视图）、`packages/deepseek-ivideo/lib/runtime.js`（HyperFrames 进程管理）、`packages/deepseek-ivideo/studio/dist/index.html`（Studio 静态资源）

## 适用场景
适合需要在 DeepSeek Harness 工作区里直接产出可编辑视频的用户——做产品演示、数据故事、品牌片头、动态标题、教学片段或社媒短视频。痛点是在普通对话里只能拿到一次性的视频或截图，无法继续精调单一对象；本插件把真实的 HyperFrames 项目落到 `video/<sessionId>/`，并允许 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` | 对话视图插槽机制（Video 视图注册依赖） |
| `@deepseek-ai/dsh-host-webserver` | `>=0.0.1-rc.1 <0.2.0-0` | 宿主的 HTTP 路由注册能力 |
| `@deepseek-ai/dsh-tools` | `>=0.0.1-rc.1 <0.2.0-0` | 注册 `ipollowork_video_validate` 模型工具 |
| `@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 | `>=22` | package.json 中 `engines.node` 显式声明 |
| 平台 | macOS / Windows / Linux | 依赖宿主 DSH 的 Web 服务和 Node.js 子进程；`process.platform` 区分 Windows 与 POSIX 处理进程组信号 |
| 原生模块 | sharp 0.34+、onnxruntime-node 1.23+ | package.json 直接声明，由嵌入的 HyperFrames 运行时按需加载（图片处理与 AI 推理） |

## 安装方式
```bash
dsh plugin --profile web add github:Devin-AXIS/deepseek-design/packages/deepseek-ivideo
```

## 配置项
本插件无需用户级配置。安装后插件以 `ipollowork-video-studio` 标识注入宿主（cordis.patch.yml:1-3），自动在 DSH Web 端注册 Video 视图；运行期每次进程启动用 32 字节随机令牌保护 iframe 通信与 HTTP API 调用（lib/index.js:210），所有读写都限制在当前工作区的 `video/<sessionId>/` 目录内（lib/index.js:13-14、93-126）。

## 常见问题

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

A: 它是 deepseek-design 套件里的"视频"那一支，专门为 Harness 对话增加一个 Video 视图（README.md:13-17 / source/README.md:48-56）。与兄弟插件 iDesign（Design 视图）和 iPPT（PPT 视图）共享 iPolloWork Studio 契约和模板协议，但项目目录彼此隔离，可以只装这一份。

**Q: 装了它会不会顺便下载 iPolloWork 桌面端或其它两个兄弟插件？**

A: 不会。npm 包自带 Video 视图所需的浏览器资源（packages/deepseek-ivideo/lib/、packages/deepseek-ivideo/studio/dist/），既不下载 iPolloWork 桌面应用，也不强制安装 iDesign/iPPT；三个插件的项目目录（design/、design/<sessionId>-ippt/、video/<sessionId>/）互相隔离，不会相互覆盖。

**Q: 视频项目文件保存在哪里？**

A: 全部写入 DeepSeek Harness 当前注册工作区的 `video/<sessionId>/` 目录（source/shared/types/hyperframes-project.ts:14-16 / source/plugins/deepseek-ivideo/src/runtime.ts:236-247），含 `index.html`、`design-tokens.css`、`manifest.json`、`brief.json` 等真实可继续手工编辑的文件，不是云端封闭画布；你可以用任意代码编辑器改这些文件，也可以让 AI 通过对话继续修改。

**Q: 自带了哪些视频模板？**

A: 27 个内置可编辑视频模板，覆盖动态标题、代码讲解、数据图表、产品演示、品牌片头、AI 工作流演示等场景（packages/deepseek-ivideo/lib/templates/*/manifest.json）。模板筛选只放行 `surface === "video"` 且 `category === "video"` 的模板（packages/deepseek-ivideo/lib/index.js:20-22），Design 与 PPT 模板不会混入。

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

A: 不会。Ask AI 只把当前视频项目或选中元素的相对路径、CSS 定位、文字/alt/src、计算样式整理成对话草稿填到 Harness 输入框（packages/deepseek-ivideo/lib/client.js:113-128 / source/plugins/deepseek-ivideo/src/client.tsx:20-30），由用户点发送才会提交，插件不自动执行工具调用；选中元素后会通过 `postMessage` 跨 iframe 通信（channel `ipollowork-video-studio-host-v1`，origin 与 source 双重校验）把上下文送到 Harness。

**Q: 多人同时编辑会互相覆盖吗？**

A: 不会。视频文件写入走 `writeStudioText` 并附带 `baseUpdatedAt` 版本检查（source/shared/studio-host/src/http.ts:161-163），文件自上次读取后被外部改动会返回 409 冲突提示你重新加载；写入采用临时文件 + `rename` 实现原子替换，避免半写状态。模板应用也是先在隔离目录校验再原子替换，失败时恢复旧项目并重启 Studio（packages/deepseek-ivideo/lib/index.js:37-82 / README.md:68-75）。

**Q: 为什么首版没有语音克隆和 Design System 抽屉？**

A: 首版在 Studio 里显式关闭了 `features.voice` 与 `features.designSystem` 两个开关（source/plugins/deepseek-ivideo/studio/src/main.tsx:48-54），`branding` 标题也固定为 `iVideo by iPolloWork`；这两项属于 iPolloWork 主项目的全局能力，当前版本暂未暴露给 DSH 宿主，仅保留 Video 模板、时间线、可视化编辑、动画、预览和导出能力。需要这些能力的用户需使用 iPolloWork 桌面端。

**Q: 如何卸载？**

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

## 上手难度
入门 — 安装后无需配置即可在对话中选择 Video 视图开始创作，AI 生成、画布精调、Ask AI 三种交互在同一个界面里就能完成，不需要写代码或调整配置文件；模板套用、校验、导出都通过 Studio 内置按钮触发。

## 已知问题与限制
- **首版不内置语音克隆、语音设置与 Design System 抽屉**：Studio 中 `features.voice` 与 `features.designSystem` 被显式置为 `false`（source/plugins/deepseek-ivideo/studio/src/main.tsx:48-54），需要这些能力的用户需使用 iPolloWork 桌面端。
- **仅能读写 `video/<sessionId>/` 子目录**：所有 API 都通过 `safeRelativePath` 强制把路径限制在 `video/` 前缀下（packages/deepseek-ivideo/lib/index.js:13-14 / source/shared/studio-host/src/http.ts:46-60），工作区其它目录不会被插件访问；跨工作区的符号链接也会被拒绝（source/shared/studio-host/src/http.ts:80-95）。
- **单文件体积上限 4 MB**：视频项目的 `index.html` 等文本读取与写入受 `MAX_TEXT_BYTES = 4 * 1024 * 1024` 约束（packages/deepseek-ivideo/lib/index.js:14、94-125），HTTP 请求体上限仍是 20 MB（source/shared/studio-host/src/http.ts:10、187），超出时返回 413。
- **Session ID 格式受限**：必须匹配 `^[A-Za-z0-9_-]{1,128}$`（packages/deepseek-ivideo/lib/index.js:13），过长或带特殊字符的会话 ID 会直接返回 400。
- **端口分配在 3100-3899 区间按哈希取模**：每个 sessionId 派生出一个固定的本地端口（source/shared/types/hyperframes-project.ts:1-8），最多向后探测 32 个端口寻找可用槽位；若全部被占用则启动失败（source/plugins/deepseek-ivideo/src/runtime.ts:21、258-307）。
- **运行时进程有空闲超时**：所有 lease 释放 60 秒后进程自动被 SIGTERM 回收，启动超时上限 45 秒（source/plugins/deepseek-ivideo/src/runtime.ts:19-22、405-410）；Harness 父进程与 preview 子进程通过 IPC `disconnect` 事件联动回收（packages/deepseek-ivideo/lib/preview-owner-guard.js:1-13）。
- **嵌入的 HyperFrames 运行时版本与 npm 公开发行版不同**：发布包在打包时通过 `stage-hyperframes-runtime.mjs` 把 vendor/hyperframes 的本地构建产物（当前源版本 0.7.60）拷进 `lib/hyperframes/`，安装时不会从 npm 拉取同名包（package.json:55-57）；用户如果想升级必须等待主仓库同步并重新发版。
- **校验工具超时 120 秒**：`ipollowork_video_validate` 在执行超过 120 秒后会中止底层进程（packages/deepseek-ivideo/lib/index.js:191、220-238），特别复杂的项目需要分段校验或简化项目结构。
- **导出视频需 Puppeteer 与 Chrome**：HyperFrames 运行时通过 `await import("puppeteer-core")` 动态加载浏览器（packages/deepseek-ivideo/lib/hyperframes/cli.js），导出前需要确保系统已安装可被 Puppeteer 启动的 Chrome/Chromium。

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [deepseek-design](https://deepseek-plugin.org/plugins/Devin-AXIS/deepseek-design/packages/deepseek-ivideo)
Wiki generated by AI (model: `MiniMax-M3`)
