KinoViz
  • 功能亮点
  • 价格
  • 作品展示
  • 模板
  • 博客
  • 文档
登录打开工作台
KinoViz

浏览器端矢量与 3D 动画工作室。

产品

功能亮点价格作品展示更新日志

资源

文档博客模板术语表工具对比替代方案

工具

iPhone Duo 样机Music Fit 配乐助手Clean Up 水印移除背景移除胶片模拟全部工具

关于

关于我们联系我们
© 2024 KinoViz,保留所有权利
隐私政策服务条款退款政策
博客
Design Harness 是什么?我在 KinoViz 中构建设计类 AI Agent 的实践

Design Harness 是什么?我在 KinoViz 中构建设计类 AI Agent 的实践

KinoViz Team2026/07/18阅读约 30 分钟
Design Harness 是什么?我在 KinoViz 中构建设计类 AI Agent 的实践

目录

Design Harness 是什么?我在 KinoViz 中构建设计类 AI Agent 的实践先看目前做到的效果参考图模式生成动画文生动画:自由创作文生动画:UI 界面AI 做动画,只是入口业界讲的 Harness,落到设计里是什么第一层:先给效果,但不要被效果骗了第二层:Brief 是模型和人的合同第三层:审美 Stance,让“美”可操作第四层:工具暴露完整,模型才像真的会用编辑器第五层:Editable Protocol,才是“恍然大悟”的地方第六层:动效 Harness,比静态设计更难验证循环:不要把所有评估都交给模型还有哪些业界概念可以继续补进工程我现在对 Design Harness 的结论仍然不完美

Design Harness 是什么?我在 KinoViz 中构建设计类 AI Agent 的实践

为了实践最近很火的 Harness,我打造了 KinoViz。这个过程确实很艰辛😅,但现在终于能产出一些不错的结果。以下是我在产品实践中积累的一些经验,希望能和大家、同行共勉。

KinoViz 首页、AI 对话面板与动画编辑器组成的产品界面概览

KinoViz 首页展示用自然语言生成可编辑动画的核心能力
KinoViz 动画编辑器中的画布、图层、属性面板与关键帧时间轴

先看目前做到的效果

参考图模式生成动画

以我当前的实践为例,这类任务需要使用 GPT-5.5 以上的高级模型,或者 Claude Opus 4.7 以上的模型。

KinoViz AI Agent 根据参考图生成几何图形动画的过程

视频演示:请参考上方动图。

KinoViz AI Agent 根据参考图生成蓝色场景动画的过程

视频演示:请参考上方动图。

文生动画:自由创作

KinoViz AI Agent 通过文字生成自由运动动画效果
KinoViz 编辑器中由文字生成并继续调整的自由动画

文生动画:UI 界面

这类动画比较固定,做了规范的限制,避免模型随意发散

KinoViz AI Agent 生成深色界面风格动画

KinoViz AI Agent 生成浅色界面风格动画

AI 做动画,只是入口

如果先看效果,读者的第一反应大概率是:AI 又能做动画了。

但我真正想讲的不是“模型能生成一段好看的动画”。

那只是入口。

真正有价值的部分在后面:这段效果生成之后,它不是一张死图,也不是一个只能看不能改的 demo。它应该仍然保留图层、角色、颜色语义、关键帧、素材来源、项目状态和回滚路径。用户可以改字、换风格、调节奏、换素材、继续让 Agent 接着做。

这才是我最近一直在研究的东西:Design Harness。

我过去也会把这个词写成 Hardness。误写不完全离谱,因为这件事确实很 hard。难点不在于让模型“出一张图”,而在于让模型进入真实设计工作流,稳定地产出可编辑、可验证、可继续生产的结果。

一句话说:

Design Harness 不是让 AI 更会“画”,而是让 AI 更会“交付设计工作”。

业界讲的 Harness,落到设计里是什么

DeepSeek 的 Harness JD 里有一句很直接的话:Model + Harness = Agent。

