Threat_Hunter / docs /six_agent_architecture.md
EricChen2005's picture
Deploy ThreatHunter - AMD MI300X + Qwen2.5-32B
c8d30bc

ThreatHunter v3.0 — 六 Agent 架構設計說明

文件目的:說明哪些設計應升級為 Agent、哪些應保留為基礎設施,以及為什麼 版本:2026-04-09 讀者:領頭人、Hackathon 評審


第一性原理:什麼東西應該是 Agent?

判斷標準(來自 OpenAI Agentic System 設計原則):

判斷標準 是 Agent 不是 Agent(基礎設施)
需要 LLM 推理?
需要自主判斷 / 條件決策?
需要記憶與上下文?
是否有固定確定性邏輯? ❌(程式碼就夠了)
是否在 LLM 進入前執行? ❌(不能信任 LLM 守衛 LLM)

三個新設計的架構分析

一、六維情報融合 → 應升級為 Intel Fusion Agent

原本設計:5 個 Tool 函式 → Scout Agent 的 SOP 寫死呼叫順序

問題

  • Scout 需要「懂得」根據情境選擇查哪幾個維度(例:老 CVE 的 EPSS 數據少,應降權)
  • 寫死順序 = 工具包裝器,不是 Agentic
  • OTX 可信度參差不齊,應該有自主過濾邏輯

升級後:Intel Fusion Agent

職責:根據漏洞特徵,自主選擇情報維度組合,並融合評分
SOP 核心決策邏輯:
  IF cve_year < 2020: EPSS 數據較少 → 降低 EPSS 權重,提高 CVSS 權重
  IF package_ecosystem == 'python': GHSA 優先 → 先查 GHSA
  IF in_cisa_kev == true: 跳過 EPSS(已確認在野,概率已無意義)
  IF otx_signal < threshold: 降低 OTX 權重 → 避免誤報
  記憶:記錄哪個 API 這次失敗 → 下次 fallback 更快

輸出:six_dim_score + source_weights + confidence
Skill 檔案:skills/intel_fusion.md(待建立)

對 Hackathon 的展示價值

「我們的情報融合 Agent 會根據 CVE 類型自主調整查詢策略,而不是寫死的順序調用。」


二、防禦四層縱深 → 部分升級,部分保留基礎設施

四層的本質不同,不能一刀切

能否做成 Agent 原因 結論
L1 輸入層(input_sanitizer) 在 LLM 之前執行,不能用 LLM 守衛 LLM 保留基礎設施
L2 Dual LLM(隔離 LLM) 是個 LLM,可賦予 SOP 升級為 Security Guard Agent
L3 Schema 驗證 確定性程式碼(jsonschema.validate),不需要 LLM 推理 保留基礎設施
L4 執行沙盒 作業系統層(Rate Limit / Audit Log) 保留基礎設施

升級後:Security Guard Agent(即原 Quarantined LLM)

職責:從不可信的用戶輸入中提取結構化資訊,不做任何推理
SOP:
  Step 1: 接受原始程式碼(不可信輸入)
  Step 2: 只執行結構化提取(函式清單、import 清單、字串模式)
  Step 3: 輸出只能是預定義 JSON 格式
  Step 4: 任何輸出不符合格式 → 拋出 SecurityExtractionError
禁止:呼叫任何外部 Tool、讀取記憶、做任何推理

WHY:即使 Security Guard Agent 被完全劫持,
     它也只能讓 JSON 格式錯誤,無法影響後續分析。

Skill 檔案:skills/security_guard.md(待建立)

L1/L3/L4 保留為基礎設施的理由

「讓 AI Agent 去執行 Schema 驗證」是反模式——確定性邏輯比 LLM 更可靠、更快、更省費用。


三、七層防幻覺 → 大部分已是 Agent,其餘是基礎設施

