Figma 讓 AI agent 接手資安 on-call:解案時間砍 71%,關鍵在幫它裝上記憶

警報一響,AI 先把歷史脈絡、相似案例、相關 PR 整理好貼進 Slack,工程師只要複核。Figma 資安團隊把一套 production agent 系統整個攤開講——尤其是讓它越用越準的那層記憶。

How we secure Figma's internal systems with agents | Figma 官方文章封面

on-call 工程師一整晚最花時間的,往往是把散在 Slack、Asana、pull request、audit log 各處的線索,重新拼回同一張桌上:這個警報跟上週那個像不像?有沒有一支 PR 已經在處理它?某條 Slack thread 是不是提過相關的事?

Figma 資安團隊把這段拼圖工作交給一套 AI agent 系統。警報一響,agent 先把歷史脈絡、相似案例、相關程式碼變更整理好貼進 Slack,工程師的角色從「從零開始調查」變成「複核 agent 找到的東西」。複雜警報的解案時間因此掉了七成。

這篇文章把一套真的在 production 環境跑的 agent 架構整個攤開講——從檢索層、多 agent 分工,到讓它越用越準的那層記憶。對每天都在用 AI 工具的設計師來說,這是難得能看到「一套 agent 系統內部到底怎麼運作」的一手材料。

SOURCE · FIGMA BLOG
How we secure Figma’s internal systems with agents
Our security team built an AI agent that triages alerts, conducts forensic investigations, queries our security data lake, writes code to fix issues—and remembers what it learns. Here’s how we cut alert time-to-resolution by 71%.
By Matthew Sullivan & Brad Girardeau · Figma · 2026.07.29
figma.com/blog →
目錄 · CONTENTS
01on-call 真正的瓶頸:蒐集脈絡
02第一層 RAG:讓每個警報長出記憶
03第二層 agentic layer:分工與工具清單
04讓 sub-agent 自己寫 SQL 查資料湖
05四種記憶,procedural 是轉捩點
06從調查到開 PR,還有那些 guardrail
系統上線後的三個數字
71%
複雜警報「解案時間」下降
20%
on-call 被叫醒的次數(自動降級)
25%
端點軟體審核請求減少
INTRO · 這套系統在解什麼

Figma 的資安工程團隊每天要防的威脅一直在變:雲端基礎設施頻繁更動、開發者換工具、每個人筆電上跑的東西每季都不一樣(文中舉的例子很有畫面感——當 Designer Advocate 團隊開始自己 vibe coding 做 app 跟自動化)。他們用 SIEM 工具 Panther 掃雲端、端點、SaaS、身分系統,一偵測到可疑就往 Slack 丟警報、同時在 Asana 開一張票給 on-call 工程師接。

問題出在「接」這個動作。過去 on-call 花最多力氣的環節,是蒐集脈絡。團隊一開始只想做一件小事:警報再度觸發時,把上一次工程師的判斷理由撈出來給你看。這個小專案最後長成一整套會調查警報、查 audit log、寫 code、開 PR,還會靠自己的記憶越做越好的 agentic 系統。下面這張圖,就是這隻 agent 手上握有的工具全貌。

Figma 資安 agent 的工具拓撲圖
以蟻穴隧道視覺化的 agent 工具拓撲:中央的 security agent 分岔到檢索相似警報、查使用者資料、抓 audit log、讀 Slack thread、取最近的程式碼變更、更新記憶等分支。圖/Figma
01/06on-call 真正的瓶頸:蒐集脈絡

先講清楚這套系統到底在省什麼。Panther 偵測到事件會發警報,但一則原始警報本身資訊很薄——你得自己去回答一串問題:這個 actor 是誰、他在 Okta 裡該有哪些權限、他警報前兩小時在 AWS 做了什麼、他的端點上跑了哪些程序、有沒有 Slack thread 或 PR 已經在處理。這些問題的答案分散在十幾個系統裡,人要一個一個 tab 開過去。

Figma 的做法是把「蒐集脈絡」這件苦工整包交給 agent。而且它刻意不改變工程師既有的習慣:當有人在 Slack 警報串裡留一句判斷筆記,系統就把那句話重新索引回原本的警報上,變成下一次相似警報的判斷依據。用他們自己的話說,既有的工作流本身就是訓練資料,不需要另外做標註工具或訓練管線。

02/06第一層 RAG:讓每個警報長出記憶

整套系統的第一塊,是蓋在 AWS Bedrock Knowledge Bases 加 Amazon Kendra 上的「檢索增強分類」層——他們把這叫做 case memory(案例記憶)。警報一觸發,Lambda 會把它轉成標準化文件、抽出 IP、actor、AWS 帳號 ID 等結構化欄位丟進 Kendra 索引。下一則相似警報進來時,就用警報標題當向量去做語意比對,把過去的處理紀錄撈回來。