Anthropic 在 agent eval 的文章里也有类似表述:agent harness / scaffold 是让模型像 Agent 一样行动的系统,它负责处理输入、编排工具调用、返回结果。OpenAI Agents SDK 文档则把 Agent 定义为会计划、调用工具、跨 specialist 协作、保持状态以完成多步任务的应用,并明确说,当应用拥有 orchestration、tool execution、approvals、state 时,就进入了 Agents SDK 的范畴。Google Cloud 对 Agent 的拆法也很清楚:reasoning、planning、memory、tools,再加一定自主性。

这些说法放到设计场景里,可以翻译成一个更具体的问题:

模型如何从一句模糊需求,走到一个可以继续编辑和发布的设计文件?

我的答案是下面这条链路:

效果不是终点。效果只是让读者和用户愿意继续看的第一屏。

真正的系统应该从效果往回拆:用户意图是什么,brief 如何形成,审美标准来自哪里,工具怎么暴露,生成结果如何保留结构,动画如何被验证,最后如何导出和回滚。

Design Harness 六层系统架构:用户意图、Brief、审美、工具、可编辑协议与验证循环

我把它拆成六层:

  1. 用户意图:一句话、参考图、当前画布、历史上下文。
  2. Design Brief:把模糊需求变成模型和用户都能检查的合同。
  3. 审美 Stance:让模型知道“什么算好”,而不是只说“高级一点”。
  4. Tool / Asset Registry:让模型看见真实编辑器能力和已有资产。
  5. Editable Protocol:把生成物变成结构化、可编辑的场景。
  6. Verification Loop:用规则、截图、回归和人工 polish,让结果能稳定进步。

这六层合在一起,才是 Design Harness。

第一层:先给效果,但不要被效果骗了

设计类 AI 产品特别容易被首图效果带偏。

你做出一个漂亮 demo,用户会兴奋,朋友圈会转发,投资人也容易看懂。但创作工具一旦进入真实工作流,第一张图很快就不够用了。

用户马上会问:

这行字能改吗?

这个按钮能换颜色吗?

这个光效能弱一点吗?

这个元素能晚 0.2 秒进场吗?

这个动效能导出 MP4 吗?

这个版本能回滚吗?

所以我现在判断一个 AI 设计工具,不再只看第一屏生成效果,而是看第十次修改时,系统还剩多少结构。

如果第十次修改时,用户仍然能选中 headline、改 CTA、换 palette、调 keyframe、复用资产、重新导出,这才说明 Harness 有价值。

这也是 KinoViz 里我最看重的方向:效果先让人愿意看,结构让人愿意继续用。

第二层:Brief 是模型和人的合同

KinoViz 中包含审美立场、配色、字体、动效和布局规则的 Design Brief 面板

用户 prompt 往往太短。

“做一个 hello 动画。”

“做一个 fintech hero。”

“帮我生成一个更高级的页面。”

这些话对人类设计师来说也不够,更不用说模型。模型只能猜。猜一次可以,连续工作就会漂。

所以我把 raw prompt 变成一个中间层:Design Brief。

它不是写给用户看的漂亮说明,而是写给模型、系统和用户共同检查的合同。

一个简化版 brief 大概长这样:

type DesignBrief = {
  goal: string;
  audience?: string;
  industry?: string;
  stance: "minimalist-editorial" | "glassmorphic-tech" | "kinetic-poster" | string;
  palette: {
    name: string;
    background: string;
    ink: string;
    muted: string;
    accent: string;
    surface: string;
  };
  typography: {
    display: string;
    body: string;
    hierarchy: "editorial" | "dashboard" | "poster" | "product-ui";
  };
  motion: {
    personality: "calm" | "springy" | "kinetic" | "cinematic";
    intensity: 1 | 2 | 3 | 4 | 5;
    maxDurationMs: number;
  };
  layout: {
    density: 1 | 2 | 3 | 4 | 5;
    variance: 1 | 2 | 3 | 4 | 5;
  };
  editableFields: string[];
  constraints: string[];
};

这段不是项目源码,只是我对 brief 的抽象。

