06 Figma 插件如何接入 AI 模型:从在线 API 到本地 Ollama,我踩过的一个大坑前几篇文章里,我聊了自己为什么开始 Vibe Coding,也聊了第一次搭 Figma 插件开发环境、怎么把需求拆给 AI,以及为什么 Figma 插件和普通小工具的差别。 如今,我想继续拆一个更具体的问题:怎么让 Figma 插件真正接入 AI 模型? 对我的「灵犀表格 / Tablesense」Figma插件来说,AI 最重要的作用就是根据表头生成更真实的表格数据。 插件就可以让 AI 生成几行更像真实业务里的表格内容,而不是一堆假得不能再假的占位文案。 无非就是在插件里填一个接口地址、一个 API Key、一个模型名,然后点击生成吗? 但如果接的是本地 Ollama 模型,就不是“填个地址”这么简单了。 尤其是 OLLAMA_ORIGINS 这个环境变量配置,我当时被卡了很久。 网上能搜到的教程只有Ollama的使用和安装,但是在Figma中无法使用的问题,搜不到答案。 我当时甚至还去找别人做的、支持本地 Ollama 的 Figma 插件来参考,结果下载下来也没法直接用。 所以这篇文章,我想把这块单独讲清楚,让想做接本地大模型Figma插件的人,有个参考。 如果你也想在 Figma 插件里接入 AI 模型,尤其是想接入自己电脑上用 Ollama 跑的本地模型,希望这篇能帮你少走一点弯路。
01 先说清楚:Figma 插件接入 AI,本质上是在“发起一次模型请求” Figma 插件里的 AI 功能,本质上通常就是一条请求链路: 插件要做的事情,就是把这些信息整理成一段模型能理解的请求,比如: “请根据以下表头生成 5 行真实的 B 端任务管理表格数据……” 最后,插件再把这些内容填入 Figma 组件实例里。 AI 不是直接住在 Figma 插件里。插件只是负责把请求发出去,再把结果拿回来。 02 在线模型怎么接入:通常要配置哪些字段? 如果你接入的是在线模型,比如 OpenAI、DeepSeek、智谱 GLM,或者其他兼容 OpenAI 接口格式的模型服务,一般会看到几个常见配置项。 如果插件做得比较灵活,就可以支持不同 Provider。 但从插件内部逻辑看,本质上还是根据不同服务商,拼出不同的请求地址、请求头和请求参数。 https://api.openai.com/v1 https://open.bigmodel.cn/api/paas/v4 不同平台的 API 地址不一样,不要随便照抄别人的。 很多时候你模型调不通,不一定是代码写错了,而是 Base URL 填错了,或者多写、少写了某一段路径。 API Key 可以理解成你访问在线模型服务的“钥匙”。 如果 API Key 填错了,常见结果就是鉴权失败,比如返回 401、403 之类的错误。 写错一个字符,都可能导致请求失败。要注意模型名称和实际使用的模型ID的区别。 我刚开始做 AI 接入时,也犯过这种错误:输入的模型名称和实际模型不匹配,比如模型ID上带有日期的,如doubao-1-5-lite-32k-250115,如果你输入Doubao-1.5-lite这种名称就可能会报错。 后来我慢慢养成习惯:模型名一定从官方文档里复制,或者直接做一个请求模型列表的功能,通过选择器选择。 这是个高阶配置,一般可以不配置,尤其是Figma插件中仅用来生成看起来比较真的填充内容时。 如果插件里开放了 temperature 配置,可以简单理解为: 因为我们希望 AI 生成的内容稳定、规整、容易解析,而不是每次都自由发挥。 尤其是插件后面还要把 AI 返回的数据解析成结构化内容,如果模型输出太飘,反而容易导致解析失败。 比如只是生成 5 行、10 行表格数据,就不需要给特别大的输出长度。 在线模型接入的重点,是把请求地址、鉴权信息、模型名称配置正确。 如果这三个核心字段没问题,大部分在线模型调用就已经跑通一半了。 03 Figma 插件不是普通网页:manifest 也要允许网络访问 很多人第一次做 Figma 插件时,容易忽略一个点: 即使你插件里的 Base URL、API Key、Model ID 都填对了,Figma 插件也不一定能直接请求成功。 因为 Figma 插件运行在 Figma 的插件环境里,不是普通网页。 如果插件需要访问外部网络,通常需要在 manifest.json 中配置网络访问权限。 "allowedDomains": ["https://api.openai.com"], "reasoning": "用于调用 AI 模型生成表格数据" 如果你在开发阶段要请求本地 Ollama,则可能需要这样配置: "devAllowedDomains": ["http://localhost:11434"] allowedDomains 是正式环境允许访问的域名;devAllowedDomains 是开发阶段允许访问的域名;reasoning 是说明为什么插件需要访问这些网络地址。 早期开发调试时,可以直接把域名放得很宽,甚至写成 "*",这样确实方便排查问题。 但如果后续要发布插件,更稳妥的方式,是只保留你真实需要访问的接口域名。 插件里填了API地址,不代表 Figma 就一定允许你访问。Figma 自己也有一层网络访问权限。 04 本地 Ollama 和在线模型最大的区别:它不是公网 API,而是你电脑上的本地服务 你只需要按照文档填好 API 地址、API Key 和模型名称,大多数时候就能开始请求。 但 Ollama 不一样。Ollama 是运行在你自己电脑上的本地模型服务。 这意味着:Figma 插件要调用 Ollama,本质上是让运行在 Figma 插件环境里的程序,请求你电脑本机上的一个本地服务。 Figma 插件能不能访问 localhost:11434? 所以,在线模型和本地模型的差别不是“地址不同”这么简单。 在线模型主要是服务商API配置问题;本地 Ollama 则多了一层本机服务和跨域访问的问题。 插件里的 URL 看起来没错,模型名也没错,Ollama 本地也能运行,但 Figma 插件里就是请求失败。 05 接入本地 Ollama,需要同时处理两类配置 如果插件要请求本地 Ollama,需要在 manifest.json 中允许访问本地 Ollama 地址。 可以像下方这样直接写Ollama的本地地址,或者更简单粗暴的用“*”: "devAllowedDomains": ["http://localhost:11434"] 如果没有这层配置,Figma 插件可能根本不允许你的请求发出去。 Figma 插件运行在浏览器 / iframe 环境中,请求本地 Ollama 时,可能会被跨域策略拦截。 所以除了 Figma 插件 manifest 允许访问本地地址以外,还需要告诉 Ollama: OLLAMA_ORIGINS 不是写在 Figma 插件里的。 它也不是填在插件设置面板里的。 它是配置给 Ollama 服务本身的环境变量。 插件里填写的 URL 和模型名,是告诉插件:我要请求哪个地址;我要使用哪个模型。 而 OLLAMA_ORIGINS="*" 是告诉 Ollama:允许其他来源访问我。 我一开始以为问题在插件代码里、模型名称里、接口格式里,于是反复让 AI 帮我检查请求逻辑。 后来才发现,真正缺的是 Ollama 这边的跨域环境变量配置。 代码可能是对的,接口地址也可能是对的,本地模型也确实在运行。 但因为跨域配置没打开,Figma 插件就是访问不到。 06 本地 Ollama 配置界面里,API Key 可以留空 如果你的插件把在线模型和本地模型放在同一个配置界面里,通常会有这些字段: 但本地 Ollama 默认不需要 API Key。 Base URL:http://localhost:11434 Model ID:本地模型名称,例如 qwen3:8b Ollama 本地模型名必须和你本机真实存在的模型名一致。 curl http://localhost:11434/api/tags 07 macOS 如何配置 OLLAMA_ORIGINS? 如果你使用的是 macOS 版 Ollama App,我更推荐用下面这种方式配置。 launchctl setenv OLLAMA_ORIGINS "*" export OLLAMA_ORIGINS="*" 这条命令不是完全没用,但它更像是当前终端会话里的临时配置。 如果 Ollama 是通过 macOS App 在后台运行的,你单纯在终端里执行 export,不一定会影响已经运行的 Ollama 服务。 也就是说,你以为自己配置了,实际上 Ollama App 可能根本没吃到这个环境变量。 所以面向普通用户,尤其是直接使用 macOS 版 Ollama App 的用户,我更建议使用: launchctl setenv OLLAMA_ORIGINS "*" 因为环境变量配置后,如果 Ollama 没有重新启动,它可能仍然使用旧的运行环境。 08 Windows 如何配置 OLLAMA_ORIGINS? 在任务栏右下角找到 Ollama 图标,右键退出。 如果你使用的是 Windows 11,可以打开“设置”,搜索“环境变量”。 如果你使用的是 Windows 10,可以打开“控制面板”,搜索“环境变量”。 这里建议添加到“用户变量”中,一般不需要添加到系统变量。 配置完成后,再回到 Figma 插件里测试本地模型连接。 export OLLAMA_ORIGINS="*" export 是终端命令的一部分,不是 Windows 环境变量的变量名。 09 如何判断 Ollama 配置是否生效? curl http://localhost:11434/api/tags 如果能返回本地模型列表,说明 Ollama API 可以访问。 如果 Ollama 能访问,但 Figma 插件不能用 manifest.json 是否允许访问 http://localhost:11434;OLLAMA_ORIGINS 是否已经配置; 配置后是否已经重启 Ollama; 插件中填写的模型名是否和本地 Ollama 模型名一致; 插件请求的接口路径是否写对; Figma 插件是否重新加载; 控制台里是否出现 CORS、Failed to fetch、Network error 之类的错误。 如果浏览器能打开 localhost:11434,终端也能请求模型列表,但 Figma 插件里依然失败,那就尤其要关注: manifest网络权限 和Ollama 跨域配置 这两个地方。很多时候,问题不在模型,也不在 prompt,而是在请求根本没有顺利完成。 10 关于 OLLAMA_ORIGINS="*" 是否安全? OLLAMA_ORIGINS=* 的意思是允许所有来源访问 Ollama。 如果你打开了恶意网页,对方可能尝试调用你电脑上的 Ollama 服务,消耗你的本机计算资源。 个人本地开发,可以使用; 公司安全敏感环境,谨慎使用; 公共电脑,不建议使用; 如果你已经把 Ollama 暴露到局域网或公网,不要随便使用 *; 如果只是本机 Figma 插件调用本机 Ollama,重点配置 OLLAMA_ORIGINS 即可。 那我能不能不要写 *,改成 https://www.figma.com? 因为 Figma 插件运行在特殊的 iframe 环境中,实际请求来源可能并不是你直觉里想的那个普通网页域名。 如果你写成某个具体域名,反而可能继续遇到 CORS 报错。 OLLAMA_HOST=0.0.0.0:11434 因为 OLLAMA_HOST=0.0.0.0:11434 会让 Ollama 监听范围变大,容易带来额外风险。 如果你的需求只是让自己电脑上的 Figma 插件访问自己电脑上的 Ollama,通常不需要这么做。 11 我当时为什么会被这个问题卡住? 因为我一开始完全没意识到,Figma 插件接入本地 Ollama 不是一个单点配置问题,而是三层关系叠在一起。 也就是 manifest.json 里的网络访问配置。 因为 Ollama 那边如果没有允许这个来源访问,插件依然会失败。 我当时一直以为问题在插件代码里,所以反复让 AI 帮我检查: Figma 插件能发请求,不代表 Ollama 就愿意接受这个来源的请求。 只是你要同时理解 Figma 插件和 Ollama 两边的限制。 12 写在最后:AI 接入不是填几个字段,而是理解请求链路 做完这一步以后,我对 Figma 插件的理解又深了一层。 在线模型帮我们处理了很多底层问题,所以看起来简单。 本地 Ollama 更自由、更私密,也不需要 API Key,但它要求我们多理解一点本地服务、跨域和环境变量。 AI 编程不是完全不用理解技术。而是你可以先做起来,再在一个个真实问题里补上理解。 我不是程序员,也不是想把这些内容写成很硬核的开发教程。 如果你也在做 Figma 插件,或者也想把自己的插件接入本地模型,希望这篇文章能帮你少走一点弯路。 未来我会继续分享 AI 时代的 UX 设计师如何拥抱变化。