AI CANVAS · 让创作,超越一次生成

你的画布,
就是 AI 的上下文。

说出意图。精修细节。延续每一种可能。
你与 Agent,在同一份作品里继续创作。

开始创作
同一份 Scene

让整个工作台,围绕作品展开。

对话、画布与生成,共用同一份创作上下文。

AI Canvas 实际工作台:晨雾商品海报、独立标题图层、浮动工具与 Agent 创作输入
工具岛 / 精确操作
检查器 / 细节可控
创作输入 / 描述意图
作品 / 始终在中央
跳到创作现场 ↓

实际应用截图 · 网页空间分解演示;示例素材不代表模型画质

意图有结构。 自动化可接管。 作品有记忆。 工具有分寸。

它不是给图片模型套了一层表单,也不是聊天网页加右侧预览。
它是一间安静、精密、有流动光学器件的数字工作室:作品是光源,工具围绕作品出现、移动、停靠和收起。

创作现场

一句话同时包含保留、排版、参考与生成。

“保留主体,把标题收小一点。沿用这个构图,再试一版清晨的光。”——AI Canvas 将这些决定落在同一份可编辑的 Scene 中:Agent 与鼠标操作同一组对象,参考编译器组织生成上下文,结果回到画布成为下一次创作的起点。

同一份 Scene · 网页交互示意

对话、画布、生成。
不是三个页面,是三个工作焦点。

它们共享同一个项目、对话、Scene 版本、选择、素材、生成任务、结果、血缘、已提交的撤销历史与项目记忆。切换视图不会复制状态、不会丢失选择、不会重置草稿、不会打断正在运行的任务。

晨雾 · 商品主视觉
导出 PNG
AUREL / MORNING MIST 晨雾 晨雾香氛 · 淡香精 · 50 mL

当前作品 4:5 画布 · 7 个元素

保留主体,把标题收小一点。沿用这个构图,再试一版清晨的光。

助手

标题已缩小到 72,主体与构图保留。清晨光线方向已记录为本轮偏好。

  • 更新画布结构当前选区 · 准确主标题 · 已完成定位 · 撤销
  • 记录本轮偏好项目记忆 · 待确认确认

图层属性

  • 准确主标题
  • 香氛瓶身
  • 清晨侧光
  • 展台
  • 叶片 · 仅参考
当前 · v1.2
变体 01
变体 02

放入画布继续变化比较导出

描述你想调整的画面… 待命 当前画布 · 仅调整画布
  1. 01 · 对话

    表达意图,检查真实动作。

    文档式创作记录,不是聊天气泡墙。你说清目标,Agent 回执它实际做了什么:动作、范围、对象、结果、费用与外发摘要,以及可用的撤销、定位、继续。右侧是同一份 Scene 的实时画布,不是静态副本。

    • 审阅 · 每步确认
    • 协作 · 低风险自动
    • 自动 · 边界内连续
    • 修正本轮
    • 补充本轮
    • 排到下一轮
    • 立即停止
  2. 02 · 画布

    精确控制,人工接管同一份作品。

    选择、移动、缩放、分组、排序、裁剪、编辑文字、绘制草图与蒙版、放置光影。文字与形状保持可编辑;模型返回的成图以图片元素继续参与创作。工具栏、检查器与创作输入是三座独立的光学工具岛。

    • 选择 V
    • 抓手 H
    • 导入图片
    • 文字 T
    • 草图 B
    • 形状
    • 主体占位
    • 光影
    • 蒙版
  3. 03 · 生成

    探索方向,延续分支。

    配置一次请求,观察一个真实任务,比较结果,继续变化,把结果放回画布并导出。结果进入「结果家族」:参考、当前、父子变化与恢复形成可理解的血缘。失败时保留原 Prompt、参考与参数,说明真实失败阶段。

    • 仅文字
    • 当前画布
    • 选中结果
    • 指定图片
    • 首次生成
    • 局部修改
    • 相似延展
    • 画布参考
    • 文字效果

Glass Islands

工具围绕作品出现、
移动、停靠、收起。

没有固定的左右侧栏。画布工具栏、检查器和 Agent 创作输入都是独立的浮动仪器:可拖动、可缩放、可停靠四边、内容随方向重排、可收成一颗实用的圆球再恢复,并记住你的布局。下面是可以真正操作的演示。

AUREL / MORNING MIST 晨雾 晨雾香氛 · 淡香精 · 50 mL
工具
图层 · 属性
  • 准确主标题文字 · 96
  • 香氛瓶身主体
  • 清晨侧光光影
  • 展台形状
  • 叶片草图 · 仅参考
Agent 创作输入

待命 当前画布 · 仅调整画布 协作

拖动顶部把手移动;拖到边缘停靠;点圆球图标收起。布局保存在本地。

唯一的标志性元素

一条光迹,只在真实动作
与真实对象之间出现。

