大模型应用
需要无头读写、分析、导出 Figma .fig 文件或让…
适用于无头读取、查询、批量修改、导出和分析 Figma .fig 文件,或让 AI 代理与自托管编辑器接入设计文件、实时画布与设计 token。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要无头读写、分析、导出 Figma .特定
解决思路
- 使用 Web 应用无需安装:访问 app.openpencil.dev/demo。
- 在 macOS 桌面端通过 Homebrew 安装:brew install open-pencil/tap/open-pencil,或从 releases 页面下载安装包。
- 安装 CLI:bun add -g @open-pencil/cli。
- 安装 MCP server:bun add -g @open-pencil/mcp。
- 本地开发:git clone https://github.com/open-pencil/open-pencil,cd open-pencil,bun install,bun run dev 启动 Web 应用(localhost:1420),bun run tauri dev 启动桌面端(需要 Rust)。
- 用 open-pencil CLI 无头操作 .fig 文件;当桌面应用正在运行时,省略 file 参数即可通过 RPC 连接实时画布。
- 查看完整节点树:open-pencil tree design.fig。
- 按类型查找节点:open-pencil find design.fig --type TEXT;open-pencil find design.fig --type FRAME。
- 按 ID 获取特定节点:open-pencil node design.fig --id 1:23。
- 查看文件元数据:open-pencil info design.fig。
- XPath 查询所有 frame:open-pencil query design.fig "//FRAME"。
- XPath 查询宽度小于 300px 的 frame:open-pencil query design.fig "//FRAME[@width < 300]"。
- XPath 查询名称包含 Button 的文本节点:open-pencil query design.fig "//TEXT[contains(@name, 'Button')]"。
- XPath 查询有圆角的节点:open-pencil query design.fig "//*[@cornerRadius > 0]"。
- XPath 查询 section 内的文本:open-pencil query design.fig "//SECTION//TEXT"。
- 默认导出 PNG:open-pencil export design.fig。
- 以 2x 缩放、质量 90 导出 JPG:open-pencil export design.fig -f jpg -s 2 -q 90。
- 导出 SVG:open-pencil export design.fig -f svg。
- 导出 WEBP:open-pencil export design.fig -f webp。
- 导出带 Tailwind v4 utility classes 的 JSX:open-pencil export design.fig -f jsx --style tailwind。
- 分析设计 token 颜色:open-pencil analyze colors design.fig。
- 分析排版:open-pencil analyze typography design.fig。
- 分析间距:open-pencil analyze spacing design.fig。
- 分析重复结构/组件候选:open-pencil analyze clusters design.fig。
- 用 Figma Plugin API 脚本读取当前页面子节点数量:open-pencil eval design.fig -c "figma.currentPage.children.length"。
- 读取所有文本节点内容:open-pencil eval design.fig -c "figma.currentPage.findAll(n => n.type === 'TEXT').map(n => n.characters)"。
- 写入并将所有选中节点透明度设为 0.5:open-pencil eval design.fig -c "figma.currentPage.selection.forEach(n => n.opacity = 0.5)" -w。
- 写入并重命名页面所有 frame:open-pencil eval design.fig -c "figma.currentPage.findAll(n => n.type === 'FRAME').forEach((f, i) => f.name = 'Frame ' + i)" -w。
- 连接正在运行的桌面应用(省略 file 参数):open-pencil eval -c "figma.currentPage.name";open-pencil tree;open-pencil export -f png。
- 为机器可读输出给所有命令加 --json,例如 open-pencil find design.fig --type TEXT --json;open-pencil analyze colors design.fig --json。
- MCP server 向 AI agent 暴露 90 个工具(87 核心 + 3 文件管理),用于读写 .fig 文件。
- 用 stdio 方式供 Claude Code、Cursor、Windsurf 使用:先运行 bun add -g @open-pencil/mcp,再在 MCP 客户端配置(如 ~/.claude/mcp.json 或 Cursor 设置)加入 {"mcpServers":{"open-pencil":{"command":"openpencil-mcp"}}}。
- 脚本/CI 使用 HTTP server:运行 openpencil-mcp-http,监听 http://localhost:3100/mcp。
- 集成 Claude Code 桌面端:安装 ACP adapter npm i -g @zed-industries/claude-agent-acp。
- 给 ~/.claude/settings.json 增加 MCP 权限:{"permissions":{"allow":["mcp__open-pencil"]}}。
- 打开桌面应用,按 Ctrl+J,在 provider 下拉中选择 Claude Code。
- 快速安装 agent skill:npx skills add open-pencil/skills@open-pencil。
- 用 ⌘J(macOS)或 Ctrl+J(桌面/web)打开内置 AI Chat。
- AI Chat 有 87 个工具,可创建形状、设置 fills/strokes、管理 auto-layout、处理 components 和 variables、布尔运算、token 分析、资产导出。
- 在 AI Chat 中自带 API key,不需要后端或账号。
- 配置 AI provider:在 chat panel provider 下拉中选择 Anthropic、OpenAI、Google AI、OpenRouter 或任何兼容 endpoint。
- 按 provider 设置环境变量:ANTHROPIC_API_KEY、OPENAI_API_KEY、GOOGLE_AI_API_KEY、OPENROUTER_API_KEY;兼容 endpoint 使用 Custom base URL。
- 实时协作无需服务器和账号,使用 WebRTC 点对点。
- 点击右上角 Share 按钮。
- 分享生成的 URL:app.openpencil.dev/share/<room-id>。
- 协作者可看到实时光标、选择和编辑。
- 点击协作者头像可跟随其 viewport。
- 启动 Web dev server:bun run dev(localhost:1420)。
- 启动桌面应用开发:bun run tauri dev(需要 Rust)。
- 运行 lint + typecheck:bun run check。
- 运行 E2E 视觉回归测试:bun run test。
- 运行单元测试:bun run test:unit。
- 格式化代码:bun run format。
- 构建生产桌面端:bun run tauri build。
- 桌面端前置条件:安装 Rust 和 Tauri v2 platform deps。
- 批量重命名 .fig 中所有文本节点:open-pencil eval design.fig -c "figma.currentPage.findAll(n => n.type === 'TEXT').forEach((t, i) => t.name = 'Text_' + i)" -w。
- 将所有颜色提取为 JSON:open-pencil analyze colors design.fig --json > colors.json。
- 在 CI 中导出每个 frame 为 PNG:for id in $(open-pencil find design.fig --type FRAME --json | jq -r '.[].id'); do open-pencil export design.fig --id "$id" -f png -o "frames/$id.png"; done。
- 查询符合命名约定的节点(btn- 前缀):open-pencil query design.fig "//*[starts-with(@name, 'btn-')]"。
- 将 MCP 客户端连接到运行中的桌面应用:桌面打开时,MCP stdio server 可连接实时画布;无需文件路径,所有读写都作用于打开的文档;配置 {"mcpServers":{"open-pencil":{"command":"openpencil-mcp"}}}。
- 以编程方式将选中项导出为 Tailwind JSX:open-pencil export design.fig --id 1:23 -f jsx --style tailwind。
- 安装后找不到 openpencil-mcp:确保 bun 的全局 bin 目录在 PATH:export PATH="$HOME/.bun/bin:$PATH";或 MCP command 使用 npx openpencil-mcp。
- 桌面 app CLI 连接失败:先启动桌面应用再执行省略 file 参数的命令;检查防火墙没有阻止本地 RPC socket。
- Tauri dev 构建错误:安装平台前置依赖 v2.tauri.app/start/prerequisites;运行 rustup update 更新 Rust。
- .fig 文件打不开:确认文件从 Figma 导出,不是 .fig 备份或插件产物;运行 open-pencil info design.fig 检查 codec 能否解析 header。
- AI chat 无响应:在 provider 设置面板检查 API key;OpenRouter 需有额度且所选模型可用。
- 协作 peers 连不上:双方必须使用完全相同的 share URL(room ID 大小写敏感);WebRTC 要求双方允许浏览器/应用通过防火墙。
- 构建自定义编辑器:基于 Vue 3 app、Vue SDK、@open-pencil/core 引擎(scene graph、renderer、layout、codec)开发自定义编辑器。
- 定位模块时参考项目结构:packages/core 引擎、packages/cli 无头 CLI、packages/mcp MCP server、src Vue 3 应用、desktop Tauri v2、tests E2E/单元测试。
- 了解技术栈以做扩展:渲染 Skia CanvasKit WASM、布局 Yoga WASM、UI Vue 3/Reka UI/Tailwind CSS 4、文件格式 Kiwi binary + Zstd + ZIP、协作 Trystero WebRTC + Yjs CRDT、桌面 Tauri v2、AI/MCP 支持 Anthropic/OpenAI/Google AI/OpenRouter/MCP SDK/Hono。
适用边界 · 注意事项
- 不适用于必须依赖 Figma 官方云端协作、插件生态、团队权限与完整 Figma 兼容性的场景。
- 当 .fig 文件不是 Figma 正常导出文件(如备份或插件产物)时,解析可能失败,不适合直接处理。
- 不愿安装 OpenPencil/Bun/Rust/Tauri 等工具链,或需要纯云端零安装方案时,不适用。