朋友结婚,想要一张能自己改字的"I Demoed"贴纸。现成设计很好看,但不够灵活——想换句话,就得从头调曲线文字。做过定制六边形贴纸的人都知道,让文字沿着弧线排得好看,对不熟悉设计的人来说有多折磨。

于是他做了 Badge Studio,一个跑在浏览器里的贴纸生成器。任何成就、里程碑、玩笑,或者某个具体到只有当事人懂的生活事件,都能拿它做一张贴纸。婚礼只是起点,马拉松、毕业、生日、项目上线、新工作、内部梗,都能用。

打开网易新闻 查看精彩图片

先说它怎么用

打开页面,在 Badge Copilot 里描述一个真实时刻,选一种语气,点"Make ideas"。挑一个结果,它的文案和整套视觉风格会直接套用到贴纸上,之后还能手动继续改。

模型在第一次运行时下载,之后由浏览器缓存。所以第一次生成会比后面几次慢。

整个项目刻意做得很轻:一个客户端 HTML 应用,里面装着界面、SVG 贴纸渲染器、排版逻辑、导出工具,以及本地推理的集成。没有后端,不需要 API key,也没有托管推理端点。

贴纸在导出前一直是矢量图形,所以实时预览清晰,导出的 SVG 也真的可以再编辑。

模型小到只有 1.35 亿参数

Badge Copilot 通过 Transformers.js 和 ONNX Runtime,在浏览器里跑开放权重的 SmolLM2-135M-Instruct 模型。它把一段对真实时刻的描述,转成简短的庆祝文案。

应用会校验输出是否符合贴纸 28 个字符的设计上限,再和本地精选的无障碍配色方案组合,给出三套完整概念,一键应用。

核心的本地模型配置大致是这样:

  • 从 CDN 动态导入 Transformers.js 的 pipeline
  • 加载 onnx-community/SmolLM2-135M-Instruct-ONNX-MHA
  • 量化类型设为 q4

非常小的本地模型偶尔会无视输出格式指令。为此他加了一层针对常见里程碑的本地兜底逻辑,让界面保持可靠——既不用把提示词发到服务器,也不会悄悄切换到闭源模型。生成模型仍然是点子引擎,外面那层确定性的逻辑,负责让它的输出适配一个受约束的设计工具。

闭源 API 更省事,但隐私和成本就成了别人的决定

在本地跑开放权重模型,意味着那段描述不需要发给任何 AI 服务商。这本该是件轻松好玩的事,不该为了跑起来先去搞一个 API key。

开放工具链也让这个项目便宜、可改。调一个闭源 API 当然更简单,但那样一来,隐私、成本、长期控制权,都变成了别人替你做的决定。Transformers.js 加一个公开可用的 ONNX 模型,让这些决定留在产品设计里。

非 AI 的细节同样花了不少功夫。文字会自动缩放,始终待在边框内;图形的位置依据弯曲字母实际绘制的像素来移动,而不是文字元素那个矩形框,所以短句和长句的间距看起来都均衡。

AI 在这些设计环节上表现很差,需要更多引导,但它也带来了不错的附加功能,比如用新的色轮选择器取代只能填十六进制色码的方式。

项目是用 Codex 迭代搭出来的,每一条要求的行为都在浏览器里实测过。最有意思的部分,是让它对真实的视觉反馈做出响应:去掉幻觉出来的品牌标识、修好图片上传、把边框颜色和圆形颜色分开、缩放曲线文字、用真正感知像素的间距替换基于方框的间距。

这个反馈循环正是人的输入重要的原因。最终结果比 AI 最初对点子的理解有用得多——按最初那版,功能上根本跑不通,因为它没能理解、也没能做功能测试。