185 lines
7.3 KiB
Markdown
185 lines
7.3 KiB
Markdown
# 功能介绍
|
||
|
||
本文档记录当前项目已经实现的主要功能。
|
||
|
||
## 画布项目
|
||
|
||
- 支持创建多个画布项目。
|
||
- 支持项目重命名、删除、批量选择和批量删除。
|
||
- 支持单个画布项目导出为 JSON,也支持从 JSON 导入画布。
|
||
- 画布项目保存在浏览器本地,登录账号后暂不会自动同步到服务器。
|
||
|
||
## 无限画布
|
||
|
||
- 支持拖动画布、滚轮缩放、缩放滑杆和重置视图。
|
||
- 支持小地图定位,可开关小地图。
|
||
- 支持点阵、网格线、空白三种背景。
|
||
- 支持浅色和深色主题。
|
||
- 支持框选、多选、全选、取消选择、删除选中。
|
||
- 支持复制粘贴节点和节点之间的连线。
|
||
- 支持撤销和重做节点、连线、视口、背景和助手会话变化。
|
||
- 支持节点连线,并高亮当前节点相关的上下游节点和连线。
|
||
- 支持快捷键帮助,覆盖缩放、框选、全选、复制粘贴、撤销重做、删除、退出选择和拖入图片。
|
||
|
||
## 节点
|
||
|
||
目前画布中有三类节点:
|
||
|
||
- 图片节点:展示上传图片、生成图片或素材库图片。
|
||
- 文本节点:保存提示词、说明文案、AI 文字回答等文本内容。
|
||
- 生成配置节点:汇总上游文本和图片,统一配置模型、比例、数量后批量生成图片或文本。
|
||
|
||
节点支持:
|
||
|
||
- 拖拽移动。
|
||
- 四角缩放。
|
||
- 图片节点等比缩放或自由比例切换。
|
||
- 查看节点基础信息和 JSON。
|
||
- 删除、复制、粘贴。
|
||
- 通过左右连接点建立上下游关系。
|
||
|
||
## 图片工作流
|
||
|
||
- 支持上传图片到新节点。
|
||
- 支持拖拽图片文件到画布。
|
||
- 支持替换已有图片节点内容。
|
||
- 支持下载图片节点。
|
||
- 支持把图片节点保存到“我的素材”。
|
||
- 支持图片裁剪,并把裁剪结果生成为新的图片节点。
|
||
- 支持本地多角度变换,并把结果生成为新的图片节点。
|
||
- 支持生成失败后重试。
|
||
- 批量生成多张图片时会先展示为图片组节点,支持叠卡预览、展开查看全部结果并设置主图。
|
||
|
||
## AI 生成
|
||
|
||
项目支持两种 AI 调用方式:
|
||
|
||
- 本地直连:前端使用本地配置的 Base URL、API Key 和 Model 直接请求 OpenAI 兼容接口。
|
||
- 后台渠道:前端请求本项目后端 `/api/v1/*` 代理接口,后端按模型选择管理后台配置的渠道。
|
||
|
||
OpenAI 兼容图像和文本能力继续复用现有接口:
|
||
|
||
- `/v1/images/generations`:文生图。
|
||
- `/v1/images/edits`:图生图/参考图编辑。
|
||
- `/v1/chat/completions`:文本问答和带图问答。
|
||
- `/v1/models`:读取模型列表。
|
||
|
||
视频能力支持两类接口:
|
||
|
||
- OpenAI 风格视频:`POST /v1/videos`、`GET /v1/videos/{id}`、`GET /v1/videos/{id}/content`。
|
||
- 火山方舟 Agent Plan / Seedance 2.0:Base URL 使用 `https://ark.cn-beijing.volces.com/api/plan/v3`,创建任务为 `POST /contents/generations/tasks`,查询任务为 `GET /contents/generations/tasks/{id}`,成功结果读取 `content.video_url`。
|
||
|
||
Base URL 如果已经以 `/v1`、`/api/v3` 或 `/api/plan/v3` 结尾,系统不会再追加 `/v1`。因此 cpa 反代或火山方舟 Agent Plan 可以继续通过现有 Base URL + API Key + Model 方式配置,不需要新增火山生图 Provider。
|
||
|
||
可配置项:
|
||
|
||
- Base URL。
|
||
- API Key。
|
||
- 默认模型。
|
||
- 图片质量。
|
||
- 图片比例。
|
||
- 生成数量。
|
||
- 视频模型。
|
||
- 视频比例、清晰度和时长。
|
||
|
||
普通图片/文本节点可以直接输入提示词生成结果。生成配置节点可以读取上游节点内容,并按节点自己的配置批量生成多个图片或文本结果。生成配置节点支持预览当前提示词和参考图输入,并调整输入顺序。
|
||
|
||
视频生成可从文本节点读取 prompt,从图片节点读取参考图,从视频节点读取参考视频。生成成功后会把视频插入画布为视频节点并使用原生播放器预览。Seedance 参考视频需要公网可访问 URL;本地上传视频会先通过 `/api/v1/media/references` 保存到服务端,再由 `PUBLIC_BASE_URL` 生成可供火山服务器拉取的公开链接。
|
||
|
||
## 画布助手
|
||
|
||
画布右侧助手面板支持:
|
||
|
||
- 文本问答。
|
||
- 生图。
|
||
- 读取当前选中节点作为引用。
|
||
- 自动把选中节点的上游节点也纳入引用。
|
||
- 粘贴图片到助手输入框并插入画布。
|
||
- 历史会话。
|
||
- 删除单条或多条会话。
|
||
- 重试回答。
|
||
- 把助手生成的文本插入画布。
|
||
- 把助手生成的图片插入画布。
|
||
- 折叠和展开助手面板。
|
||
|
||
## 提示词库
|
||
|
||
前台提示词库支持:
|
||
|
||
- 按标题搜索。
|
||
- 按标签筛选。
|
||
- 按来源筛选。
|
||
- 查看提示词详情。
|
||
- 查看封面和结果图。
|
||
- 复制提示词。
|
||
- 把提示词加入“我的素材”。
|
||
|
||
后台提示词管理支持:
|
||
|
||
- 查询提示词。
|
||
- 新增、编辑、删除提示词。
|
||
- 按分组和标签筛选。
|
||
- 查看远程提示词源。
|
||
- 同步内置远程提示词源。
|
||
|
||
当前内置远程源包括多个 GPT Image / GPT-4o / Nano Banana Pro 相关提示词仓库。
|
||
|
||
## 素材
|
||
|
||
“我的素材”是浏览器本地素材库,支持:
|
||
|
||
- 新增文本素材和图片素材。
|
||
- 编辑素材标题、封面、标签、来源、备注和内容。
|
||
- 删除素材。
|
||
- 按关键词搜索。
|
||
- 按类型筛选。
|
||
- 分页浏览。
|
||
- 复制文本素材。
|
||
- 下载图片素材。
|
||
- 从提示词库、画布节点和服务器素材库加入素材。
|
||
- 在画布中插入素材。
|
||
|
||
“素材库”是服务器素材库,支持:
|
||
|
||
- 按标题搜索。
|
||
- 按类型筛选。
|
||
- 按标签筛选。
|
||
- 查看素材详情。
|
||
- 复制文本或图片链接。
|
||
- 加入“我的素材”。
|
||
- 在画布中插入素材。
|
||
|
||
后台素材库管理支持:
|
||
|
||
- 查询素材。
|
||
- 新增、编辑、删除素材。
|
||
- 按类型和标签筛选。
|
||
|
||
## 账号和后台
|
||
|
||
- 注册功能暂时关闭。
|
||
- 仅允许管理员账号登录。
|
||
- 支持 JWT 会话。
|
||
- `/api/auth/me` 可读取当前用户,未登录时返回访客用户。
|
||
- 首次启动时可根据环境变量创建默认管理员。
|
||
- 管理员后台目前包含提示词管理和素材库管理。
|
||
- 后端已有用户管理接口,但前端暂未实现用户管理页面。
|
||
|
||
## 后端能力
|
||
|
||
- Gin 提供 API 服务。
|
||
- Docker 运行时由 Next.js 提供页面入口,`/api/*` 请求代理到内部 Go 服务。
|
||
- GORM 管理数据库连接和自动迁移。
|
||
- 支持 SQLite、MySQL、PostgreSQL。
|
||
- 数据库保存用户、提示词分组、提示词和服务器素材。
|
||
- 业务接口统一返回 `{ code, data, msg }`。
|
||
|
||
## 当前限制
|
||
|
||
- 画布项目和“我的素材”目前只保存在浏览器本地,不会随账号同步。
|
||
- 本地直连模式下,AI API Key 保存在浏览器本地,并由浏览器直接请求配置的 OpenAI 兼容接口;只适合本地或个人使用,公网多人使用不安全。公网部署推荐使用后台渠道,把真实密钥保存在服务端配置中。
|
||
- 服务器素材库目前主要保存 URL 或文本,暂未提供文件上传接口。
|
||
- Seedance 本地参考图/视频上传依赖 `PUBLIC_BASE_URL`,如果服务部署在 localhost、内网或不可被火山访问的地址,火山无法拉取参考素材。
|
||
- Seedance 返回远程视频 URL 时,前端会尽量下载为本地 Blob 持久化;如果因 CORS 或网络限制无法下载,会保留远程 URL,后续是否可播放取决于上游 URL 的有效期。
|
||
- 画布更适合桌面端使用,移动端触控体验还未系统完善。
|