拦得住
单轮生成上限独立于确认设置;即使跳过确认,预计下一次生成会使本轮累计超限时,也会在发起前暂停。
Design Owner
AI 原生创作工具
端到端设计与实现
个人项目 · 桌面端
Canvo 是面向视觉创作者的 AI 工作台,支持在无限画布上调用多模型,生成和迭代文本、图像、视频与音频。
Agent 可读取画布、调用生成工具,再将结果放回画布。当它连续执行多步任务时,用户如何理解进展,并保有创作控制权?
我负责 Canvo 的产品定义、交互与视觉设计,以及开发实现。
项目处于小范围内测。本案例聚焦 Agent 与画布的协作:在提高执行效率的同时,让用户知情并保有决策权。
Agent 接手执行后,用户从逐步操作转向审阅与决策,需要掌握进展、调整计划并控制花费。


Problem 1

Problem 2

Problem 3
让用户看得见进展、改得动计划、拦得住花费。
设计策略对应三个问题。
单轮生成上限独立于确认设置;即使跳过确认,预计下一次生成会使本轮累计超限时,也会在发起前暂停。
生成前提交可编辑的计划,用户可修改内容与参数,确认后按修改后的计划执行。
分开显示 Agent 操作与画布生成状态;对话结束后,未完成的生成仍持续可见。
Agent 结束本轮对话时,视频可能仍在渲染。若此时提示完成,用户会误以为结果已生成。
我将两种状态分开:消息流显示 Agent 当前操作;输入区上方常驻显示当前项目正在生成的任务数和最长等待时间。对话结束后仍保留,直到生成结束。
基于参考图,生成三个视频镜头。
已查看画布中的节点与连接。
海边小屋已读取参考节点的提示词。
海边小屋已查看参考图的主体与构图。
海边小屋、分镜草稿已读取两个节点的提示词与参数。
海边小屋Agent 拟定生成内容、模型与数量,费用却由用户承担;生成后再发现偏差,成本已付出。
生成前,Agent 提交可编辑的计划卡片。用户可就地修改提示词、模型、比例、数量或时长、清晰度,确认后按修改后的计划执行。
用户也可让 Agent 只建节点并填好提示词与参数,由用户在画布上检查、修改后再手动生成;准备节点不占用本轮生成额度。
取舍
跳过所有确认后,Agent 可连续执行,但用户难以预知本轮的生成次数与累计积分花费。
屏幕前没有人的时候,产品还能替他守住什么?
系统默认设有单轮生成上限,独立于确认设置;可随时调整或选「不限制」,无需每轮重设。

为什么按整轮计算
一轮从用户提交任务到 Agent 回复结束。同轮多次生成合并计算,避免单次花费不高、累计却超出预期。
若预计下一次生成会使本轮累计超限,系统会在发起前暂停,并在对话中显示本次所需积分与当前上限。用户可调整上限后继续,或跳过本次生成。
输入区随选中节点浮动时,既会遮挡画布,也让用户在切换节点后重新寻找输入位置。
我将输入区固定在画布底部,减少位置变化,让注意力留在节点内容上。
常见做法

Canvo
取舍
固定位置也削弱了输入区与节点的空间关联。因此,我在输入区上方常驻节点标签,明确当前引用对象。
比例、清晰度、时长等参数若通过浮层选择,会增加界面层级并遮挡画布。我希望基础参数的选择留在输入区内。
常见做法

Canvo
选择器临时替换输入区内容,关闭后恢复原文。代价是选参数时看不到提示词;换来的是不增加浮层,视线留在同一区域,输入也不会丢失。
Canvo 1.0.8 仍在小范围内测,尚无用户数据。以下三项设计判断仍待真实使用验证。
4.2 假设用户需要在生成前调整计划。若大多数人直接确认,需结合修改频次与避免的生成损失,评估是否可简化为确认与重做。
4.1 将任务数和最长等待时间常驻显示,但仍可能被忽略。若用户仍误判任务已完成,就需验证何时应主动提醒。
5.2 将参数选择与提示词放在同一区域,代价是两者不能同时查看。若选参数时需要对照提示词,往返切换可能打断思路,需要在真实任务中验证。
计划卡:已确认的计划中,直接确认与编辑后确认各占多少。
生成状态:等待期间的离开与返回行为,结合访谈判断用户是否理解任务仍在生成。
参数选择:记录返回提示词的次数与停留时长,结合操作过程和用户反馈,评估切换是否影响连贯性。
界面增加后,同类控件出现不同实现;进入新对话,已确认的做法也要重新交代。
Canvo 的插件设置由 Agent 在不同对话中分别完成:已安装的用开关,可添加的用「连接」按钮。同一列出现两种控件,用户需先辨认操作方式。
我将它们统一为设计系统中的同一个开关,并复用于设置页和技能页。开启表示正在使用;等待浏览器授权时显示加载状态,未成功则恢复关闭。
之前
已安装
可添加
同一列里,开关和按钮混用
之后
已安装
可添加
统一为开关,授权期间转圈等待
为让后续开发沿用规则,我将检查写进锁定测试:识别常见手写开关并提示替换组件,校验颜色和字阶定义,以及指定样式与组件中的表外字号。
const HAND_ROLLED = /role(=|:\s*|=\{\s*)["']switch["']/
test('no hand-rolled switches: use the design system Switch', () => {识别到常见手写开关 → 该项检查报错
复用 Switch → 符合该项复用规则
我曾扫过 Agent 的长计划就放行,直到完成后测试才发现理解偏差,浪费了一轮时间与 token。确认方向,并不代表理解一致。
我会先让 Agent 用最小示意呈现理解,例如骨架、草图或一条真实路径,尽早纠偏、减少返工。对齐深度随投入调整,改一处文案可直接做。
我将这些经验整理成 Skill:先判断任务缺什么、需要怎样协作,再调用对应方法,无需每次重走整套流程。
在 GitHub 查看 vibe-project-guide
Skill 结构
可复用方法
阶段指南
这个任务需要什么?
按需选择指南
协作方法
我们该怎么配合?
知识规则
下一个任务需要知道什么?
复用研究参考可视化
按需读取
任务流程
需要时由人决策
长提示词在固定尺寸的输入区中难以完整查看和修改。我在左右上角加入双向拖拽手柄,让用户按内容调整可视区域。
画布默认加载预览图,放大看细节时再加载原图。我接受略大的预览文件,以保留常用缩放下的清晰度,减少过早加载原图的开销。
