把 AI 生图和画布编排放进同一个工作台(无限画布)

无限画布(infinite-canvas)是一套用 TypeScript 写的开源 AI 创作工作台,把无限画布、AI 生图、参考图编辑、视频生成、对话助手、提示词库与插件系统放进同一个界面,兼容 OpenAI 兼容接口生态。这篇文章梳理它的部署方式、主要功能与接口配置方法,以及真实用户踩过的坑,帮读者判断要不要自己搭一套。

AI 生图工具大多按“发一条提示词、等一张图”来组织。改一处细节要重填整段提示词,上一轮生成的那张参考图,下次用还得从下载文件夹里翻出来。围绕一组视觉方案连续迭代时,这些动作会把创作切得很碎。

无限画布(infinite-canvas)是一套用 TypeScript 写的开源创作工作台,输入是画布上的提示词、参考图与节点连线,输出是 AI 生成的图片、视频和对话结果。

它把画布编排、AI 生图、参考图编辑、对话助手、提示词库和素材沉淀放进同一个界面。节点之间可以连线,生成结果直接落回画布,作为下一轮的输入。典型场景是围绕同一个视觉方向反复试:选定一个节点,改提示词或换参考图,生成结果接在它后面,整条探索路径留在画布上,不用去翻历史记录。仓库目前有 7488 star、1848 fork,开放 Issue 15 条。

无限画布的节点式创作界面示意

基础用法

仓库地址是 https://github.com/basketikun/infinite-canvas ,采用 MIT 许可证,主要语言是 TypeScript,占比 98.5%。部署路径有三条,分别对应仓库里的 docker-compose.yml、render.yaml 和 vercel.json。

安装与依赖

项目用 TypeScript 写,前端基于 Vite 7 与 React Router 7。部署侧仓库里放了 Dockerfile 和 nginx.conf,官方镜像地址是 ghcr.io/basketikun/infinite-canvas:latest,另外提供了 Render 一键部署入口。

Issue 里出现过一段 Docker Compose 配置,可以直接作为起容器的起点:

services:
  infinite-canvas:
    image: ghcr.io/basketikun/infinite-canvas:latest
    container_name: infinite-canvas

docs/ 目录下有 quick-start、docker、render 三份文档,具体命令以那几份为准。仓库里没有在根 README 正文里展开写各条部署路径的完整命令。

最短能跑通的示例

用上面那段 Compose 起容器,容器里的服务监听 3000 端口。浏览器打开 localhost:3000 就能进到画布界面,这一点来自 Issue 里用户的实测描述。

进到界面只是第一步。真正让它干活,要在设置里填入一个 OpenAI 兼容接口的地址和 Key。项目支持 chatgpt2api、grok2api、flow2api、newapi 等渠道接入。填好之后点拉取模型列表,能返回模型名才算接通。

确认它跑起来了

有两个判断点。页面能正常打开画布,节点可以拖拽、缩放、连线;配置接口之后拉取模型列表返回了模型名,接着发一次文生图请求,结果节点出现在画布上。

拉取模型失败时,Issue 里有用户遇到过同类情况,报错信息是“读取模型失败”,原因大多出在中转站那一侧的配置。另外,官方在线的演示实例已经不可用,Issue 里有用户反馈打开链接显示服务被其所有者暂停。

主要功能

画布与创作

  • 无限画布:支持多画布项目、节点拖拽缩放、连线、小地图、撤销重做、导入导出。画布是整个工作台的承载层,生成结果都以节点形式落在上面,连线的方向决定下一轮生成拿哪些节点当输入。
  • AI 创作:浏览器前台直连你配置的 OpenAI 兼容接口,支持文生图、图生图、参考图编辑、文本问答,以及音频和视频生成。生成动作发生在浏览器里,不经过项目自己的服务端转发。
  • 画布助手:围绕选中的节点和它的上游节点对话、生图,结果会插回画布。这个入口适合在已有素材基础上继续追问,不用手动复制粘贴图片。
  • 提示词库:内置 7 个开源提示词来源,也支持自定义标准 JSON 来源,由浏览器前端直连并缓存到本地。

扩展与接入

  • 本地 Agent 与 Codex App 插件:通过本机 Canvas Agent 连接 Codex / Claude Code,让 Agent 通过 MCP 操作当前画布;Codex app 插件安装后会自动注册 MCP 并尝试拉起本地 Agent。
  • 插件系统:支持通过 URL 动态安装、启用、更新、卸载远程节点插件,并提供 TypeScript SDK,用来自行开发画布节点插件。
  • 自定义接口调用:可以自定义生图、视频接口的调用方式,用来适配各类中转站与自建服务。接入非标准接口时,这一项是绕开兼容问题的入口。

参数与配置

常用参数

仓库节选里没有列出命令行参数,主要的可调项都在网页端界面里:

  • 接口地址与 Key:接入 OpenAI 兼容渠道时填写,支持 chatgpt2api、grok2api、flow2api、newapi 等。多人使用时每条浏览器各自配一份。
  • 服务端口:容器内服务监听 3000。
  • 生图参数:界面上有尺寸与质量两组选项,尺寸对应比例(如 1:1、3:2、16:9),质量对应 low / medium / high / auto。这两个参数直接决定请求里的字段,高分辨率场景要看清楚它们的语义。

