当设计师交付工作时,Figma Dev Mode 是最直接的第一选择。它是内置的、官方的,说的是 Figma 自己的语言。那么为什么要选择其他工具呢?
答案不是 Dev Mode 不好。而是它解决的是不同的问题。理解那个问题是什么——以及不是什么——是本文的全部内容。如果你想直接得到答案,在这里试试 figmascope。
什么是 Figma Dev Mode
Dev Mode 是 Figma 的付费交付层,在 Professional 和 Organization 计划中可用。当你切换到它时(顶部工具栏中的 </> 按钮),你会得到一个面板,显示所选图层的 CSS 或 iOS/Android 代码片段、组件注释、变量值,以及设计师可以设置的"准备开发"状态标记。
它为设计师说"这完成了,去构建吧"的时刻而设计。开发者打开 Figma,点击浏览,复制代码片段,查看间距。没有导出步骤,没有文件,你只是在原地阅读设计。
Figma 还为 Dev Mode 提供官方 MCP 服务器(单独的——在 MCP 对比中介绍),但作为 UI 的 Dev Mode 主要是人类阅读体验。你指向、点击、检查、复制。
Dev Mode 生成的代码片段作为快速参考确实有用。你可以看到字体栈、精确的间距 Token(如果变量已设置)、圆角半径。对于只需要检查特定值的高级开发者来说,速度很快。
什么是 figmascope
figmascope 是一个浏览器端工具——无后端、无需安装、在标签页中运行——从任何 Figma 文件导出结构化上下文包。你粘贴 Figma URL 和个人访问令牌(保存在内存中,不会发送到服务器),它生成一个包含以下内容的 .zip:
CONTEXT.md— 人类+机器可读的设计规范tokens.json— 类型化设计 Token(有 Figma 变量时从变量获取,否则从频率推断)screens/*.json— 逐屏中间表示:保留空间关系的 stack、overlay、absolute 和 leaf 节点screens/*.png— 2× 参考截图components/inventory.json— 带实例 ID 的组件索引strings.json— 所有文本内容,带 i18n 键(stringRef.key)_meta.json— 导出元数据、文件信息、Token 来源
包是普通文件,无运行时、无 SDK。放入仓库,提交,差异比较,交给任何可以读取文件的 AI Agent。
与 Dev Mode 的关键区别:这不是 Figma 内部的阅读体验,而是完全离开 Figma 的导出。
Dev Mode 的优势
实时检查。如果你想立即点击特定图层并获取其精确计算值,Dev Mode 是即时的。没有导出步骤,没有 zip,没有上下文切换。答案就在面板中。
官方集成。Figma 构建、维护它,并与产品其余部分一起发布改进。变量支持、注释工作流、准备开发状态——这些是具有第一方支持的原生功能。当 Figma 添加新的设计系统能力时,Dev Mode 会获得它。
团队分发。Figma 组织计划上的每个设计师和开发者都已经有它了。无需安装、解释或维护额外工具。
设计时工具。设计师可以标记框架为准备好的,留下代码级注释,在同一画布内与开发者协作。这种来回对于需要评论和状态更新的 QA 循环确实很有价值。
figmascope 的优势
Agent 无关的基于文件的输出。Dev Mode 的输出存在于 Figma 内。figmascope 的输出存在于你控制的 zip 中。将其放在代码旁边,将 Claude Code 或 Cursor 指向它,Agent 就拥有完整规范——所有屏幕、所有 Token、所有字符串——根本不需要连接到 Figma。
版本控制。figmascope 包可以差异比较。提交它,放入 PR,看看上周的设计和今天的设计之间哪些 Token 发生了变化。Dev Mode 没有规范本身的版本历史概念——Figma 有文件版本历史,但那是针对源文件的,不是设计意图的可导出快照。
无需付费层。figmascope 是 MIT 许可的,免费使用。它使用公共 Figma REST API,只需要一个 PAT(在任何 Figma 账户上免费)。Dev Mode 需要 Professional 或 Organization 计划。对于在免费计划上工作的独立开发者或小团队,figmascope 是唯一的选择。
确定性输出。相同版本的同一 Figma 文件的每次导出产生相同的包。相同的 JSON、相同的 Token、相同的字符串。这对可重现性很重要——你可以在 CI 中运行它,将包固定到发布版本,针对它进行回归测试。
可移植且离线。一旦你有了包,它在没有 Figma 或任何服务器连接的情况下工作。Agent 上下文是自包含的。在飞机上、防火墙后,或者只是不想在构建冲刺期间依赖 Figma 正常运行时,这很有用。
IR 保留空间语义。screens/*.json 中间表示捕获布局类型(stack、overlay、absolute)、组件标识(INSTANCE 节点上的 componentId)和文本字符串引用——不仅仅是计算的 CSS。Agent 可以推理布局结构,而不仅仅是复制片段。
并排对比:同一 Figma 文件
以一个带有表单、主按钮和几个文本 Token 的登录屏幕为例。以下是每个工具提供的内容:
Dev Mode 输出:你点击的图层的 CSS 属性(font-size: 16px; color: #1f1d1a; border-radius: 8px)。每次一个图层。你复制所需内容。如果你想要完整的按钮状态,你逐个点击。如果你想要 Token 名称,如果设计师连接了变量就有——否则就没有。
figmascope 包输出:带有完整登录屏幕规范的 CONTEXT.md。带有 color.text.primary、spacing.4、radius.md 的 tokens.json——键控、类型化、从变量获取或推断。带有 IR 树的 screens/login.json:一个持有引用 componentId: "abc123" 的表单 INSTANCE 的 stack 容器,带有 stringRef.key: "auth.login.cta" 的子叶节点。将该键映射到"登录"的 strings.json。2× 的 screens/login.png。
你将包交给 Cursor。它读取 CONTEXT.md,从 tokens.json 提取 Token 名称,从 IR 构建组件。它根本不需要打开 Figma。
对比
| 维度 | Figma Dev Mode | figmascope |
|---|---|---|
| 定价 | 付费(Professional / Org 计划) | 免费,MIT 开源 |
| 输出格式 | Figma 内面板,CSS/iOS/Android 片段 | .zip:CONTEXT.md、tokens.json、screens/*.json、*.png |
| 集成模式 | 在 Figma UI 内,逐图层检查 | 浏览器导出,然后普通文件到处可用 |
| Agent 兼容 | 通过 MCP 服务器(单独功能) | 任何可读取文件的 Agent(Claude Code、Cursor、Aider、Copilot…) |
| 版本控制友好 | 否(输出存在于 Figma 中) | 是——包可差异比较、可提交 |
| 确定性输出 | 否(逐点击,会话绑定) | 是——相同文件版本 → 相同包 |
| 离线/可移植 | 否——需要 Figma 连接 | 是——包无需任何连接即可工作 |
| 设计时注释 | 是——准备开发、评论 | 否 |
| 空间/布局 IR | 否——所选图层的平坦 CSS | 是——带组件标识的 stack/overlay/absolute/leaf |
| Token 来源 | 有 Figma 变量时从变量获取 | Figma 变量 → 从频率推断 → 无 |
| i18n 字符串键 | 否 | 是——IR 中的 stringRef.key + strings.json |
| 需要插件安装 | 否(内置于 Figma) | 否(浏览器标签页,REST API) |
各自的适用场景
使用 Dev Mode 的情况:你需要快速检查特定值,你在设计评审中间想查看 Token,你的团队已经在付费 Figma 计划上并且生活在 Figma 中,或者你想要设计师的注释工作流和准备开发状态标记。
使用 figmascope 的情况:你将上下文交给 AI Agent 进行构建冲刺,你想在代码旁边对设计规范进行版本控制,你在免费 Figma 计划上,你需要完整的布局 IR(不仅仅是逐图层 CSS),或者你想要可以固定到发布版本或在 PR 中差异比较的确定性、可重现输出。
它们不是互斥的。构建时用 Dev Mode 检查,导出 figmascope 包将设计规范锚定在仓库中。两者不竞争——它们覆盖工作流的不同部分。