个人画布是本地的,
共享画布才联网。

默认情况下,你的画布只存在这台设备上。只有主动创建或加入共享画布,节点、连线和位置才会通过 WebSocket 实时同步给房间里的其他人。

同步引擎
Yjs 文档 + Hocuspocus Provider
通道
WebSocket,独立协作服务
同步内容
节点、连线、文本、位置、拖动状态
不同步
媒体文件本体与预签名地址
降级
协作服务不可用时,本地画布照常使用
HOW IT STARTS

三步进入
同一个房间。

  • 01
    创建共享画布在画布右上角打开协作面板,点「创建共享画布」,服务端返回一个房间号。
  • 02
    把房间号发出去协作面板内置分享,直接调用系统分享面板把邀请发到微信、邮件或任何地方。
  • 03
    等文档同步完成面板会显示 Yjs 文档的同步进度。同步完成前面布是锁定的,避免多人同时初始化把内容冲掉。
共享画布需要一个可用的协作服务地址。服务未部署或不可达时,App 会明确提示连接失败并提供重试,不会悄悄退化成只有你一个人能编辑的状态。
3 人在线房间 canvas-7f2a · 已同步
Connected
ROLES & PERMISSIONS

谁能改,
谁只能看。

房间里的角色决定你能做什么。只读成员可以完整查看画布,但无法触发会产生费用的生成请求。

能力房主可编辑成员只读成员
查看节点、连线与位置可以可以可以
移动节点、改文本、连删线可以可以不可
触发生图 / 视频生成可以可以不可(不产生计费)
上传素材到云端短链本人账户本人账户本人账户
停止协作并收回本地可以不可不可
另存一份本地副本可以可以可以
在线状态不可信:成员列表里的身份信息来自 Awareness,服务端会按不可信数据处理,不能靠它提权。
WHAT GETS SYNCED

同步结构,
不同步文件。

画布的结构信息很小,走实时通道毫无压力;媒体文件很大,留给你自己决定要不要上传。

SYNCED

这些会实时同步

  • 节点类型、位置、尺寸与选中状态
  • 节点之间的连线关系
  • 文字节点内容与生成节点参数
  • 在线成员的拖动过程(看得见别人在动)
  • 素材引用 ID、短链 ID 与稳定短链地址
NOT SYNCED

这些不会被上传

  • 图片和视频文件的二进制内容
  • 存储服务的预签名地址(会过期,同步无意义)
  • 你的登录密码与账户密钥
  • 提示词以外的个人数据、诊断日志
媒体文件要共享,需要你在协作面板里主动上传;不上传也不影响画布结构同步。
CLOUD ASSETS

两个账户,
互不干扰。

创作账户用来生成,云端素材账户用来存文件。它们是两套独立的登录:退出其中一个,另一个的会话和本地素材都还在。

  • 01
    独立邮箱账户在协作面板里用短链接服务的邮箱和密码登录,与创作账户完全分开。
  • 02
    按素材逐个上传素材库里的每一个条目都有独立的上传按钮,传完显示为已同步,避免误传整库。
  • 03
    拿回一条稳定短链上传成功后得到短链地址,可以复制到任何地方,也可以被协作者的画布引用。

上传使用你自己的短链接账户 Token,单个文件失败不会影响其他条目

自己部署时的接入前提

FOR SELF-HOSTERS
CHECKLIST

服务端需要准备的东西

  • 部署独立的协作 API 与 WebSocket 服务(Hocuspocus)
  • 为账户授予 canvas 业务访问权限
  • 开放 assets.upload 与 links.create_asset 功能权限
  • 短链接服务的 CORS 允许 capacitor://localhost、http://localhost、https://localhost 与实际 Web Origin
  • 画布生成请求的计费与模型路由按账户分组配置好
CLIENT CONFIG

客户端指向你的服务

协作地址与短链接地址通过构建期环境变量注入,不写死在代码里。本地开发时 Vite 会代理到目标服务,生产构建直连。

VITE_COLLAB_HTTP_URL=# 协作 API 地址 VITE_COLLAB_WS_URL= # WebSocket 地址 VITE_SHORT_LINK_URL= # 短链接服务地址
协作或短链接服务未部署时,不影响本地画布与生图功能,只是协作入口不可用。

协作相关的问题

FAQ
不创建共享画布,别人能看到我的画布吗?

不能。个人画布只保存在设备本地,不会上传到任何服务器,也没有可供他人访问的地址。

协作中途断网会怎样?

断线期间画布会进入保护状态,避免你在没有同步的情况下改动内容造成分叉。恢复连接后重新同步,再继续编辑。

房主停止协作后,我做的内容会丢吗?

房主可以选择把画布保留为本地画布。成员如果希望继续使用这份内容,可以在停止协作之前先「另存为本地画布」,得到一份属于自己的副本。

为什么我上传的图片别人看不到?

画布只同步素材引用与短链地址,文件本体需要真的上传到云端。确认上传成功并且对方能访问该短链;如果上传时遇到网关限制,按提示检查服务端上传大小与存储额度。

只读成员为什么不能点生成?

生成会产生真实费用。只读角色被限制在浏览与查看范围内,所有计费请求都会在客户端与服务端两侧被拒绝。

GET STARTED

先在自己手机上
画一张。

协作是可选项。先把个人工作流跑顺,再决定要不要拉人进来。