KinoViz 编辑器通过 Plan Preview 展示执行计划并等待用户确认

关键点不在字段本身,而在它解决了三个问题。

第一,模型不用每轮重新猜风格。

项目级 brief 可以持久化。今天生成 hero,明天改 pricing,后天补 stats,Agent 每轮都读同一份设计意图。页面不会一屏一个审美。

第二,用户可以在生成前介入。

如果模型判断用户需求太模糊,它应该先给出 Plan Preview,而不是直接改画布。Plan Preview 里可以放 stance、palette、时长、元素列表、镜头、关键问题。用户确认后再执行 mutating tools。

第三,后续验证有了依据。

如果 brief 写了 motion.intensity = 2,结果却生成一堆剧烈弹跳和闪烁,那不是“审美偏好不同”,而是违反合同。

很多人把 Context Engineering 理解成“塞更多上下文”。我现在更愿意理解成“把上下文分层”:哪些是当前对话,哪些是项目记忆,哪些是可 lazy-load 的知识,哪些必须让用户确认。

Brief 就是设计类 Agent 最重要的上下文中间层。

第三层:审美 Stance,让“美”可操作

KinoViz AI Agent 按 Liquid Glass 审美 Stance 生成玻璃质感动画
设计 Harness 最大的难点之一,是如何让模型理解“美”。

这句话听起来玄,但工程上可以拆解。

模型默认很容易陷入模式坍塌(mode collapse)。它会回到训练分布中最安全的模板:紫蓝渐变、大圆角卡片、emoji 图标、空泛的 feature 文案、三段式 hero、看起来像 SaaS 但没有具体产品气质。

所以我没再对模型说“更高级”“更有设计感”,而是把审美拆分为 stance。

一个 stance 不是一个风格名称,而是一套设计人格:

  • 适合什么行业和场景。
  • 应该使用什么字体关系。
  • 主色、辅助色、强调色如何分工。
  • 页面密度应该高还是低。
  • 布局应该稳定还是有张力。
  • 动效应该克制、弹性、机械,还是电影感。
  • 哪些东西绝对不要出现。

抽象后大致如下:

type AestheticStance = {
  id: string;
  useWhen: string[];
  avoidWhen: string[];
  palette: {
    background: string;
    ink: string;
    muted: string;
    accent: string;
    surface: string;
  };
  typography: {
    display: string;
    body: string;
    rule: string;
  };
  motion: {
    rhythm: string;
    easing: string[];
    antiPattern: string[];
  };
  composition: {
    density: number;
    variance: number;
    preferredLayouts: string[];
  };
};

比如同样是“产品发布 hero”,不同 stance 会产生截然不同的结果:

Minimalist Editorial 偏向克制、留白、清晰的文字层级。

Glassmorphic Tech 偏向深色、折射、轻微的弹簧感和空间感。

Kinetic Poster 会让大字占据 70% 画布,强调切分、滚动、错位和节奏。

Organic Nature 会把颜色、形状和动效都降下来,营造呼吸感和手工感。

这一步的价值,在于把“品味”从一句评价,变成模型可以选择、继承、检查并局部改写的系统。

当然,规则不能替代品味。

但没有规则,模型很难稳定继承你的品味。

我后来还把一些明显的 AI 味变成了反模式:默认 indigo、廉价紫蓝渐变、emoji 当图标、虚构指标、占位符文案、没有语义 ID 的图层。能 lint 的就 lint,不能 lint 的就写成 reviewer checklist。

这不是为了把设计变成死板规范,而是给模型建立最低审美门槛。

先不犯低级错误,才谈得上做出 20% 的独特选择。

第四层:工具暴露完整,模型才像真的会用编辑器

很多 Agent 效果差,不是模型不聪明,而是工具接口太差。

KinoViz AI Agent 调用编辑器工具生成黑白动态海报

编辑器里明明有 pen、path、mask、boolean、group、keyframe、camera、background、TextFx、GLSL、icon、3D、用户资源,但 Agent 只看到 add rectangle、add text、modify element 这类粗工具,它当然做不出真正的设计动作。

