在 AI 代理日益普及的今天,设计工具与代码生成工具之间的鸿沟依然存在。设计师使用 Figma 创建界面,工程师将设计转化为代码,而 AI 代理则在这两者之间寻找着高效的交互方式。传统的解决方案要么是只读的(如 Figma 官方的 MCP 服务器),要么需要复杂的 JSON 协议,导致 token 消耗巨大。figma-use 的出现,为这一问题提供了全新的工程解决方案。
架构设计:CLI + WebSocket 代理 + 插件的三层架构
figma-use 的核心架构采用了三层设计,每一层都有明确的职责边界:
1. CLI 层:AI 代理的友好接口
使用 Citty 框架构建的命令行工具,提供了 100+ 命令的完整覆盖。CLI 的设计哲学是「token 效率优先」—— 每个命令都经过精心设计,以最少的 token 表达最丰富的操作语义。
# 47 tokens 完成一个框架创建
figma-use create frame --width 400 --height 300 --fill "#FFF" --radius 12 --layout VERTICAL --gap 16
# 对比 MCP JSON 协议:约 200 tokens
这种设计使得 AI 代理在进行数十个 Figma 操作时,token 消耗能够减少 75% 以上。对于 Claude Code、Cursor 等 AI 编码助手,figma-use 还提供了专门的 SKILL.md 文件,作为即插即用的技能参考。
2. WebSocket 代理层:实时双向通信
基于 Elysia 框架构建的 WebSocket 代理服务器,负责在 CLI 和 Figma 插件之间建立实时通信通道。这一层的设计考虑了:
- 连接管理:自动重连机制,确保网络波动时的操作连续性
- 消息队列:操作序列化与并发控制,避免 Figma 插件过载
- 状态同步:实时反馈操作结果,支持 AI 代理的决策调整
代理层还暴露了 MCP 兼容的端点(http://localhost:38451/mcp),为只支持 MCP 协议的客户端提供了 80+ 自动生成的工具接口。
3. 插件层:Figma API 的深度集成
Figma 插件作为最终的执行层,直接操作 Figma 的内部数据结构。插件实现了:
- API 封装:将 Figma 复杂的 API 简化为统一的命令接口
- 批量操作优化:对相似操作进行合并,减少 API 调用次数
- 错误处理:提供详细的错误信息和恢复建议
JSX 渲染引擎:从 React 组件到 Figma 节点的魔法转换
figma-use 最创新的特性之一是 JSX 渲染引擎。考虑到所有主流 LLM 都经过数百万 React 组件的训练,它们能够自然地编写 JSX 代码,而无需额外的示例学习。
JSX 到 Figma 的映射规则
<Frame style={{ flexDirection: 'column', gap: 16, padding: 24 }}>
<Text style={{ fontSize: 24, fontWeight: 'bold' }}>Title</Text>
<Text style={{ fontSize: 14, color: '#666' }}>Description</Text>
</Frame>
上述 JSX 会被转换为:
- 创建一个 Frame 节点,设置自动布局为垂直方向,间距 16px,内边距 24px
- 创建两个 Text 节点,分别应用对应的样式属性
- 建立父子关系,形成完整的组件结构
样式属性的完整映射
引擎支持完整的 CSS-in-JS 样式属性到 Figma 属性的映射:
- 布局属性:
flexDirection、justifyContent、alignItems、gap、padding - 尺寸位置:
width、height、x、y - 外观属性:
backgroundColor、borderColor、borderWidth、borderRadius、opacity - 文本属性:
fontSize、fontFamily、fontWeight、color、textAlign
组件系统与变量绑定
对于复杂的设计系统,figma-use 提供了高级功能:
// 定义可复用组件
const Card = defineComponent('Card',
<Frame style={{ padding: 24, backgroundColor: '#FFF', borderRadius: 12 }}>
<Text style={{ fontSize: 18, color: '#000' }}>Card</Text>
</Frame>
)
// 绑定到 Figma 变量
const colors = defineVars({
bg: { name: 'Colors/Gray/50', value: '#F8FAFC' },
text: { name: 'Colors/Gray/900', value: '#0F172A' },
})
Multiplayer 协议:100 倍性能提升的黑科技
figma-use 的实验性功能是通过 Chrome DevTools 连接到 Figma 的内部 multiplayer 协议,这带来了惊人的性能提升。
技术实现原理
- 调试端口连接:启动 Figma 时开启
--remote-debugging-port=9222 - 协议逆向:分析 Figma 的 multiplayer 通信协议
- 直接操作:绕过插件 API,直接操作 Figma 内部数据结构
性能对比数据
| 操作类型 | 插件 API 耗时 | Multiplayer 协议耗时 | 性能提升 |
|---|---|---|---|
| 创建 100 个矩形 | 1200ms | 12ms | 100x |
| 批量修改样式 | 800ms | 8ms | 100x |
| 导出复杂组件 | 2000ms | 20ms | 100x |
风险与限制
虽然性能提升显著,但这种方法存在风险:
- 协议不稳定性:Figma 可能随时更改内部协议
- 兼容性问题:不同版本的 Figma 可能需要不同的连接方式
- 功能限制:某些高级功能可能无法通过 multiplayer 协议访问
工程落地参数与最佳实践
1. 安装与配置参数
# 安装 CLI
bun install -g @dannote/figma-use
# 安装插件(需要先退出 Figma)
figma-use plugin install
# 启动代理服务器(默认端口 38451)
figma-use proxy
# 可选:启用高性能模式
figma --remote-debugging-port=9222
figma-use proxy --experimental-multiplayer
2. Token 优化策略
对于 AI 代理工作流,建议采用以下策略:
- 命令优先于 JSX:简单操作使用 CLI 命令(token 更少)
- JSX 用于复杂布局:复杂组件使用 JSX 渲染(表达力更强)
- 批量操作合并:将多个操作合并为一个 JSX 片段
- 缓存常用组件:预定义设计系统组件,减少重复描述
3. 错误处理与监控
# 启用详细日志
figma-use --verbose create frame --width 400 --height 300
# 检查连接状态
figma-use health
# 获取性能指标
figma-use stats --interval 5000
建议监控的关键指标:
- 操作成功率:目标 > 99.5%
- 平均响应时间:目标 < 100ms(插件 API)或 < 10ms(multiplayer)
- 连接稳定性:WebSocket 连接断开频率
- 内存使用:代理服务器内存占用
4. 与现有工作流集成
figma-use 可以无缝集成到现有的设计 - 开发工作流中:
# CI/CD 流水线示例
steps:
- name: 生成设计系统文档
run: |
figma-use export node "Design System" --output design-system.json
python generate-docs.py design-system.json
- name: 验证设计一致性
run: |
figma-use find --type COMPONENT --name "Button*" > buttons.txt
python validate-components.py buttons.txt
- name: 导出开发资源
run: |
figma-use export selection --output components/
convert-to-react components/
实际应用场景与案例
场景一:设计系统自动化生成
一家中型 SaaS 公司使用 figma-use 自动化其设计系统的创建和维护:
# 从代码生成设计系统组件
cat components/Button.tsx | figma-use render --stdin --props '{"variant":"primary"}'
# 批量更新颜色变量
figma-use variable update "Primary/500" --value "#3B82F6"
# 导出设计令牌
figma-use style list --json > design-tokens.json
结果:设计系统更新周期从 2 周缩短到 2 小时,设计师与工程师的协作效率提升 300%。
场景二:A/B 测试界面快速生成
电商平台使用 AI 代理通过 figma-use 快速生成 A/B 测试界面:
# 生成变体 A
echo '<ProductCard variant="A" />' | figma-use render --stdin
# 生成变体 B
echo '<ProductCard variant="B" />' | figma-use render --stdin
# 导出用于用户测试
figma-use export screenshot --output variant-a.png
figma-use export screenshot --output variant-b.png
结果:A/B 测试界面生成时间从 1 天缩短到 5 分钟,测试迭代速度提升 96%。
场景三:设计稿到代码的自动化转换
开发团队使用 figma-use 将设计稿自动转换为 React 组件:
# 提取设计稿结构
figma-use node tree --json > design-structure.json
# 生成组件代码
python design-to-react.py design-structure.json > components/
# 验证生成结果
figma-use render components/Button.figma.tsx --validate
结果:手动编码时间减少 70%,代码与设计的一致性从 80% 提升到 99%。
未来发展方向与挑战
技术演进方向
- 协议标准化:推动 Figma 开放正式的自动化 API
- 性能优化:进一步减少操作延迟,支持更大规模的设计文件
- 智能辅助:集成 AI 设计建议,提供实时优化反馈
工程挑战
- 稳定性保障:在 Figma 频繁更新的环境下保持兼容性
- 安全性考虑:防止恶意操作对设计文件的破坏
- 规模化支持:支持企业级大规模并发操作
生态建设
figma-use 正在构建完整的生态系统:
- 插件市场:第三方扩展和工具集成
- 模板库:预构建的设计模式和组件
- 培训资源:AI 代理设计最佳实践指南
结语
figma-use 代表了 AI 代理与设计工具融合的新范式。通过 CLI 的简洁性、JSX 的表达力和 multiplayer 协议的性能,它打破了传统设计自动化的限制。对于工程团队而言,这不仅是一个工具,更是一种新的工作方式 —— 让 AI 成为设计流程中的主动参与者,而非被动观察者。
随着 AI 能力的不断提升,我们有理由相信,类似 figma-use 的工具将在更多领域出现,重新定义人机协作的边界。关键在于找到正确的抽象层级 —— 既不过于复杂让 AI 难以理解,也不过于简单失去表达能力。figma-use 在这一点上做出了有益的探索,为未来的工具设计提供了宝贵的参考。
资料来源
- GitHub 仓库:https://github.com/dannote/figma-use
- Hacker News 讨论:https://news.ycombinator.com/item?id=46665169
- 官方演示视频:https://youtu.be/9eSYVZRle7o
本文基于 2026 年 1 月 19 日的技术状态编写,相关工具和 API 可能随时间变化。建议在实际使用前查阅最新文档。