目前狀態 應該是什麼
層1 Tool-First 原則 所有 Agent SOP 的第一步 ✅ 已是 Agent 行為(All Agents)
層2 CVE 憲法 CI-1~4 所有 Agent 的 System Prompt ✅ 已是 Agent 行為(All Agents)
層3 Schema 驗證 確定性程式碼 ❌ 保留基礎設施(更可靠)
層4 信心度標記 輸出格式規範 ✅ 已是 Agent 輸出格式(All Agents)
層5 三方辯論 Critic Agent 的 Skill ✅ 已是 Agent(Critic)
層6 記憶比對 所有 Agent SOP 的 read_memory → write_memory ✅ 已是 Agent 行為
層7 DVWA 測試 外部驗證流程(非執行時) 可升級為 Evaluation Agent(選擇性)

結論:七層防幻覺大部分已是 Agent 行為,不需要重構。


升級後的完整六 Agent 架構

輸入層(基礎設施,L1)            輸出層(基礎設施,L3/L4)
  input_sanitizer.py                jsonschema.validate
        │                                    ▲
        ▼                                    │
┌─────────────────────────────────────────────────────────┐
│                    六 Agent 管線                         │
│                                                          │
│  [AG1] Security Guard Agent                              │
│         隔離 LLM,從不可信輸入提取結構化 JSON             │
│         Skill: skills/security_guard.md(待建)          │
│                    │                                     │
│                    ▼ 結構化 JSON(已清潔)                │
│  [AG2] Intel Fusion Agent                                │
│         自主選擇六維情報查詢策略,融合評分                 │
│         Skill: skills/intel_fusion.md(待建)            │
│                    │                                     │
│                    ▼ six_dim_results + composite_score   │
│  [AG3] Scout Agent                                       │
│         六維評分 + CVE 格式驗證 + is_new 標記             │
│         Skill: skills/threat_intel.md(已有)            │
│                    │                                     │
│                    ▼ standardized_vuln_objects[]          │
│  [AG4] Analyst Agent                                     │
│         連鎖攻擊路徑推理 + Map-Reduce 跨函式追蹤          │
│         Skill: skills/chain_analysis.md(已有)          │
│                    │                                     │
│                    ▼ attack_chain_graph                  │
│  [AG5] Critic Agent(三角色辯論)                        │
│         Analyst + Skeptic + ThreatHunter 三方辯論        │
│         Skill: skills/debate_sop.md(已有)             │
│                    │                                     │
│                    ▼ debate_record + weighted_verdict    │
│  [AG6] Advisor Agent                                     │
│         最終裁決 + 業務語言翻譯 + 行動計畫                │
│         Skill: skills/action_report.md(已有)           │
└─────────────────────────────────────────────────────────┘

四個 Skill 文件的建立優先序

優先 Skill 文件 狀態 工時
P0 skills/threat_intel.md ✅ 已有
P0 skills/chain_analysis.md ✅ 已有
P0 skills/debate_sop.md ✅ 已有
P0 skills/action_report.md ✅ 已有
P1 skills/intel_fusion.md ❌ 待建立 ~2 小時
P1 skills/security_guard.md ❌ 待建立 ~1 小時

為什麼不把所有東西都做成 Agent?

反模式警告(AMD Hackathon 評審會注意到這個):

❌ 把 Schema 驗證做成 Agent:
   "讓 AI 驗證 AI 的輸出" → 可靠性低於 jsonschema.validate
   → 評審會問:「為什麼不直接用 Python?」

❌ 把 Rate Limiting 做成 Agent:
   Rate Limiting 需要毫秒級響應,LLM 需要秒級
   → 本末倒置

✅ 正確原則:
   「需要推理和判斷的 → Agent」
   「有確定性答案的 → 確定性程式碼」
   這才是成熟的 Agentic Architecture 設計。

給評審的說詞(示範)

"ThreatHunter 採用六 Agent 管線,每個 Agent 有明確的職責邊界和 Skill SOP。 我們刻意讓 Schema 驗證和 Rate Limiting 保留為確定性基礎設施, 因為「Agent 應該做需要推理的事,而不是用 LLM 做確定性邏輯」。 這個設計決策體現了我們對 Agentic Architecture 的理解: 不是所有東西都要用 AI,而是在正確的地方用 AI。"


版本:2026-04-09 | 決策依據:OpenAI Agentic System 設計原則 + HARNESS_ENGINEERING.md