2025.05 / AI 辅助产品构建

Font Replacer — 用 AI 开发 Figma 插件

我用 Cursor 做了一个 Figma 插件,用来一键替换页面中所有文字图层的字体。它不是工作需求,而是一次很小的“造工具”实践:借助 AI,把一个日常设计痛点变成可用工具。

Font Replacer 插件完整使用流程。
96%

开发提效比例

从 3-4 周缩短到 4-5 小时

1

独立交付的 Figma 插件

设计师独立完成开发与上线

4-5h

从零到上线

借助 Cursor 完成全部开发

00概览

一键替换字体

在 Figma 里手动替换字体很繁琐,尤其是多个图层嵌套的情况下。我一直想找个更高效的方式,于是借助 Cursor,用 4-5 个小时独立开发了 Font Replacer——一个一键替换页面中所有文字图层字体的 Figma 插件。

在 Cursor 这类工具出现前,开发这样一个插件可能要 3-4 周。这个项目不是工作需求,而是我作为设计师的一次“造工具”实践:验证 AI 能否让非工程背景的人独立交付一个可用产品。

做完后,我把插件发布到了 Figma Community

Font Replacer 在 Figma Community 的发布页面截图
Font Replacer 在 Figma Community 的发布页面。
01开发

用 AI 小步造工具

现在的 AI 很擅长生成静态页面结构,但面对复杂交互逻辑时,还是需要人为引导。最有效的方式是把完整功能拆解成小任务,一步一步交给它做。比如在做字体选择器时,我把功能拆成了四步:

01列出所有字体

让 Cursor 找出文档里所有能用的字体。

02放入下拉框

把字体列表放到一个下拉组件里。

03加上搜索

给下拉框增加搜索筛选字体的功能。

04美化 UI

调整视觉细节,让插件界面更精致。

把复杂功能拆成不同步骤后,Cursor 能更好地完成每一步。出错时也能清楚知道是哪一步没做好,有针对性地调试,而不是一口气把需求全丢给 AI,写出一堆 bug 再慢慢找问题。

但 vibe coding 有多爽,vibe debugging 就有多痛苦。AI 修补 bug 时经常越改越错。我的应对方式是两个关键词:版本回退和多模型切换。

版本回退方面,Cursor 的 Restore Checkpoint 帮了我很多次。每次修改前系统会自动保存快照,我可以随时回到上一个稳定版本。同时,我会在每次完成重要功能后把代码同步到 GitHub Repo,保证有明确的版本基线可以比对和恢复。

多模型切换方面,遇到卡住的问题时,我会在 Cursor 设置里关掉 Auto 模式,手动切换成其他模型。这能解决大概 80% 的“卡住问题”。

Cursor 模型切换设置界面截图
在 Cursor 里关闭 Auto 模式,手动切换模型。

当 Cursor 内部逻辑绕不出来时,我会直接把项目文件拖到 Claude、ChatGPT 或 Gemini 里。不同模型的思维方式不一样,经常能从另一个角度给出解法。

把项目文件拖到其他模型中排查问题的对话截图
把项目文件拖到其他模型里,让它从另一个角度分析问题。

有时候并不是 AI 不够聪明,而是需求本身就不合理或技术上难以实现。如果多轮尝试都没有结果,我会换个问法:“我提出的这个需求是否技术上可行?”“有没有更推荐的实现方式?”这种提问方式更容易获得 AI 的高层级分析。很多时候,知道做不到,也是一种前进。

02突破

代码理解升级体验

使用代码开发后,我慢慢建立起了“工程思维”——开始关注传统意义上不属于“设计职责”的细节,但它们确实直接影响用户的体验。

01避免插件卡死

完成第一版后,我试着选中很多图层,结果 Figma 直接死机了。Cursor 给我解释了同步和异步的概念,建议把要搜索的图层分成小块,一次一次地进行异步处理,这样就能防止 Figma 的主进程卡死。

02优化字重匹配体验

在测试时发现,“Arial Semibold” 切换为 “Roboto Semi Bold” 后字重丢失了。原因是插件判断字重名称要求完全一致,而 “SemiBold” 和 “Semi Bold” 在字符上不一样。我改写了匹配逻辑,让它忽略大小写并去掉空格——现在用户无论输入 “semibold”、“Semi Bold”、“SEMIbold”,插件都能正确识别并保留原有字重。

这些问题,过去作为设计师我可能不会意识到。但现在我开始主动思考它们,并把它们当成“体验设计”的一部分去解决。

03反思

用代码拓展设计边界

这个项目让我重新理解了设计师和代码的关系。理解代码不是为了当工程师,而是为了成为一个对体验更负责的设计师。

  • AI 让设计师从“提需求”变成“做产品”。过去开发一个插件需要 3-4 周且依赖工程师配合。现在 4-5 小时就能独立交付,验证想法的成本极大降低。设计师不再只是定义需求,而是可以亲手把想法做成可用的工具。
  • 代码能力是设计能力的延伸。理解了异步处理、字符匹配这些概念后,我能主动发现并解决纯设计视角无法触及的体验问题,比如大量图层下的性能卡顿、字重名称不一致导致的替换失败。这些都是代码层面的细节,但直接决定了用户体验。

这次实践的价值在于:通过 AI 写代码、调试、回退、换模型,我开始意识到,设计师理解一点代码之后,能看到更多原本看不到的体验问题。