Why does PanGuard report false positives in lanes instead of one number?
PanGuard reports lane-keyed false positives (~0.24% enforce, ~9% hunt) because a single blended FP number hides which detections you can trust to block.
PanGuard 把誤報分 lane 呈現,是因為單一混合的「0.3% FP」數字是一種便宜行事的謊言。在 65,000 筆 benign gate 上,Layer 1 deterministic rules 在 enforce lane 產生約 0.24% 誤報,在預設的 hunt lane 產生約 9%。這是兩種不同的工作,配兩種不同的錯誤預算。把它們平均成一個數字,不會告訴你任何關於「這條偵測能不能安全地自動攔阻」的資訊,而那才是唯一重要的數字。
9% 這個數字我是刻意公開的。它是我手上最難看的數字,而遮掉它,會是失去一個開放標準唯一資產的最快方式:信任。
enforce lane 和 hunt lane 差在哪裡?
enforce lane 放的是被允許攔阻的規則。這裡的一次誤報會打斷一個合法的 agent 執行,所以門檻刻意設得嚴苛。在 65,000 筆 benign 語料上,這些規則落在約 0.24% 誤報。如果你讓 PanGuard Guard 在執行中途停下一個 agent,你在意的就是這個數字。
hunt lane 是預設。它放的是更寬、更高 recall 的規則,把可疑行為浮出來給人審查,而不是直接攔阻。這些規則在 benign input 上觸發得更頻繁,在同一個 gate 上約 9%,因為它們的工作是不漏掉,而不是安靜。一次 hunt lane 命中是一條線索,不是一個判決。
一個數字無法同時描述兩條 lane。如果我告訴你「0.3% FP」,而你接著把 hunt lane 接進一條自動攔阻的 pipeline,你就會把 9% 的誤報率送進 production,然後在它打斷你的 agent 時怪罪工具。lane 就是讓那個數字可用的 context。
為什麼要刻意公開最難看的數字?
因為另一個選項是業界常態,而業界常態是行銷。廠商拿他們最緊的規則集在最友善的語料上的 precision,印出來當作整個引擎的描述。它不是。當客戶在真實流量上跑真東西、看到 9%,投影片和終端機之間的落差,就是信任死掉的地方。
我寧願你今天就不信那 9%,也不要你下一季自己發現。公開最難看的 lane 是一個有代價的訊號。只有在底層方法論誠實時,發出這個訊號才划算,所以發出它本身就是它誠實的證據。
以下是兩條 lane 在 65,000 筆 benign gate 上的對照:
| Lane | 角色 | 誤報(65K benign gate) |
|---|---|---|
| Enforce | 允許攔阻 | 約 0.24% |
| Hunt(預設) | 浮出供審查 | 約 9% |
作為對照,ATR corpus 裡其他 benchmark 也是用同樣方式呈現,一律標明語料。在 NVIDIA garak(650 筆 in-the-wild jailbreak 語料)上,Layer 1 rules 達 97.2% recall。在自建的 850 筆 PINT-format 語料上,達 99.7% precision、63.6% recall。在 HackAPrompt(EMNLP 2023,4,780 筆)上,69.6% recall、100% precision,對比 28.6% baseline。在 498 筆真實世界 SKILL.md 語料上,100% recall、97% precision、0.2% FP。以上每一個數字都綁定一個具名語料。它們沒有一個是引擎「那個」precision,因為根本沒有這樣一個單一數字。
generalization gate 是什麼?
一條只抓得到自己 test case 的規則毫無價值。它背下了一個攻擊字串,而不是學會一個 pattern。generalization gate 就是阻止這種規則出貨的檢查。
每一條候選規則都得同時做到兩件事。它得抓到它從未針對撰寫的攻擊樣本,證明它泛化超越了作者自己的例子。它也得在 65,000 筆 benign gate 上保持安靜,證明它不是靠變得草率才泛化。一條能過自己 true positive、卻在未見攻擊上失敗的規則,是個死背者。一條抓到一切、卻在 benign 流量上亮燈的規則,是台大筆一揮的 FP 機器。gate 兩種都拒。
這也是為什麼 FP 數字在建構上就是誠實的。benign gate 不是我在最後跑一下的禮貌性檢查。它是每一條規則進入 lane 前必須翻過的牆,而它落到哪條 lane,取決於它翻牆翻得多乾淨。0.24% 和 9% 是 gate 的輸出,不是我挑的數字。
這和 threat crystallization 有什麼關係?
PanGuard 的模型是:一個 AI 理解一次攻擊,這個理解被寫成一條 deterministic rule,這條規則接著為所有人以毫秒級執行。從新攻擊到出貨規則約需一小時。generalization gate 和 lane 系統就是這條 pipeline 的品管。crystallization 很快,所以 gate 必須嚴,否則快只是意味著你更快出爛規則。lane 就是一條規則證明「你被允許信任它多少」的地方。
FAQ
PanGuard 有單一的誤報數字嗎?
沒有。誤報以 lane 為單位:在 65,000 筆 benign gate 上,enforce lane 約 0.24%,hunt lane 約 9%。任何單一混合的 FP 數字都會遮蔽哪些偵測能安全地自動攔阻。
為什麼預設 hunt lane 的 9% 可以接受?
因為 hunt lane 把可疑行為浮出來給人審查,而不是攔阻。它的工作是高 recall,所以較高的 benign 命中率是不漏掉真攻擊該付的成本。只有 enforce lane 規則(約 0.24%)被允許攔阻。
是什麼阻止規則只背下自己的 test case?
generalization gate。一條候選規則必須抓到它不是針對撰寫的攻擊樣本,並在 65,000 筆 benign gate 上保持安靜,才能進入任何 lane。死背者和大筆一揮的 FP 規則都會被擋。
ATR 和 PanGuard 是同一個東西嗎?
不是。ATR 是一個獨立、開放、MIT 授權的標準,PanGuard 建構於其上並營運它,治理獨立。這個關係就像 Sigma 或 CVE 與營運它的廠商。
你可以自己檢查這些 lane。用 npm install -g @panguard-ai/panguard && pga up 安裝,然後在安裝前對一個 skill 或 MCP server 跑 pga scan <target>。規則、lane、benign gate 全部都是開放的。