兩個細節讓推薦變準:一是偏向「最近」的結果——兩天前的相似警報,比六個月前一模一樣的警報有用得多,因為判斷方式本身一直在演化;二是偏向那些「有留下 investigation context」的警報,也就是工程師實際留過筆記的案例(一則沒人留言、直接關掉的警報幾乎沒有參考價值)。光是這層,加上「高信心判定為重複或良性就自動把 severity 降級」,就讓 on-call 被叫醒的次數少了兩成。

把這條經驗搬進你的 AI 工作流 · 三個節拍
01
讓歷史留下來
你每次跟 AI 工具來回修的過程,就是最好的訓練材料。把有效的判斷寫成一句筆記,別讓它隨對話關掉就消失
02
偏向最近的範例
給 AI 參考時,優先餵近期的案例而不是很久以前的——你的品味跟標準一直在變
03
先降噪再處理
高信心的重複、雜訊先自動過濾掉,把注意力留給真正需要判斷的少數
03/06第二層 agentic layer:分工與工具清單

光有檢索還不夠,下一步是在 RAG 上疊一層真的會「動手」的 agent。他們用 Tines 做工作流自動化,看中的是它能用明確的工具介面跑 LLM 迴圈:讀一條 Slack thread、查一個 Okta 使用者、query Panther 資料、在特定 repo 開 PR。工程師掃一眼工具清單,就能推理出這隻 agent 能做什麼、不能做什麼——當你把 production 安全資料的存取權交給一套自動系統,這種可稽核性很值錢。

被 tag 之後第一件事是 intent routing:先用一個輕量模型(像 Claude Sonnet)讀完整條 Slack thread,判斷這是警報 triage、平台安全問題、還是 app 審核詢問,再把它分派給對應的專責 agent。每個 agent 有自己 scoped 的工具庫、授權層跟 system prompt。真正扛下大部分調查工作的是 alert triage agent(用像 Claude Opus 的模型),它手上握有 Okta、端點安全工具 Santa、雲端安全 Wiz、Slack、Panther,以及一個能開 PR、還有一個專門寫 SQL 的 sub-agent。把工具拆給不同 agent,好處是每隻都聚焦,不會養出一隻「什麼都能碰」的巨獸。

04/06讓 sub-agent 自己寫 SQL 查資料湖

triage agent 用直接的工具能回答很多問題,但有些調查得往更深挖:這個使用者警報前兩小時在 AWS 做了什麼?他的端點上有哪些程序在跑、有沒有異常?這種時候,triage agent 會把問題丟給一個專門的調查 sub-agent。

這個 sub-agent 接到自然語言問題,把它翻成 Snowflake SQL,去查 Panther 的資料倉儲——裡面吃進了整間公司的 audit log:AWS CloudTrail、Okta 系統日誌、GitHub 事件、GCP、osquery 端點遙測、Santa 事件、Wiz 發現,還有大約上百張表。母 agent 呼叫它的方式,就像你請同事幫忙跑一句查詢:「找 X 使用者過去 48 小時最近的 Okta 登入」。但這裡有個現實的坑:表結構很亂,欄位命名各家不一致、join key 沒文件、時間分割函式每張表都不同。沒有輔助的話,sub-agent 光是摸清 schema 就要浪費四五次查詢——這個問題怎麼解,答案在下一段的記憶層。

兩隻螞蟻合力搬運一顆櫻桃
母 agent 把查詢工作交給專門的調查 sub-agent,像請同事幫忙跑一句 query——分工,是這套系統可稽核的關鍵。圖/Figma
Memory Layers · 這套系統的四種記憶
Case memory
案例記憶:就是 RAG 那層,歷史警報加上工程師留下的判斷筆記。要看「上次類似狀況怎麼收的」就查這裡。
Steering memory
行為指引:一份 markdown,每次啟動載進 context,像 AGENTS.md。工程師糾正它,修正會留給未來的每一次執行。
State records
狀態紀錄:存在 Tines 資料庫,記 agent 開過哪些 PR、調查進度這類需要穩定 key 的東西。平凡但必要。
Procedural memory
程序記憶:sub-agent 自己記下的 schema 知識,依 aws/okta/osquery 等標籤歸檔。影響最大的一層。
05/06四種記憶,procedural 是轉捩點

記憶,是整套系統裡對「越用越有用」貢獻最大的部分——而且把不同種類的記憶分開,很關鍵。上面那張卡列了四種,這裡只講最有畫面感的兩個對照。

