现阶段可落地架构:师傅模式 + 助手模式 + 知识库模式
0. 结论
你现在不需要重装系统。
推荐:
Windows 主系统
+ WSL2 Ubuntu
+ Docker Desktop
+ One API
+ Ollama
+ Open WebUI
+ Obsidian
+ Python 知识库处理脚本
当前硬件可跑:
GTX 1660S 6GB
16GB RAM
1TB SSD
Windows
限制:
- 本地大模型能力有限;
- 复杂分析走付费 API;
- 本地模型只做轻量摘要、分类、初步问答;
- 不上 Dify / Strix 作为第一阶段主线,避免太重。
1. 总体架构
┌──────────────────────────────┐
│ Windows 桌面层 │
│ Obsidian / Burp / 浏览器 / VSCode │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ Open WebUI │
│ 师傅模式 / 助手模式 / 知识库问答 │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ One API │
│ 本地模型 + 付费 API 统一入口 │
└───────┬───────────────┬──────┘
│ │
┌───────▼──────┐ ┌────▼─────────┐
│ Ollama 本地模型 │ │ 付费 API 模型 │
└───────┬──────┘ └────┬─────────┘
│ │
┌───────▼───────────────▼────────┐
│ 知识库处理层 │
│ 爬取 / 摘要 / 事实抽取 / 交叉验证 │
└──────────────┬─────────────────┘
│
┌──────────────▼─────────────────┐
│ Markdown 知识库 + Qdrant 向量库 │
│ Obsidian 管理,可检索,可复盘 │
└────────────────────────────────┘
2. 三个模式设计
2.1 渗透师傅模式
定位:
教你,不替你打。
功能:
- 提示思路;
- 追问你的判断依据;
- 指出遗漏;
- 给相似案例;
- 不直接给最终答案;
- 记录错漏;
- 形成学习计划;
- 靶机复盘。
适合:
学习、靶机、复盘、能力提升
系统提示词核心:
你是我的渗透测试师傅。你的目标是训练我,而不是替我完成所有操作。
优先给思路、判断依据、检查清单和相似案例。
不要直接给最终答案,除非我明确要求。
如果我给出测试步骤,你需要指出遗漏、错误和风险。
每次结束后总结我的薄弱点,并生成下一步训练建议。
所有内容只用于授权测试、靶机和合法学习环境。
2.2 渗透助手模式
定位:
直接提效。
功能:
- 直接分析结果;
- 给测试思路;
- 整理 Burp 请求;
- 分析 Nmap/Nuclei/dirsearch 输出;
- 写漏洞报告;
- 写修复建议;
- 辅助代码审计;
- 辅助生成复测说明。
适合:
授权项目、报告编写、快速分析
系统提示词核心:
你是我的渗透测试助手。请直接、简洁、可执行地回答。
优先给结论、风险点、验证方法、证据要求和修复建议。
如果涉及真实目标,必须提醒我确认授权范围、控制并发、避免破坏性操作。
高风险动作只给建议,不自动执行。
输出尽量结构化,便于写入报告。
2.3 知识库模式
定位:
整理、交叉验证、沉淀文档。
功能:
- 收集多个来源;
- 提取漏洞事实;
- 识别相同漏洞;
- 比对版本、环境、利用条件;
- 找冲突点;
- 评分可信度;
- 生成整理后的 Markdown 文档;
- 入 Obsidian 知识库。
适合:
长期积累自己的安全知识体系
系统提示词核心:
你是我的安全知识库整理助手。
你需要从多个来源中提取事实,而不是简单总结。
对同一漏洞或技术结论,需要交叉验证来源是否一致。
必须区分:已验证事实、来源推测、冲突信息、待验证点。
最终输出 Markdown 文档,包含证据表、可信度评分、可复现条件和参考来源。
3. 目录规划
在 Windows 建议:
D:\AI-Pentest\
├── kb\ # 最终 Markdown 知识库
│ ├── web\
│ ├── cve\
│ ├── tools\
│ ├── labs\
│ ├── reports\
│ └── playbooks\
├── raw_sources\ # 原始抓取内容
├── processed\ # 清洗后的正文
├── evidence\ # 证据矩阵、facts.json
├── projects\ # 授权项目资料,需脱敏
├── logs\ # AI 使用日志
├── scripts\ # Python 脚本
├── docker\ # docker-compose
└── models\ # 本地模型缓存,可选
4. Windows 环境准备
4.1 启用 WSL2
PowerShell 管理员执行:
wsl --install -d Ubuntu-22.04
重启后进入 Ubuntu。
检查:
wsl -l -v
应看到:
Ubuntu-22.04 Running 2
4.2 安装 Docker Desktop
安装 Docker Desktop for Windows。
设置:
Settings
→ Resources
→ WSL Integration
→ Enable integration with Ubuntu-22.04
建议 Docker 资源:
CPU: 4 cores
Memory: 6-8GB
Swap: 4-8GB
Disk: 放在 1TB SSD
4.3 配置 WSL 内存限制
Windows 用户目录创建:
C:\Users\你的用户名\.wslconfig
内容:
[wsl2]
memory=8GB
processors=4
swap=8GB
localhostForwarding=true
然后 PowerShell:
wsl --shutdown
重新打开 Ubuntu。
5. 安装 Ollama
建议直接装 Windows 版 Ollama。
安装后拉模型:
ollama pull qwen2.5-coder:3b
ollama pull qwen2.5:7b
你的 1660S 6GB 优先用:
qwen2.5-coder:3b
7B 可以测试,但不要期待很快。
确认:
ollama list
ollama run qwen2.5-coder:3b
Ollama 默认接口:
http://localhost:11434
6. Docker 部署核心服务
进入 WSL:
mkdir -p /mnt/d/AI-Pentest/docker
cd /mnt/d/AI-Pentest/docker
创建 docker-compose.yml:
services:
one-api:
image: justsong/one-api:latest
container_name: one-api
restart: always
ports:
- "3000:3000"
environment:
- TZ=Asia/Shanghai
volumes:
- /mnt/d/AI-Pentest/docker_data/one-api:/data
extra_hosts:
- "host.docker.internal:host-gateway"
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3001:8080"
environment:
- WEBUI_SECRET_KEY=change-this-secret
- OPENAI_API_BASE_URL=http://one-api:3000/v1
- OPENAI_API_KEY=sk-from-one-api
- OLLAMA_BASE_URL=http://host.docker.internal:11434
volumes:
- /mnt/d/AI-Pentest/docker_data/open-webui:/app/backend/data
depends_on:
- one-api
extra_hosts:
- "host.docker.internal:host-gateway"
qdrant:
image: qdrant/qdrant:latest
container_name: qdrant
restart: always
ports:
- "6333:6333"
- "6334:6334"
volumes:
- /mnt/d/AI-Pentest/docker_data/qdrant:/qdrant/storage
postgres:
image: pgvector/pgvector:pg16
container_name: pentest-postgres
restart: always
ports:
- "5432:5432"
environment:
- POSTGRES_USER=pentest
- POSTGRES_PASSWORD=change-this-password
- POSTGRES_DB=pentest_kb
volumes:
- /mnt/d/AI-Pentest/docker_data/postgres:/var/lib/postgresql/data
启动:
docker compose up -d
查看:
docker ps
访问:
One API: http://localhost:3000
Open WebUI: http://localhost:3001
Qdrant: http://localhost:6333/dashboard
7. One API 配置
7.1 登录 One API
默认:
账号: root
密码: 123456
登录后立刻改密码。
7.2 添加本地 Ollama 渠道
在 One API 中添加渠道:
类型: OpenAI 兼容 / Ollama
地址: http://host.docker.internal:11434/v1
API Key: ollama
模型:
qwen2.5-coder:3b
qwen2.5:7b
如果 One API 的 Ollama 类型不稳定,就用 OpenAI 兼容方式。
7.3 添加付费 API 渠道
例如 DeepSeek / Qwen / OpenAI-compatible:
渠道名: deepseek
Base URL: 对方 API 地址
API Key: 你的 key
模型: deepseek-chat / deepseek-reasoner 等
建议分组:
local 本地模型
cheap 低价模型
strong 强模型
7.4 创建访问令牌
在 One API 创建 Token:
名称: open-webui
额度: 先设小额度
模型权限: 允许 local / cheap / strong
复制 token,填入 Open WebUI 的 OPENAI_API_KEY。
修改 compose 后重启:
docker compose down
docker compose up -d
8. Open WebUI 配置三个模式
进入:
http://localhost:3001
注册管理员账号。
创建三个自定义助手或三个系统提示词。
8.1 师傅模式 Prompt
你是我的渗透测试师傅。
目标:
1. 帮我提升渗透测试能力;
2. 不直接替我完成所有步骤;
3. 优先提示思路、排查路径、判断依据;
4. 指出我的错误、遗漏和风险;
5. 结合知识库给相似案例;
6. 记录我的薄弱点并生成训练计划。
规则:
- 默认不直接给最终 payload 或完整答案,除非我明确说“直接给答案”。
- 如果我提供扫描结果,你先分析可能方向,再给检查清单。
- 如果是真实项目,必须提醒我确认授权范围、控制风险。
- 不建议破坏性操作,不建议无授权测试。
- 输出结构:结论、思路、检查项、相似案例、我的遗漏、下一步训练。
8.2 助手模式 Prompt
你是我的渗透测试助手。
目标:
1. 直接提高我的工作效率;
2. 快速分析工具输出;
3. 快速整理漏洞报告;
4. 给出清晰验证步骤、证据要求和修复建议。
规则:
- 回答简洁直接。
- 优先输出可执行检查清单。
- 对真实项目,只允许在授权范围内讨论。
- 高风险动作必须标记“需人工确认”。
- 输出结构:结论、风险点、验证方法、证据、修复建议、报告草稿。
8.3 知识库模式 Prompt
你是我的安全知识库整理助手。
目标:
1. 整理公开漏洞案例、靶机复盘、项目经验;
2. 对多个来源进行交叉验证;
3. 区分事实、推测、冲突点和待验证点;
4. 形成结构化 Markdown 文档。
规则:
- 不要只总结,要提取证据。
- 同一漏洞多个来源必须做证据表。
- 标记影响版本、环境、利用条件、PoC 可靠性、修复方案。
- 给可信度评分。
- 输出结构:结论、证据表、一致点、冲突点、可复现条件、待验证点、整理文档。
9. 知识库交叉验证落地方案
9.1 安装 Python 环境
WSL:
cd /mnt/d/AI-Pentest/scripts
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4 trafilatura markdownify pyyaml pydantic openai rich pandas
9.2 输入文件格式
创建:
D:\AI-Pentest\scripts\sources.yaml
示例:
topic: "某 CMS 文件上传漏洞"
vuln_id: "cms-upload-001"
sources:
- title: "博客 A 分析"
url: "https://example.com/a"
type: "blog"
- title: "博客 B 复现"
url: "https://example.com/b"
type: "blog"
- title: "GitHub PoC"
url: "https://github.com/example/poc"
type: "poc"
9.3 知识库处理流程
sources.yaml
↓
fetch_sources.py
抓取网页正文
↓
extract_facts.py
提取结构化事实
↓
cross_validate.py
交叉验证
↓
generate_doc.py
生成 Markdown
↓
写入 kb/
9.4 事实抽取字段
每个来源抽取成:
{
"source_title": "",
"source_url": "",
"vuln_name": "",
"cve": "",
"affected_product": "",
"affected_version": "",
"environment": "",
"vuln_type": "",
"root_cause": "",
"precondition": "",
"poc_summary": "",
"exploitability": "",
"impact": "",
"fix": "",
"evidence": [],
"confidence": 0
}
9.5 最终 Markdown 模板
# 漏洞名称
## 1. 最终结论
- 可信度:
- 是否可复现:
- 影响产品:
- 影响版本:
- 漏洞类型:
- 利用条件:
- 风险等级:
## 2. 多来源证据表
| 来源 | 影响版本 | 环境 | PoC | 结论 | 可信度 |
|---|---|---|---|---|---|
## 3. 一致信息
## 4. 冲突信息
## 5. 可复现条件
## 6. 待验证点
## 7. 检测思路
## 8. 修复建议
## 9. 我的理解
## 10. 标签
#漏洞类型 #组件 #CVE #待复现
## 11. 来源
10. 最小版 Python 脚本
10.1 抓取正文 fetch_sources.py
import os
import yaml
import trafilatura
import requests
BASE = "/mnt/d/AI-Pentest"
RAW_DIR = f"{BASE}/raw_sources"
os.makedirs(RAW_DIR, exist_ok=True)
with open(f"{BASE}/scripts/sources.yaml", "r", encoding="utf-8") as f:
cfg = yaml.safe_load(f)
for i, src in enumerate(cfg["sources"], 1):
url = src["url"]
print(f"[+] Fetching {url}")
html = requests.get(url, timeout=20, headers={
"User-Agent": "Mozilla/5.0"
}).text
text = trafilatura.extract(html) or ""
filename = f"{cfg['vuln_id']}_{i}.md"
path = os.path.join(RAW_DIR, filename)
with open(path, "w", encoding="utf-8") as f:
f.write(f"# {src['title']}\n\n")
f.write(f"Source: {url}\n\n")
f.write(text)
print(f"[+] Saved {path}")
运行:
source /mnt/d/AI-Pentest/scripts/venv/bin/activate
python /mnt/d/AI-Pentest/scripts/fetch_sources.py
10.2 事实抽取和交叉验证
这一步建议调用 One API。
后续可以写脚本,但 MVP 阶段可以先手动:
- 把多个原文导入 Open WebUI;
- 选择“知识库模式”;
- 输入:
请对这些来源进行交叉验证,提取事实,生成证据表和最终 Markdown。
等流程稳定后,再脚本化。
11. Obsidian 使用方式
安装 Obsidian。
打开目录:
D:\AI-Pentest\kb
建议插件:
Dataview
Templater
Omnisearch
Advanced Tables
Excalidraw
Git
知识库目录:
kb\
├── 00_Index\
├── 01_Web漏洞\
├── 02_CVE\
├── 03_工具\
├── 04_靶机复盘\
├── 05_项目经验\
├── 06_报告模板\
├── 07_错题本\
└── 08_交叉验证文档\
12. 日志记录
每次 AI 使用记录成 Markdown。
目录:
D:\AI-Pentest\logs\
模板:
# AI 使用记录
- 时间:
- 模式:师傅 / 助手 / 知识库
- 主题:
- 使用模型:
- 输入材料:
- 输出结论:
- 是否采纳:
- 错误/遗漏:
- 后续动作:
- 是否入库:
这部分后续可以自动化。
13. 当前硬件运行建议
13.1 本地模型建议
优先:
qwen2.5-coder:3b
可测试:
qwen2.5:7b
llama3.1:8b
deepseek-r1:7b
但 7B/8B 在 6GB 显存下可能慢。
13.2 模型分工
本地模型:
- 简单摘要
- 标签分类
- 轻量问答
- 敏感资料初步处理
付费 API:
- 交叉验证
- 复杂推理
- 长文档分析
- 报告润色
- 教学方案
14. 第一阶段不要做的事
暂不做:
Dify 全量工作流
Strix 全自动渗透
真实项目自动执行命令
大规模爬虫
模型微调
重装系统
升级硬件
原因:
当前目标是跑通个人工作台,不是搭大型平台。
15. 最小落地清单
按这个顺序做:
1. 保留 Windows
2. 安装 WSL2 Ubuntu
3. 安装 Docker Desktop
4. 安装 Windows 版 Ollama
5. 拉 qwen2.5-coder:3b
6. Docker 部署 One API
7. Docker 部署 Open WebUI
8. Docker 部署 Qdrant
9. 配置 One API 接 Ollama 和付费 API
10. Open WebUI 建三个模式
11. Obsidian 打开 D:\AI-Pentest\kb
12. 写 sources.yaml
13. 跑 fetch_sources.py
14. 用知识库模式生成第一篇交叉验证文档
15. 用师傅模式复盘第一台靶机
16. 用助手模式整理第一份报告
16. 最终建议
现阶段最稳架构:
Open WebUI:交互入口
One API:模型网关
Ollama:本地轻量模型
付费 API:复杂分析
Obsidian:长期知识库
Python 脚本:爬取、整理、交叉验证
Qdrant:后续向量检索
你当前机器能跑。
先把这三个闭环跑通:
师傅模式:能教你
助手模式:能提效
知识库模式:能沉淀和交叉验证
跑通后,再考虑 Dify、Strix、自动化工具链和显卡升级。