大胆只花在一个地方。当 Agent 的操作触及画布对象时,一条极细、低饱和的光谱轨迹从创作输入延伸到被影响的对象,然后自行收束。它从不无中生有:没有真实活动、没有真实受影响的元素,就没有光迹。

AUREL / MORNING MIST 晨雾 晨雾香氛 · 淡香精 · 50 mL
把标题收小一点,保留主体。

待命 当前画布 · 仅调整画布

Reference Compiler

The scene is a source language.

画布同时承载几何、语义与视觉证据。一次生成需要知道主体在哪里、哪些元素互相遮挡、哪些文字必须准确、哪些辅助对象不应出现在成图里。参考编译器把这些信息编译为语义包与视觉参考,再按 Provider 能力组织请求上下文。

  1. 00

    Scene

    可编辑的结构化作品:元素、变换、层级、语义角色、参考策略与来源。

    idtypesemanticRolereferencePolicytransformzIndexopacityblendModeprovenance
  2. 01

    Prompt IR

    布局、层次、遮挡与保护意图可以被继续处理的中间表示。

    boundszIndexrelationsocclusionsprotectedElementIdspresentation
  3. 02

    Prompt Package

    构图、文字、风格与禁止项分别表达,而不是揉成一段提示词。

    compositionContracttextContractstyleBiblenegativeConstraints
  4. 03

    Reference Manifest

    区分参考素材的用途,并保留来源关系;素材读取经过内容哈希核对。

    appearance-compositesemantic-sheetsource-imagesketch-underlaymask
  5. 04

    Provider Compiled Prompt

    在具体服务能力下形成提示内容与限制说明;不支持的能力不会被假装支持。

    promptnegativePromptreferenceModewarnings
compilePromptIr · 元素映射(内部实现片段)
elements: scene.elements.map((element) => ({
  id: element.id,
  type: element.type,
  // … name, description, semanticRole, provenance
  referencePolicy: element.referencePolicy,
  presentation: presentationFor(element),
  zIndex: element.zIndex,
  opacity: element.opacity,
  blendMode: resolveBlendMode(element),
  bounds: { ...element.transform },
  attributes: attributesFor(element)
}))

reference-only 元素可成为语义引导;隐藏、排除、蒙版与分组元素的 presentation 可为 omitted——它们仍可携带结构或保护信息,但不会被直接画成编辑器控件。

编译结果同时携带 sceneIdsceneRevision。场景版本改变时请求随之更新,不能只更新说明而未更新请求。

结构参考、视觉参考、同时参考、Prompt Package、历史结果与编辑范围共同约束生成;草图探索与高质量定稿职责明确。

执行契约

A suggestion becomes a checked mutation.

Agent 的修改先表达为有作用域的命令,再经过策略、锁定和版本校验。预览保存操作批次、结果摘要与反向补丁;提交时,Main 再次核对权威 Scene 与执行结果。这条链路解决一个具体冲突:模型规划之后,用户可能已经把画布改了。旧计划不能假装这些修改不存在。

01 提议

有作用域的命令

scope · 元素锁定 · 保护 · 工具策略

02 预览

影子执行

batch · patches · inversePatches · scene digest

expectedSceneRevision = 12

03 提交检查

Main 核对权威 Scene

当前 revision = 12

等待提交

04 持久化

可撤销批次

本地已提交操作保留批次与反向补丁

拒绝

旧版本提交被拒绝

重新读取权威 Scene,重新预览

Scene revision 12 · 尚未提交

校验点实现约束
版本expectedSceneRevision 必须与当前权威 Scene 一致;预览后发生人工编辑,提交也会再次检查。
作用域与权限scope、元素锁定、保护与工具策略参与预览许可判断。
执行身份幂等键绑定工具参数;提交令牌绑定会话、有效期与 prepared 状态。
结果一致性对照预览核对 batch、patches、inversePatches 与 Scene digest。
可撤销记录本地已提交操作保留批次与反向补丁;外部请求及费用不随画布撤销而消失。

生成运行时

A network timeout is not proof of non-submission.

生成任务保留请求身份、提交状态、结果与来源关联。队列必须区分「确定未发送」和「可能已经发出」,因为一次普通的重试可能变成第二笔付费请求。

请求结果决策树:确定未发送则进入重试保护并准备新尝试;可能已提交或已有外部任务 ID 则禁止重发并对账原任务。 request outcome confirmed not_sent retry safety checks prepare a new attempt possibly submittedor externalTaskId exists NO_REPOST reconcile the original job

连接在发送前失败,请求身份可核对:允许准备新的尝试。

有界付费

请求数、图片数与费用上限由执行策略约束。自动模式达到任一限制后停止并请求决定。未知费用必须明确标记,不伪造精确金额。

  • 请求数
  • 图片数
  • 费用上限
  • 持久累计预算

真实状态,不是好看的进度条

