Figma评论删除后,AI记忆如何同步失效
作者为 Cognee 开发 Figma 连接器,将文件文本与评论线程分别组织为可检索文档。文章聚焦源内容删除后知识记忆仍残留的问题,并说明如何筛选画布中的有效文本。
AI 深度解读
Figma 里的评论删了,AI 助手却还拿它解释设计决策,这类错误不会让服务崩溃,却会让过期结论继续影响新人。作者为 Cognee 开发 Figma 连接器时,把「删除后能否忘记」放进了同步流程。
这篇值得读的地方,是它把知识库同步的几个难点讲得很具体:没有删除通知怎么办,限流后如何继续,缓存怎样避免保留旧标题,以及哪些结果经过了真实账号验证。
删掉的评论,为什么还会留在 AI 的答案里
Cognee 会把文档转成可供 agent 检索的知识图谱。源内容进入图谱后,Figma 上的删除操作并不会自动传过去,连接器必须负责清理。
作者在 Mergetober 中实现了这套连接器,代码对应 PR #372 和 issue #4552。它把内容分成两类文档:
- 每个文件生成一份,包含类型、所属文件夹、页面名、画框和分区名,以及所有文本图层的文字,FigJam 便签也包括在内。
- 每个评论线程生成一份,按时间排列评论与回复,保留作者、关联画框和解决状态。
几何信息、图片、隐藏图层,以及「Frame 12」这类默认图层名都不读取。因此,它适合回答文字描述和讨论记录里的问题,对画面布局本身的理解则有边界。
下面两行代码把选定文件夹接入名为 figma 的数据集:
source = figma_source(token, folder_ids=["<folder id>"])
await cognee.remember(source, dataset_name="figma")
要注意 folder_ids:选择范围也参与决定哪些内容应该保留。文件被删除、评论被删除,或者文件夹被取消选择,都会在下一次同步时触发遗忘。同一文件夹里的文件与评论共用一个节点集合(node set),检索时可以限定文件夹。
没有变更通知,怎样少下载、少调用模型
按作者描述,Figma 没有变更流,也没有删除流。文件夹列表只提供 last_modified,不提供版本号;评论变化还不会更新文件时间戳。
昂贵的是获取完整节点树的 GET /v1/files/:key。作者引用的 Figma 文档额度是:Dev 和 Full 席位每分钟 10 到 20 次,View 和 Collab 席位约每月 20 次。这里是文档信息,并非作者测出的实际额度。
连接器因此把同步拆成三步:每轮重新列出选中范围,只下载 last_modified 变化的文件,其余使用缓存;每个文件的评论则每轮请求一次,因为不能靠文件时间戳判断评论变化;最后由 Cognee 按文档内容做增量处理,文本没变就保留原有 id,不再送入 LLM。
下载增量和模型增量,是两道独立的判断。
缓存也不能把所有结果一起存起来。作者最初缓存了包含标题和文件夹名的完整渲染记录,但重命名或移动文件未必改变时间戳,旧标题就可能一直存在。修正后,缓存只保留节点树贡献的内容,标题和所属文件夹每轮从最新列表获取。
同步没跑完,不能把没读到当成已删除
作者的第一版遇到 429,重试仍失败就终止整轮同步。下一轮又从零开始,大团队可能反复撞上同一堵墙。
修改后,每轮最多获取 100 棵节点树;触发限流时正常停止抓取,尚未处理的文件沿用上次同步的文本,后续轮次继续推进。同步统计用 failed_budget 和 failed_rate_limit 表明未完成的原因。
「本轮没有读到」不能直接等同于「源内容已经删除」。
同样的保护还出现在选择范围上:空选择会报错;以前同步过文件,但本轮列表突然为空,也会报错。作者不允许空列表直接触发全量遗忘。参考此前 Stripe 连接器的评审意见,他还采用每个文件夹一个节点集合,避免每条记录一个集合导致图谱过大。
验证分两层。作者在 Python 3.10 和 3.12 上运行了 68 个测试,通过 dlt 的真实 HTTP 调用栈接入内存中的假 Figma;其中 8 个使用 mocked LLM 跑完整 Cognee 流程,覆盖删除、重复同步、预算中断和节点集合归属。
真实验证只用了免费账号里的两个设计文件,以及一个带回复的评论线程。首次导入后能从设计文字回答问题;无变化重跑时,文件下载和 LLM 调用均为 0;新增评论只处理对应线程;删除评论、修改文件文字、把文件移入废纸篓,也都得到预期结果。
还有一个时间差:修改后立即同步没读到变化,因为 Figma 晚了几秒保存,下一轮才捕获。
我的判断
我认可这里对同步状态的区分:明确删除需要清理,暂时读不到则保留旧内容。这比每轮全量重建更节省下载和模型处理,也给中断留下了恢复空间。但作者没有给出两种方案的成本或耗时对照,不能据此量化收益。
证据的边界也很清楚。OAuth 连接流程、大文件、长时间同步、付费计划,以及免费计划的实际限流,都没有经过真实 Figma 验证;相关行为主要靠假服务覆盖。两个小文件足以验证基本流程,无法证明大型团队中的稳定性。
还有接入前提:Figma 无法列出用户的团队;列文件夹需要私有 OAuth app,因为公共 app 不能使用 folders:read。原文提供了可选的 Cognee connect 和文件夹选择流程,但没有完成真实 OAuth 验证。
最后,遗忘要等下一次同步,文件修改也可能晚几秒才可见。原文没有给同步周期和最大过期时间,因此还不能把它当成即时一致的知识来源。
能拿来做什么
- 给设计知识库接入评论时,把评论线程单独建成文档,并保留作者、回复顺序和解决状态,方便单独更新或删除讨论记录。
- 给日常 AI 编程助手同步外部资料时,分别处理抓取缓存与内容去重,同时区分明确删除、请求失败和预算耗尽,避免故障引发误删。
- 试用连接器可从
packages/connector/figma/examples/example.py开始。在 Settings、Security 获取 personal access token,准备file_content:read、file_comments:read、folders:read、file_metadata:read权限,以及 folder id 或 team id,并按作者建议使用独立 dataset。 - 验收时检查无变化重跑是否减少下载和 LLM 调用,再验证删除评论、删除文件、限流中断及延迟保存后的下一轮同步,别只看首次导入能否回答问题。