How ATR Detection Benchmarks Actually Work: Every Number, Per Corpus
ATR reports one benchmark per corpus with full context: garak 97.2% recall, PINT-format 99.7% precision, HackAPrompt 69.6% recall, SKILL.md 100% recall. Never one engine-wide number.
ATR 沒有單一的 precision 數字,任何給你單一數字的 benchmark 表格都在騙你。ATR 每個結果都對應特定語料,標明語料規模,而且一律標示為 Layer 1 deterministic 規則的行為。在 NVIDIA garak 上,Layer 1 規則對 650 條真實流通的 jailbreak 樣本達到 97.2% recall。在自建的 PINT-format 語料(850 樣本)上達到 99.7% precision、63.6% recall。在 HackAPrompt 的 4,780 樣本上達到 69.6% recall,對照 baseline 只有 28.6%。這些數字不一樣,因為它們是不一樣的測試。本文逐一走過每個測試,讓你能自己重現、自己判斷。
ATR(Agent Threat Rules)是一套獨立、MIT 授權的偵測標準。語料為 680+ 條規則、橫跨 10 個分類(截至 2026 年 7 月接近 690 條),以 npm 套件 agent-threat-rules 發布。PanGuard 建構於 ATR 之上並負責營運,就像某家廠商營運 Sigma 或 CVE 一樣。以下全部都是 Layer 1 deterministic 規則引擎:毫秒級執行的 pattern 規則,不是 LLM judge。
為什麼每個數字都對應語料,而非引擎級
jailbreak 語料和 benign 流量語料量的是兩件不同的事。recall 回答的是「真實攻擊裡,我們抓到幾成?」precision 和 false-positive 率回答的是「我們標記的裡面,有多少其實是良性的?」你無法把這些跨語料平均出一個有意義的數字,因為每個語料的攻擊基準率天差地遠。一個混合出來的「99.7% precision」標題,會藏起它來自哪個語料、攻擊密度是多少。所以 ATR 拒絕發布單一數字。以下每條 benchmark 都標明語料、規模,以及量的是 recall 還是 precision。
garak:650 樣本上 97.2% recall
NVIDIA garak 是一套 LLM 弱點掃描器。這裡的語料是 650 條真實流通的 jailbreak 樣本。對這個集合,ATR 的 Layer 1 規則抓到 97.2% 的攻擊。這是 recall 數字:它告訴你規則看得見真實在流通的 jailbreak,不只是教科書範例。它本身不告訴你 false-positive 率。那是另一個語料上的另一次量測,下方會談。
PINT-format:850 樣本上 99.7% precision、63.6% recall
這是一個自建的 850 樣本語料,由 deepset/prompt-injections 與 Lakera Gandalf 組合而成。它是 PINT-format,但不是 Lakera 官方的私有 PINT 集,所以請把它當成一個可重現的內部 benchmark,而非第三方排行榜結果。在它上面,ATR Layer 1 規則達到 99.7% precision、63.6% recall。誠實地讀這組配對:這些規則一旦觸發,幾乎總是對的(99.7% precision),而它們刻意對大約三分之一的樣本保持沉默(63.6% recall),而非亂猜。這就是 enforce lane 取捨的縮影。高信心,窄覆蓋。
HackAPrompt:4,780 樣本上 69.6% recall(對照 28.6% baseline)、100% precision
HackAPrompt 是一個經同儕審查的對抗性資料集(EMNLP 2023),4,780 條由人類專門為了突破 guardrail 而寫的 prompt。這是四個語料中最難的一個。ATR Layer 1 規則在此達到 69.6% recall、100% precision,對照 baseline 為 28.6%。兩點重要。第一,69.6% 是 28.6% baseline 的兩倍多,這才是真正的訊號。第二,precision 維持 100%:在這個對抗集上,規則一旦觸發就從不出錯。在一個刻意對抗的語料上 recall 低於 70% 不是要藏起來的缺陷。它是 deterministic pattern matching 面對人類紅隊時誠實的上限,也正是為什麼這套標準會記錄自己已知的規避技術,而不是宣稱完全覆蓋。
SKILL.md:498 樣本上 100% recall、97% precision、0.2% FP
SKILL.md 語料是 498 條真實世界的 agent skill 檔樣本,正是 ATR 設計來掃描的對象。這是主場測試,數字也反映了這點:100% recall、97% precision、0.2% false-positive 率。集合裡每一個惡意 skill 都被抓到,幾乎沒有良性樣本被誤標。這是對實際產品面最重要的語料,因為在安裝前掃描一個 skill 或 MCP server,正是 pga scan 在做的事。
benign gate:為什麼 false positive 是分 lane 的,不是單一數字
false-positive 率是單一標題數字傷害最大的地方,所以 ATR 讓每條規則對 65,000 條 benign 樣本過閘,並分 lane 回報 FP,不混算。在 enforce lane,false positive 約 0.24%。在預設的 hunt lane,約 9%。沒有單一混合的 FP 數字,說有就是不誠實。兩個 lane 存在的原因:enforce 用在誤報代價高的時候(擋掉合法的 agent 動作),所以調得很緊。hunt 用在浮出候選讓人類分流的時候,這裡漏掉真實攻擊的代價高於一個吵雜的標記。同一批規則,兩個操作點。要嘛標明 lane,要嘛什麼都別引用。
可重現性
這些都不是行銷數字。規則語料以 npm install -g @panguard-ai/panguard 發布,標準本身 MIT 授權且公開,所以產生這些結果的規則就是你能讀到的規則。四個攻擊語料上方已具名(garak、由 deepset + Gandalf 組成的 PINT-format 版本、HackAPrompt、SKILL.md),benign gate 是 65,000 樣本。當你引用一條 ATR benchmark,請連同它的語料和 lane 一起引用。沒有語料的數字不是 benchmark。那是口號。
| 語料 | 規模 | 指標 | 結果 |
|---|
| --- | --- | --- | --- |
|---|
| NVIDIA garak(真實流通) | 650 | recall | 97.2% |
|---|
| PINT-format(自建) | 850 | precision / recall | 99.7% / 63.6% |
|---|
| HackAPrompt(EMNLP 2023) | 4,780 | recall / precision | 69.6%(對照 28.6% baseline)/ 100% |
|---|
| SKILL.md(真實世界) | 498 | recall / precision / FP | 100% / 97% / 0.2% |
|---|
| benign gate | 65,000 | FP(分 lane) | 約 0.24% enforce / 約 9% hunt |
|---|
FAQ
ATR 有單一的整體 precision 或 false-positive 率嗎?
沒有。precision 和 FP 完全取決於語料與操作 lane。ATR 每個都逐語料回報,而 false positive 分成 enforce lane(約 0.24%)與 hunt lane(約 9%),對 65,000 條 benign 樣本量測。
為什麼 HackAPrompt recall 只有 69.6%,garak 卻有 97.2%?
它們是不同的語料。HackAPrompt 是刻意對抗的人類紅隊 prompt 資料集,難度高得多。deterministic pattern matching 在那裡誠實的上限是 69.6% recall,仍是 28.6% baseline 的兩倍多,且 precision 為 100%。
PINT-format 的結果和 Lakera 官方的 PINT benchmark 一樣嗎?
不一樣。它是一個自建的 850 樣本語料,採 PINT 格式,由 deepset/prompt-injections 與 Lakera Gandalf 組合而成。它不是 Lakera 官方的私有 PINT 集,請當成可重現的內部 benchmark。
這些是 Layer 1 規則數字還是全引擎數字?
以上全部都只是 Layer 1 deterministic 規則,也就是毫秒級執行的 pattern 規則。刻意這樣回報,是為了把 deterministic 地板與其他任何東西分開量測。
自己讀標準、自己重現數字:以 npm install -g @panguard-ai/panguard 安裝,然後在安裝前對一個 skill 或 MCP server 跑 pga scan <target>。