每个状态都真实且可操作,可用性不能只在已成功三张美图时成立。

  • 排队
  • 真实进度
  • 部分结果
  • 成功
  • 取消
  • 失败
  • 超时
  • 外部未知
  • 费用未知
  • 原身份不可用

错误可区分

凭据、模型、协议、参数、预算、网络与服务端问题分别呈现。未支持的能力不会显示成可用入口;未知协议不猜测兼容。

光学工作室

三种工作室主题,
三种玻璃质感。

作品保持实体,主题与玻璃只改变功能层。精致来自局部而非全圈高亮:少量折射边缘、局部环境染色、层叠接触影、清晰的文本中心与适度透过。高质量折射会在拖动和低能力设备上自动降级。

工作室主题
玻璃质感
--pearl
--ink
--cobalt
--iris
--champagne
--glass-blur
AUREL / MORNING MIST 晨雾 晨雾香氛 · 淡香精 · 50 mL
工具
图层
  • 准确主标题文字 · 96
  • 香氛瓶身主体
  • 清晨侧光光影

描述你想调整的画面…

待命 当前画布 · 仅调整画布

运行边界

Main 是权威。
Renderer 看不到密钥。

Main 负责 Scene、持久化、凭据与外部请求。Renderer 通过 Preload 与窄 IPC 接口操作,窗口开启 sandbox、context isolation 并关闭 Node integration。本地优先指项目存储与控制边界;在线推理仍会发送所需提示词与参考内容到你自己配置的服务。

RENDERER

对话画布生成

React · Konva · Zustand · 无 Node、无任意网络、无明文凭据

PRELOAD

typed, validated IPC

contextBridge · 所有输入经 Schema 校验

MAIN

Agent Runtimecontext · policy Scene Authorityrevision · commands Generation Runtimeidentity · budget
Reference Compiler

已保存的 Key 只在请求瞬间由 Main 读取 · 模型输出不能选择任意端点

configured LLMconfigured image API

只能访问用户保存并验证过的 Base URL 与响应中经校验的任务/内容地址

LOCAL STORAGE

SQLiteasset files

项目、Scene、素材、Prompt、参考、任务、结果、版本与记忆具有可恢复的完整血缘

Provider

两个可替换的配置槽,
不是产品的中心。

产品保持一个语言模型模块和一个图片模型模块。你配置名称、协议、Base URL、模型、超时、并发、能力与凭据;Runtime 根据已保存配置注册对应实现。在线能力使用你自己的模型服务与额度。

语言模型

  • ark-responses火山方舟 Responses
  • openai-responsesOpenAI Responses 兼容
  • openai-chat-completionsOpenAI Chat Completions 兼容

推理强度 auto → max · 图片细节 auto / low / original · 流式或缓冲传输,连接、首事件、空闲超时可配置。

图片模型

  • ark-seedream火山方舟 Seedream
  • openai-imagesOpenAI Images 兼容
  • task-images异步任务式图片协议

文生图、参考图、编辑、组图分别进行能力门禁;无 Key 时项目、画布与离线 Agent 仍可用,状态诚实。

协议名称相同不保证各服务实现都兼容。参考图、蒙版、编辑和流式输出取决于具体服务能力及实际响应。真实连接验证只使用已保存配置,经用户二次确认后最多发送一个极小请求,失败不自动重试。

工程地图

用可验证的方式构建。

目录职责主要技术
src/domain/Scene、命令与领域规则TypeScript · Zod · Immer
src/main/Agent、参考编译、生成、存储Electron · Sharp · SQLite · Kysely
src/preload/桌面 API 桥接Electron contextBridge
src/renderer/创作界面、画布与交互状态React · Konva · Zustand
src/shared/跨进程类型与运行时契约TypeScript · Zod
tests/单元、集成与桌面行为验证Vitest · Testing Library · Playwright

验收矩阵

  • 1024 × 700
  • 1280 × 800
  • 1440 × 900
  • 1920 × 1080
  • 2560 × 1440
  • 100% / 125% / 150%
  • 浅色 · 暗色
  • Reduced Motion
  • Reduced Transparency
  • 键盘
  • IME
  • 核心命中区 ≥ 40–44px

工具有分寸

我们不承诺的事。

Product 1.0 表示个人日用产品成熟度,不自动表示公开发布、商业化或多人协作。当前仓库是持续演进中的产品实现。

v0.3.0 · Pre-release

从一句话开始,
在同一件作品里继续。

Windows x64 便携版与安装版,未签名测试候选。源码 ZIP 与 SHA256SUMS 一并提供。新建项目后,在设置中分别配置语言模型与图片模型;本地画布可以先开始使用。

从源码构建 · Node ≥ 22 · pnpm 11.9.0

pnpm install --frozen-lockfile
pnpm dev

pnpm typecheck
pnpm lint
pnpm test
pnpm test:integration
pnpm build
pnpm package:win

首次安装可能下载 Electron 并构建原生模块。自动验证使用离线替身,不调用真实收费 Provider。