# iPolloWork

> Adds a visual design view to DeepSeek Harness, enabling direct generation and fine-tuning of non-presentation design works such as websites, posters, and info cards within the conversation.

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

## Wiki

## 一句话定位
iPolloWork Design Studio 是 iPolloWork 为 DeepSeek Harness 单独发布的可视化设计插件，把 Design 视图直接放进 Harness 对话里，让 AI 在工作区中生成和修改真实 HTML/CSS 项目文件，你也可以在画布中选中元素精调文字、字体、颜色、间距和图片。

## 核心能力
- 作为 DeepSeek Harness 对话里的原生 **Design** 视图出现，与 PPT、Video 视图并列在标签栏
- 通过对话让 AI 完整生成或大范围修改设计，并把改动写入当前工作区的真实文件
- 选中画布中的具体元素后用 **Ask AI** 触发精准修改请求，插件只准备草稿不自动发送
- 直接在画布内编辑文字、排版、颜色、尺寸、间距、背景、链接与图片，并支持桌面和移动端预览
- 提供与 Design 主题、设计令牌（design tokens）统一的全局视觉控制
- 内置 Design 模板市场，可浏览封面并一键套用到当前项目，支持撤销与文件冲突检测

## 技术实现
- **语言**: TypeScript + React（前端 Vite 构建）+ Node.js（服务端桥接）
- **关键依赖**: `@deepseek-ai/cordis`（插件注入与 effect）、`@deepseek-ai/dsh-host-webserver`（路由注册）、`@deepseek-ai/dsh-workspace`（工作区解析）、`@deepseek-ai/dsh-client-runtime` / `@deepseek-ai/dsh-client-ui-conversation`（前端视图插槽）
- **架构模式**: 服务端通过 `cordis.patch.yml` 注入名为 `ipollowork-design-studio` 的插件（plugin id），apply 阶段在 `/ipollowork-design` 前缀下注册 webServer 路由；客户端通过 `dsh` manifest 的 client.inject 注入到 Harness Web 端，对话视图里注册一个 `conversation.view` slot 渲染承载 Studio iframe 的 React 组件
- **入口文件**: `src/index.ts`（服务端注册与 HTTP API）、`src/client.tsx`（前端 Design 视图）、`studio/src/main.tsx`（Studio 内部 React 应用）

## 适用场景
适合在 DeepSeek Harness 工作区里直接产出网站、App 原型、海报、信息卡、数据报告、杂志类视觉作品的非技术用户。痛点是：以前只能在对话里得到一次性图片或截图，无法继续精调单个元素；本插件把可编辑的 HTML/CSS 项目留在工作区，并允许画布直接编辑与选区级 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/design-studio
```

## 配置项
本插件无需用户级配置。安装后插件以 `ipollowork-design-studio` 标识注入宿主（cordis.patch.yml），自动在 DSH Web 端注册 Design 视图，并使用 32 字节随机令牌保护 iframe 通信与 API 调用。

## 常见问题

**Q: deepseek-idesign 和 iPolloWork 主项目是什么关系？**

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

**Q: 设计文件保存在哪里？**

A: 全部文件直接写入 DeepSeek Harness 当前注册工作区的 `design/<sessionId>/` 目录，包含 `index.html`、`design-tokens.css`、`manifest.json`、`brief.json` 等真实可编辑文件，不存在云端封闭画布或导出截图。插件的 API 路径前缀只接受 `design/` 路径（src/index.ts:75-77），其他目录不会被读取或写入。

**Q: 安装后会包含 PPT 或 Video 功能吗？**

A: 不包含。Design 模板只显示 `surface === "design"` 且 `category !== "slides"` 的模板（src/index.ts:132-135），幻灯片模板由独立的 `deepseek-ippt` 包提供，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: 本插件的发布能力被显式关闭：Studio 前端的 `callStorage` 接口固定返回 `{ ok: false, error: "unsupported" }`（studio/src/deepseek-client.ts:76-80），`DesignPanel` 的 `features.publish` 也被设为 `false`（studio/src/main.tsx:38）。发布仍由 iPolloWork 桌面端负责。

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

A: 有。文本文件上限为 20 MB（src/index.ts:60 / studio-host/src/http.ts:140、155），HTTP 请求体上限也是 20 MB；超出时会返回 413 错误。

**Q: 如何卸载？**

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

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

## 已知问题与限制
- **不支持发布到生产环境**：发布接口被显式禁用（studio/src/deepseek-client.ts:76-80），仅供本地编辑和迭代，最终成品需通过 iPolloWork 桌面端或其他渠道导出。
- **仅能读写 `design/` 子目录**：所有 API 都通过 `safeRelativePath` 强制把路径限制在 `design/` 前缀下（src/index.ts:75-77 / studio-host/src/http.ts:55-72），工作区其它目录不会被插件访问。
- **单文件体积上限 20 MB**：单文件读取与写入都受 `MAX_TEXT_BYTES = 20 * 1024 * 1024` 约束（src/index.ts:60），超过会返回 413。
- **目录枚举上限 1000 项**：`listFiles` 在遍历到 1000 个条目时停止（src/index.ts:61、191），超大项目可能不会列出全部文件。
- **Session ID 格式受限**：必须匹配 `^[A-Za-z0-9_-]{1,128}$`（src/index.ts:62），过短或带特殊字符的会话 ID 会直接返回 400。
- **Design 模板与 Slides 模板互斥**：模板市场根据 `category` 字段严格区分，Design 项目不会展示幻灯片模板（src/index.ts:132-135）。
- **跨插件模板不会互通**：只安装本包不会下载 `deepseek-ippt` 或 `deepseek-ivideo` 的模板（README.md:128 / external-plugins/deepseek-harness/README.md:56）。

---

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