我踩过很典型的坑:系统 prompt 宣称某个工具可用,tool registry 里也注册了,但前端 client tools 白名单没有同步,bridge handler 也没接上。模型调用了,界面却没执行。

这类问题在 Harness 里非常致命。

所以工具注册必须成为 single source of truth。

一个工具不只是函数名,而应有完整元数据:

type AgentToolMeta = {
  name: string;
  category: "canvas" | "asset" | "analysis" | "generation";
  modes: Array<"agent" | "animation" | "image">;
  mutating: boolean;
  needsApproval?: boolean;
  costLevel: "free" | "credit" | "expensive";
  useWhen: string;
  doNotUseWhen?: string;
  returns: "canvas-diff" | "asset-list" | "plan" | "diagnosis";
};

这里最关键的是 mutating。

聊天、检索、分析、查 skill 可以开放。真正改画布、生成资产、消耗额度、写入项目状态的操作,需要权限、plan gate、用户确认和回滚。

这和 OpenAI 文档里的 approvals、state 是同一个方向,也与 Anthropic 讲的 checkpoint、人类反馈相通。

设计工具里还有一类特殊工具:资产发现。

模型不应该每次都从零生成。

它应该先问:有没有现成 TextFx?有没有 GLSL shader?有没有 icon?用户项目里有没有刚生成过的图?有没有可复用的 3D 模型、材质、HDRI?

所以我把资产也看作工具的一部分:

type AssetSearchQuery = {
  type: "icon" | "textfx" | "shader" | "user-image" | "model" | "material" | "all";
  query: string;
  projectId?: string;
  limit?: number;
};

这个设计背后的判断是:复用不是偷懒,复用是设计工作流。

一个真正可用的 Design Agent,不应只会生成,也应会找、会选、会组合、会继承项目资产。

第五层:Editable Protocol,才是“恍然大悟”的地方

这可能是我对 Design Harness 最核心的理解。

KinoViz 中保留标题、按钮和图层语义的可编辑 AI 动画场景

如果模型最后只输出一张图片,那么它再好看也只是结果。

如果模型输出的是一棵可编辑的设计树,那么它才进入了生产。

所以生成路径不能只追求视觉相似,还要保留语义结构。

我在 KinoViz 里研究过 HTML → SVG → Fabric.js scene 的链路。这里不展开具体实现,只讲思路:让模型先用受限 HTML 表达结构,再通过语义标记把 DOM 映射到 SVG,再把 SVG / role / tone / animation 还原成 Fabric.js 场景。

一个概念化片段大致如下:

<div
  data-kv-id="hero-root"
  data-kv-group="hero"
  data-kv-layout="stack"
  data-kv-tone="background"
  style="display:flex; flex-direction:column; gap:24px;"
>
  <span
    data-kv-id="hero-eyebrow"
    data-kv-role="eyebrow"
    data-kv-tone="accent"
    data-kv-anim="fadeInDown"
  >
    PRIVATE BETA
  </span>

  <span
    data-kv-id="hero-headline"
    data-kv-role="headline"
    data-kv-tone="ink"
    data-kv-anim="fadeInUp"
  >
    Ship faster with signal
  </span>

  <span
    data-kv-id="hero-cta"
    data-kv-role="cta"
    data-kv-tone="accent"
    data-kv-emphasis="true"
    data-kv-anim="scaleIn"
  >
    Start free trial
  </span>
</div>

这里的重点不是 HTML。

重点是 data-kv-* 这一层语义协议。

data-kv-id 让后续编辑和测试有稳定锚点。

data-kv-role 告诉系统这是 headline、subtitle、CTA、price、metric 还是 feature item。

data-kv-group 和 data-kv-layout 告诉系统哪些元素属于同一个语义组,应该如何形成图层和 stagger。

data-kv-tone 是颜色语义,不是颜色值。模型可以说这是 accent,但真正的 accent 来自 brief palette。这样用户切换 stance 时,结构不动,视觉可以整体重算。

