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*