File size: 4,259 Bytes
c8d30bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# ThreatHunter 快速開始指南

> **版本**:v1.0  
> **日期**:2026-04-06  
> **適用對象**:所有團隊成員

---

## 1. 環境設定

### 1.1 安裝依賴

```bash
pip install -r requirements.txt
```

### 1.2 設定 API Key

```bash
# 複製範例檔案
cp .env.example .env

# 編輯 .env,填入你的 API Key
```

**必要 API Key:**

| 變數 | 用途 | 取得方式 |
|---|---|---|
| `OPENROUTER_API_KEY` | LLM 推理(推薦) | https://openrouter.ai/ |
| `NVD_API_KEY` | NVD 漏洞查詢 | https://nvd.nist.gov/developers/request-an-api-key |
| `OTX_API_KEY` | OTX 威脅情報 | https://otx.alienvault.com/ |

**選用 API Key:**

| 變數 | 用途 |
|---|---|
| `OPENAI_API_KEY` | LLM 備案(gpt-4o-mini) |
| `GITHUB_TOKEN` | Exploit 搜尋 |
| `VLLM_BASE_URL` | 比賽用 vLLM 端點 |

### 1.3 驗證設定

```bash
python -c "from config import validate_api_keys; validate_api_keys()"
```

---

## 2. 第一次執行

### 2.1 基本掃描

```bash
python main.py "Django 4.2, Redis 7.0"
```

### 2.2 指定技術堆疊

```bash
python main.py "nginx 1.24, postgresql 16, flask 3.0"
```

### 2.3 預設掃描

```bash
python main.py
# 等同於:python main.py "Django 4.2, Redis 7.0, PostgreSQL 16"
```

---

## 3. 功能開關

### 3.1 開啟 Critic 辯論

```bash
# Windows PowerShell
$env:ENABLE_CRITIC="true"; python main.py "Django 4.2"

# Linux/Mac
ENABLE_CRITIC=true python main.py "Django 4.2"
```

### 3.2 切換 LLM 供應商

```bash
# 使用 OpenAI(備案)
$env:LLM_PROVIDER="openai"; python main.py "Django 4.2"

# 使用 vLLM(比賽用)
$env:LLM_PROVIDER="vllm"; $env:VLLM_BASE_URL="http://your-vllm-endpoint:8000"; python main.py "Django 4.2"
```

---

## 4. 運行測試

```bash
# 全套測試
python -m pytest tests/ -v

# 單一模組測試
python -m pytest tests/test_nvd_tool.py -v
python -m pytest tests/test_pipeline_integration.py -v

# Harness 架構驗證
python harness/constraints/arch_linter.py
python harness/entropy/entropy_scanner.py
```

---

## 5. 輸出格式

執行成功後,終端機會輸出完整 JSON:

```json
{
  "executive_summary": "1 actively exploited chain detected...",
  "actions": {
    "urgent": [{"cve_id": "...", "action": "...", "command": "..."}],
    "important": [...],
    "resolved": []
  },
  "risk_score": 85,
  "risk_trend": "+10",
  "pipeline_meta": {
    "pipeline_version": "3.0",
    "stages_completed": 4,
    "stages_detail": {
      "scout": {"status": "SUCCESS", "vuln_count": 9},
      "analyst": {"status": "SUCCESS", "risk_score": 85},
      "critic": {"status": "SUCCESS", "verdict": "MAINTAIN"},
      "advisor": {"status": "SUCCESS", "urgent_count": 2}
    },
    "critic_verdict": "MAINTAIN",
    "critic_score": 80.5,
    "duration_seconds": 45.2,
    "degradation": {"level": 1, "label": "⚡ 全速運行"}
  }
}
```

---

## 6. 常見問題

### Q1: 出現 "未配置任何 LLM 供應商"

**解法**:在 `.env` 中設定 `OPENROUTER_API_KEY`### Q2: Scout 回傳 0 個漏洞

**可能原因**- NVD API Key 未設定或無效
- 套件名稱不正確(使用 `package_map.json` 對照)
- 網路連線問題

**解法**:檢查 `data/nvd_cache/` 是否有離線快取。

### Q3: LLM 回應太慢

**解法**- 檢查 `LLM_RPM` 設定(預設 20)
- 確認使用的是 `:free` 模型還是付費模型
- 考慮切換到 `gpt-4o-mini` 備案

### Q4: 記憶檔案遺失

**解法**:建立空的 JSON 檔案:
```bash
echo {} > memory/scout_memory.json
echo {} > memory/analyst_memory.json
echo {} > memory/advisor_memory.json
```

---

## 7. 架構一覽

```
main.py (Pipeline 控制器)
  ├── Stage 1: Scout    → agents/scout.py    → NVD + OTX 查詢
  ├── Stage 2: Analyst  → agents/analyst.py  → KEV + Exploit + Chain 分析
  ├── Stage 3: Critic   → agents/critic.py   → 對抗式辯論(可插拔)
  └── Stage 4: Advisor  → agents/advisor.py  → 行動報告生成
```

每個 Stage 內部使用 CrewAI Crew 執行,Stage 之間由 Python 程式碼串接,確保:
- 錯誤隔離(一個 Stage 失敗不影響其他)
- Graceful Degradation(降級路徑)
- 原子步驟日誌(StepLogger)

---

*更多細節請參考 `docs/pipeline_guide.md`*