# iPolloWork

> Adds native Video view to DeepSeek Harness. Based on HyperFrames 0.7.60, enables direct generation, editing, and export of editable video projects within conversations, with validation tool support.

## 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/video-studio
```

## Wiki

## 一句话定位
deepseek-ivideo 把 iPolloWork 的 Video Studio 作为原生 Video 视图注入 DeepSeek Harness，让你在对话里让 AI 起草或修改整段视频、套用 27 个内置模板，并对画布中选中的元素发起 Ask AI 精准修改，最终导出成片。

## 核心能力
- 在 DeepSeek Harness 对话标签栏中提供原生 Video 视图，与 Design、PPT 视图并列
- 通过对话让 AI 完整生成或大范围修改视频，并把改动写入当前工作区的真实 HyperFrames 项目文件
- 选中画面中标题、图片、素材或其他元素后用 Ask AI 触发精准修改请求，插件只准备草稿不自动发送
- 内置 27 个可编辑的视频模板，可一键套用到当前会话项目，失败自动回滚
- 提供 `ipollowork_video_validate` 模型工具，自动对当前会话的可编辑视频做结构化校验
- 每个会话对应一个独立的 HyperFrames 预览进程，所有 lease 释放 60 秒后自动回收，端口冲突时自动回退
- 基于 HyperFrames 原生导出能力将视频导出成片，画布操作直接落到 HTML/CSS/素材文件

## 技术实现
- **语言**: TypeScript + React（Studio 前端，Vite 构建）+ Node.js（HTTP 桥接与运行时进程管理）
- **关键依赖**: `@deepseek-ai/cordis`（插件注入与 effect）、`@deepseek-ai/dsh-host-webserver`（路由注册）、`@deepseek-ai/dsh-tools`（模型工具注册）、`@deepseek-ai/dsh-workspace`（工作区解析）、`@deepseek-ai/dsh-client-ui-conversation`（前端对话视图插槽）
- **架构模式**: 服务端通过 `cordis.patch.yml` 注入名为 `ipollowork-video-studio` 的插件，apply 阶段在 `/ipollowork-video` 前缀下注册 webServer 路由，把静态资源、模板目录、项目初始化以及校验工具接到宿主；同时通过 `dsh.client.inject` 把客户端代码注入到 Harness Web 端，对话里注册 `conversation.view` slot 渲染承载 Studio 的 iframe；Studio 内部复用 iPolloWork 主项目的 `VideoPanel` 并通过 `createDeepSeekVideoStudioHost` 桥接到宿主 API
- **入口文件**: `src/index.ts`（服务端注册与 HTTP API）、`src/client.tsx`（前端 Video 视图）、`studio/src/main.tsx`（Studio 内部 React 应用）、`stage-hyperframes-runtime.mjs`（打包时把 vendor/hyperframes 的本地构建产物拷贝到 `lib/hyperframes`，运行时仅调用嵌入的 cli.js）

## 适用场景
适合需要在 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 处理进程组信号 |

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

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

## 常见问题

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

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

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

A: 全部文件直接写入 DeepSeek Harness 当前注册工作区的 `video/<sessionId>/` 目录（packages/types/src/hyperframes-project.ts:14-16 / src/runtime.ts:234-247），含 `index.html`、`manifest.json`、`brief.json` 等真实可编辑文件，与 iDesign 的 `design/` 和 iPPT 的 `design/<sessionId>-ippt/` 目录互相隔离，不会相互覆盖。

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

A: 不会。视频模板筛选只放行 `surface === "video"` 且 `category === "video"` 的模板（src/index.ts:61-64），网站、海报、报告类模板由独立的 `deepseek-idesign` 提供，PPT 类模板由 `deepseek-ippt` 提供；三个插件的项目目录彼此隔离。

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

A: 不会。Ask AI 只把当前视频项目或选中元素的相对路径、定位信息、文字、素材和样式整理成对话草稿填入 Harness 输入框（src/client.tsx:20-30），由用户确认后再手动发送，避免 AI 自动提交造成不可控改动。

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

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

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

A: 首版在 Studio 中显式关闭了 `voice` 和 `designSystem` 两个特性开关（studio/src/main.tsx:48-54），`branding` 标题也固定为 `iVideo by iPolloWork`；这两项属于 iPolloWork 主项目的全局能力，当前版本暂未暴露给 DeepSeek Harness 宿主，仅保留 Video 模板、时间线、编辑、预览和导出能力。

**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`（studio/src/main.tsx:48-54），需要这些能力的用户需使用 iPolloWork 桌面端。
- **仅能读写 `video/<sessionId>/` 子目录**：所有 API 都通过 `safeRelativePath` 强制把路径限制在 `video/` 前缀下（src/index.ts:144-164 / studio-host/src/http.ts:46-60），工作区其它目录不会被插件访问；跨工作区的符号链接也会被拒绝（studio-host/src/http.ts:80-95）。
- **单文件体积上限 4 MB**：视频项目的 `index.html` 等文本读取与写入受 `MAX_TEXT_BYTES = 4 * 1024 * 1024` 约束（src/index.ts:43），与 iDesign/iPPT 的 20 MB 不同；HTTP 请求体上限仍是 20 MB（studio-host/src/http.ts:10、187），超出时返回 413。
- **Session ID 格式受限**：必须匹配 `^[A-Za-z0-9_-]{1,128}$`（src/index.ts:42），过长或带特殊字符的会话 ID 会直接返回 400。
- **端口分配在 3100-3900 区间按哈希取模**：每个 sessionId 派生出一个固定的本地端口（packages/types/src/hyperframes-project.ts:1-8），最多向后探测 32 个端口寻找可用槽位；若全部被占用则启动失败（src/runtime.ts:21、258-307）。
- **运行时进程有空闲超时**：所有 lease 释放 60 秒后进程自动被 SIGTERM 回收，启动超时上限 45 秒（src/runtime.ts:19-22、405-410）。
- **嵌入的 HyperFrames 运行时版本与 npm 公开发行版不同**：发布包在打包时通过 `stage-hyperframes-runtime.mjs` 把 vendor/hyperframes 的本地构建产物（当前源版本 0.7.60）拷进 `lib/hyperframes/`，安装时不会从 npm 拉取同名包；用户如果想升级必须等待主仓库同步并重新发版（package.json:66 / stage-hyperframes-runtime.mjs:7-47）。
- **校验工具超时 120 秒**：`ipollowork_video_validate` 在执行超过 120 秒后会中止底层进程（src/index.ts:209-237），特别复杂的项目需要分段校验或简化项目结构。

---

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/video-studio)
Wiki generated by AI (model: `MiniMax-M3`)