steering memory 跟 case memory 的界線,他們踩過坑才學會:一次性的教訓(某個特定警報該怎麼看)該進 case memory,當成未來相似警報的判例;而會改變 agent 對「所有警報」處理方式的行為規則,才該進 steering memory。早期他們把什麼都塞進 steering memory,結果它開始用不想要的方式覆蓋 agent 的行為——用他們的話說,判例跟政策是兩回事,該放在不同地方。

真正的轉捩點是 procedural memory。他們給調查 sub-agent 一個自己的記憶庫,查完一次需要摸 schema 的調查後,就把學到的東西存下來(例如「某張表的職稱欄位叫 jd」)。第一次問 Zoom 相關活動要跑好幾次探索查詢;存了記憶之後,同樣的問題一次查詢就搞定。這個模式在各個資料源反覆發生,agent 靠試錯替自己寫出了一本操作手冊。

設計師怎麼用這個觀念 · 三個節拍
01
分開放:判例 vs 政策
「這次特例怎麼處理」跟「以後所有情況都要這樣做」是兩種筆記,混在一起會讓 AI 亂套規則
02
讓工具記住你的 schema
把你常用的檔案結構、命名規則、慣用設定寫成可重用的說明,AI 就不用每次重新摸索
03
複利在累積,不在單次
一套會累積記憶的工作流,價值在於每一次都讓下一次更省——別只看單次表現
06/06從調查到開 PR,還有那些 guardrail

最讓團隊意外省時間的一步,是 agent 從「我搞懂發生什麼事了」直接跨到「這是一支修好它的 PR」。兩條路徑:偵測規則、allowlist、警報抑制這類改動,開 PR 到 Panther detections repo;基礎設施、Terraform、RBAC 這類則對 monorepo 動手。他們特別補了一課——bot 開的 PR 會讓 git blame 指向服務帳號,幾個月後根本查不到這改動的來龍去脈,所以現在會把提出需求的工程師名字跟原始 Slack thread 連結寫進 PR 描述。

但放權的前提是 guardrail。每一支 agent 開的 PR 都會被自動設成 draft——這一步做在 Tines 工作流裡,是確定性的後處理,而非靠 prompt 叮嚀 agent「記得設 draft」,因為他們早就發現指望 LLM 記住這種事不夠可靠。同樣用這種工具呼叫的契約,確定性地擋掉一堆事:agent 拿 Okta 資料時不會收到敏感員工資訊、不會去關或改不是它自己開的 PR。他們的原則很清楚——當行動是有界、可逆、有明確證據支撐時,才比較放心交給 agent 自動執行;廣泛、破壞性、難稽核的操作則不。

整體觀察

把這篇拉高一層看,設計師最該記住的,是一套 production agent 系統實際長成什麼樣子。它的本體更接近一組工程結構——檢索、分工、工具契約、四種分層記憶,再加上一堆確定性 guardrail 疊起來的成果,而非單一顆無所不能的大模型。讓它真正拉開差距的,是那層會自己累積、越用越省的記憶。

這跟你我手上的 AI 設計工具是同一套邏輯。當「vibe coding」跟 agent 開始進入日常,看得懂這種系統怎麼把人的判斷沉澱成可重用的資產、怎麼在放權跟可控之間畫線,會慢慢變成一種基本的工作素養。工具會一直換,這套關於記憶與邊界的思路不會。

「That’s the thing we’re most optimistic about: not any single agent run, but the fact that every run makes the next one cheaper and more accurate.」
— Matthew Sullivan & Brad Girardeau, Figma
KEY POINTS · 重點整理
Figma 資安團隊把 on-call 的「蒐集脈絡」苦工交給一套 agent 系統,複雜警報解案時間下降約七成。
第一層是 RAG(case memory):把歷史警報+工程師的 Slack 判斷筆記索引起來,既有工作流本身就是訓練資料。
第二層是 Tines 上的多 agent 分工:intent routing 先分類,再交給有各自 scoped 工具的專責 agent,避免單一巨獸。
調查 sub-agent 會把自然語言翻成 Snowflake SQL 查上百張 audit log 表;procedural memory 讓它把 schema 知識存下來、越查越快。
guardrail 全走確定性:PR 一律先設 draft、擋敏感資料、不碰非自己開的 PR——放權只給有界、可逆、有證據的行動。
100 種 Figma 設計的方法|UI/UX 線上課程
FIGMA 全攻略
agent 能自己修規則,前提是規則本來就寫得夠有系統
Figma 全攻略把 component、variables、design tokens 的系統化思維一次練起來——這正是 AI 幫得上忙的起點。
AI 覺醒設計應用攻略|RAR 設計攻略訂閱方案
AIWAKEN 訂閱制
AI 覺醒設計應用攻略
✦ AI 工具實測與工作流分享
✦ 設計師角度的 Prompt 技巧
✦ 每週精選 AI × 設計新知