data-kv-anim 只引用 preset,不让模型随便写一堆不可控动画。

这就是我所谓的“可编辑协议”。

它让 AI 输出不再是扁平图片,而是一个可恢复为设计工具对象的中间表示。

这也是读者应该恍然大悟的地方:

真正的 Design Harness,不是让模型直接画出最终画面,而是让模型产出一个可被设计工具理解的结构。

第六层:动效 Harness,比静态设计更难

静态设计已经很难,动效更难。

KinoViz 时间轴中的动画关键帧、缓动曲线与节奏编排
因为动效多了时间。

时间一进来,问题就多了:关键帧、节奏、延迟、镜头、stagger、缓动、循环、暂停、reduced motion、闪烁阈值、导出一致性。

我现在对动效的判断比较克制:动效不是装饰,它应该服务空间、时间和状态变化。

比如一个元素入场,用户应该更清楚信息层级。

一个卡片展开,用户应该知道空间关系发生了什么。

一个状态完成,用户应该得到反馈,而不是被表演打断。

因此动效 Harness 里至少要有四个东西。

第一,Plan Preview。

完整创作类任务,不应该上来就改画布。模型应该先给方案:背景、镜头、元素、入场顺序、总时长、动效性格、用户需要确认的问题。用户确认后再执行。

第二,Motion Budget。

每类动效都要有时长和强度预算。按钮反馈、状态确认、入场、跨屏转场,不应该混用同一套节奏。频繁动作要短,展示型动作可以长一点,循环动效要可停。

第三,Keyframe Sanity Check。

生成后要检查画布是不是空的,关键帧是不是缺失,时长是不是异常,某个元素是不是有几十个无意义 keyframe,是否有过度闪烁。

第四,Export Parity。

编辑器里看起来对,不代表导出一定对。Fabric 渲染、背景采样、滤镜、玻璃效果、嵌套 group、mask、DPR、视频导出,都可能出错。动效 Harness 必须关心编辑器预览和最终导出的一致性。

一个简化的检查器可以长这样:

const designChecks = [
  "canvas_is_not_empty",
  "all_visible_elements_have_semantic_id",
  "headline_uses_stance_display_font",
  "no_default_ai_indigo",
  "no_placeholder_copy",
  "animation_duration_within_budget",
  "no_flash_more_than_3_times_per_second",
  "keyframes_exist_for_animated_elements",
  "editor_preview_matches_export_snapshot"
];

这里也不是项目源码,而是说明一种思路:

把“看起来不对”拆成尽可能多的可检查项。

有些审美无法自动判断,但很多低级错误可以。

只要能挡住 60% 的低级错误,人工 polish 就能集中在真正的设计判断上。

验证循环:不要把所有评估都交给模型

Agent 产品很容易迷信“让 AI 自我反思”。

KinoViz AI Agent 对动画层级、文字和视觉问题给出检查结果

自我反思有用,但不能包治百病。

尤其是设计场景,模型有时会很自信地解释一个很差的结果。你让它评估自己,它会给你一段合理的理由,但画面仍然不对。

所以我更倾向于混合验证:

规则检查解决明确错误。

截图和像素检查解决渲染差异。

E2E 测试解决工具链是否断裂。

人类 polish 解决品味判断。

模型 review 只在它擅长的地方介入,比如解释问题、提出修改方向、生成替代方案。

这和 Anthropic 讲的 long-running agents 很接近:长任务要靠 feature list、incremental progress、clean state、progress file、端到端测试,让 Agent 不断重新获得方向感。设计类任务同样需要这些,只是测试对象从代码变成画布、图层、截图和导出物。

我的体会是:

Harness 不是让 Agent 无限自由。

Harness 是给 Agent 一条可以自由工作的轨道。

还有哪些业界概念可以继续补进工程

我现在做的 Design Harness,还不是终局。

如果继续往深处走,业界已有的几个方向都值得接进来。

第一,Eval Harness。