配置文件

仓库根目录有 docker-compose.yml、docker-compose.local.yml、render.yaml、vercel.json 和 nginx.conf。这些文件里各字段的含义与取值,仓库节选里没有说明,需要看 docs/ 下的 docker 与 render 文档。

另外根目录还有 VERSION、CHANGELOG.md、SECURITY.md 和 skills-lock.json。安全问题的提交方式写在 SECURITY.md 里。

实际使用中的坑

下面几条来自仓库的 Issue 列表,状态都是已解决,写出来是让你知道哪些地方容易卡住。

  • 高分辨率出图的参数语义。接入 gpt-image-2、sub2api 一类接口时,界面上的“尺寸”实际表达的是比例,“质量”是 low / medium / high / auto,两者都不直接对应高分辨率请求。有用户反映生成结果一直停在 1K 左右(1024×1536)。这条被明确讨论过并给出调整方案。
  • 内网地址访问。用 localhost:3000 时大部分功能正常,换成 192.168.x.x:3000 后很多操作点了没反应,用户怀疑代码里把监听地址限制死了。如果你打算把画布挂在局域网里给别人用,这一条值得先确认。
  • Docker 部署的数据持久化。在 NAS 上用 Docker Compose 部署时,有用户提出把用户数据持久化到容器挂载目录,否则容器重建后数据不好找回。
  • 升级后容器起不来。有用户更新到 v0.2.1 之后容器以 code 1 反复重启,日志里能看到 GIN-debug 的输出。

还有一条来自 README 本身的提醒:项目目前处于开发阶段,不保证历史数据兼容,各种本地存储格式都可能直接调整。如果你需要稳定维护自己的分支,README 的建议是自行 fork 后独立开发;二次开发与 PR 要保留原作者信息和前端页面标识。

几个同类怎么选

下面三个项目放在一起看,各自的落点不同。Toonflow 同样面向 AI 内容创作工作台,Bilibili-thread-ripper 只解决素材获取那一步。

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
infinite-canvas已经在用 OpenAI 兼容渠道、要围绕同一组视觉方案反复迭代出图的创作者;愿意自己维护容器的技术团队Docker / Render / Vercel,镜像 ghcr.io/basketikun/infinite-canvas:latest处于开发阶段,不保证历史数据兼容;生成请求由浏览器前台直连接口,多人协作需各自配置需要把生图、参考图编辑、视频生成和对话助手编排在同一块可连线画布上时infinite-canvas
Toonflow要把剧本推进到成片短剧、关心叙事流程而非单张图片的人仓库没有说明主打短剧成片的流水线,不做通用画布编排目标产物是完整短剧视频、不需要自由拖拽的节点画布时Toonflow
Bilibili-thread-ripper需要批量下载 B 站素材、把下载当成素材准备一步的人仓库没有说明只做 B 站内容的下载,不生成也不编排内容;和本项目不是同一件事,列在这里只是给做素材准备的读者一个参照只需要把 B 站素材拉回本地,不打算为生图起一套服务时Bilibili-thread-ripper

如果你的目标直接是成片短剧,Toonflow 那条从剧本到视频的流水线是本项目没有的,无限画布停在图片、视频素材和节点编排这一层,后续剪辑还得自己接。如果只是想把 B 站素材拉到本地,专用下载工具更省事,起一套容器加接口配置没有必要。想清楚产物是哪一层的文件,比对比功能列表更有用。

适合谁

它适合已经在用 OpenAI 兼容渠道、需要围绕同一组视觉方案反复迭代出图的创作者;适合想把多个生图和生视频渠道收进一个界面,并且不介意自己维护容器的团队;也适合需要让 Codex / Claude Code 通过 MCP 直接操作画布工作流的开发者。

它不适合想要开箱即用、不接受自己配接口和部署的人。也不适合需要项目保证数据格式长期稳定、准备把生产素材长期沉淀在里面的人,README 已经写明存储格式可能调整。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.1 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)8.0 / 10
社区响应(权重 15%)10.0 / 10
文档质量(权重 15%)7.7 / 10
发布节奏(权重 10%)10.0 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

这篇把 infinite-canvas 的部署路径、OpenAI 兼容接口配置和 Issue 里反复出现的卡点放在一起,价值在于省掉翻 docs/ 和 Issue 列表的时间,适合已在用兼容渠道、愿意自己维护容器的创作者与技术团队。需要留意两点:仓库仍处开发阶段,不保证历史数据兼容;

star、fork、Issue 数量与语言占比为抓取时快照,数据来自原作者公开披露,诀.com 未独立验证;Docker 端口、镜像地址等来自仓库文件与 Issue 转述。高分辨率参数语义、内网地址访问、容器升级后重启等问题均为 Issue 中提交者的描述,本站未复现,结果不保证重现。焚评评分为焚.com 引用数据,数值随其页面刷新。

项目来源与说明

开源项目:basketikun(basketikun)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库