Anthropic 讲 agent eval 时强调,评估的是模型和 harness 共同工作的结果。设计类 Agent 也应该有自己的 eval:生成质量、可编辑性、工具命中率、回滚成功率、导出一致性、用户二次修改次数、人工 polish 成本。

第二,Sandbox / Execution Separation。

OpenAI 的 sandbox agents 文档里强调 harness 可以跑在你的基础设施里,而 sandbox 负责有状态执行。设计工具里也有类似问题:Agent 决策、工具执行、文件导出、用户资产访问,最好有清晰边界,避免一个工具调用造成过大影响面。

第三,Memory Governance。

项目 brief 是一种记忆,但未来还可以有品牌记忆、团队设计系统记忆、用户偏好记忆。难点不是记得越多越好,而是记什么、何时记、如何过期、如何让用户可编辑。

第四,Subagent / Specialist。

复杂设计任务可以拆成多个 specialist:brief analyst、layout designer、motion designer、asset finder、reviewer、export verifier。但我不倾向于为了多 Agent 而多 Agent。只有当任务复杂到单 Agent 难以稳定完成,或者确实需要并行探索和交叉验证时,它才值得。

第五,Trace / Observability。

设计 Agent 最终也需要可观测性。一次生成为什么选了这个 stance,为什么调用这个工具,哪个检查失败,哪一步消耗最多时间,用户在哪一步取消,这些都应该进入 trace。

这些都可以作为后续工程补充。

但我会先坚持一个顺序:先把单 Agent 的 Design Harness 打稳,再谈多 Agent 和更重的调度系统。

我现在对 Design Harness 的结论

Design Harness 的核心不是“帮模型多写一点 prompt”。

它是一套让模型进入设计生产的外部系统。

它要回答六个问题:

模型如何理解目标?

模型如何继承审美?

模型如何知道自己有哪些工具?

模型如何把生成结果保留为可编辑结构?

模型如何处理时间和动效?

模型如何验证、回滚、导出,并继续迭代?

如果这些问题没有答案,AI 设计工具就容易停在“生成器”阶段。

如果这些问题都有工程答案,AI 才可能从“会生成”进入“能交付”。

这也是我做 KinoViz 这段时间最大的收获:

我不是只在做一个 AI 动画工具。

我是在研究设计类 Agent 的 Harness。

效果是表层,结构是底层。模型是发动机,Harness 是整辆车。

未来模型会继续变强,但模型之外的工程会越来越重要。

谁能把模型能力接进真实工作流,谁就能把 AI 从“看起来很神”推进到“真的能干活”。

这就是 Design Harness 最值得投入的地方。

仍然不完美

目前 AI Agent 尚处于 Beta 阶段,还在完善中,且背后需要使用 GPT-5.6 以上模型,成本很难降得下来,所以目前的积分消耗较高。

如果你也在探索可编辑的 AI 动画工作流,可以从 KinoViz Studio 开始体验,并在真实项目里继续验证这套 Design Harness 思路。

继续阅读

KinoViz 照片墙:轻松创建动态照片展示

KinoViz 照片墙:轻松创建动态照片展示

用 KinoViz 的全新照片墙元素,将静态照片集转化为动态、引人入胜的动画。从 128 个预设中选择,即可轻松创建精美的视觉幻灯片、作品集和社交媒体内容,无需手动打关键帧。

2026/08/03
KinoViz 棱镜镜头效果教程:三步上手

KinoViz 棱镜镜头效果教程:三步上手

学习如何在 KinoViz 中应用微妙而风格化的棱镜镜头(色散)效果。本教程涵盖效果原理、适用场景以及简单的三步实现方法。

2026/09/22
3D翻转卡片动画怎么做?KinoViz 3D Flip效果教程

3D翻转卡片动画怎么做?KinoViz 3D Flip效果教程

学习如何在 KinoViz 中使用 3D Rotate 控件和 3D Flip 预设,制作卡片翻面、Logo 旋转、数字翻牌和社媒动图效果。

2026/07/24