用于攻击性安全知识的个人RAG系统
一个用于攻击性安全知识的个人离线 RAG 系统。导入你的笔记、实验解法、漏洞赏金报告和安全博客,然后在实际攻击中通过自然语言查询。无需云服务、无需SaaS,你的知识始终属于你。
ZETSU 将你积累的知识转化为可查询的助手。你无需再通过 grep 搜索 markdown 文件,或费力回忆哪个笔记里写有 certipy 命令——你可以自然地问:
如何利用 SeImpersonatePrivilege 提权
拿到 ADFS 访问权限后我做了什么
sliver socks5 反向代理设置
解释 ESC8 vs ESC4
它首先从你的实际笔记中检索,然后基于你记录的内容生成答案,而不是依赖通用的互联网知识。


Ctrl+M 切换。~/.zetsu/history/YYYY-MM-DD.json,可通过 /history 浏览。git clone https://github.com/chaelsoo/zetsu
cd zetsu
pip install -r requirements.txt
设置你的 API 密钥:
cp .env.example .env
# 编辑 .env 并添加你的密钥
1. 添加你的笔记
将 .md 文件放入 docs/ 目录。Notion 导出、Obsidian 笔记、博客导出——任何 markdown 格式均可。
2. 在 config.toml 中配置源
[llm]
backend = "openai"
openai_model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
[[sources]]
type = "markdown_dir"
path = "./docs"
name = "my_writeups"
extract = "farr"
enabled = true
3. 导入
python zetsu.py ingest
4. 使用
python zetsu.py tui # 终端 UI
python zetsu.py web # 浏览器访问 localhost:8000
python zetsu.py ask "如何利用 SeImpersonatePrivilege"
python zetsu.py ingest # 导入已启用的源
python zetsu.py ingest --force # 清空并重建所有内容
python zetsu.py ingest --dry-run # 估算(不进行 LLM 调用)
python zetsu.py ingest --all-sources # 启用所有源(忽略 enabled 标志)
python zetsu.py tui # 终端 UI
python zetsu.py web # Web UI
python zetsu.py ask "查询内容" # 一次性的 CLI
python zetsu.py ask "查询内容" --style concept
python zetsu.py stats # 向量库统计信息
farr: LLM 提取离散的攻击步骤,以结构化 JSON 格式输出(发现、行动、推理、结果)。最适合包含清晰攻击链的笔记。farr+narrative: 与 farr 相同,额外生成一段叙述性摘要,捕捉作者的推理过程。最适合需要关注思考过程的博客。headers: 不调用 LLM,仅按标题切分并保留原文。最适合命令参考和工具文档。在 config.toml 中配置。导入(批量提取)和查询(生成)可以使用不同的后端:
[llm] # 查询时
backend = "openai"
openai_model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
[ingest] # 导入时
backend = "openai"
openai_model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
workers = 8 # FARR 提取时的并行文件数
支持的 backend:anthropic、openai(任何兼容 OpenAI 的 API)、ollama。
[!IMPORTANT] 默认情况下 ChromaDB 在本地运行,会将完整的向量索引加载到内存中。对于大型语料库(10000+ 片段)或内存有限的机器,强烈建议将 ChromaDB 作为远程服务器运行。详见 ChromaDB server 文档。ZETSU 计划在未来支持远程模式。
在涵盖 12 个攻击性安全类别的 910 个问题上进行了评估 (ADCS、Kerberos、AD 枚举、MSSQL、Sliver C2、提权、 Web 攻击、凭证、横向移动、云/Entra ID、OPSEC、工具)。
| 指标 | 结果 |
|---|---|
| 回答问题数 | 910 / 910 (100%) |
| 包含代码/命令的答案 | 842 / 910 (93%) |
| 上下文缺失(模型承认缺少信息) | 66 / 910 (7.3%) |
| 平均检索时间 | 68ms |
贡献答案最多的源:个人 HTB 实验记录、dirkjanm 博客、shenaniganslabs 研究、HackTricks ADCS、Sliver wiki、netexec 速查表。
简单来说,你需要确保添加优质且结构化的资源供 RAG 导入。该项目 100% 专注于使用知识库,而不是依赖 LLM 的记忆或训练数据。
完整的评估数据集和结果位于 eval/。
我很快会写一篇博客介绍它的用法和效果,敬请期待。
| 按键 | 动作 |
|---|
Enter | 发送查询 |
Ctrl+M | 切换操作员/概念模式 |
Ctrl+Y | 复制上一条回复到剪贴板 |
Ctrl+L | 清除会话 |
Ctrl+C | 退出 |
/help | 显示命令 |
/stats | 向量库和历史统计 |
/history | 今天的过往查询 |
/clear | 清除会话 |
| 类型 | 适用场景 | 提取模式 |
|---|
markdown_dir | 你的笔记、实验记录 | farr |
markdown_file | 单个 markdown 文件 | farr |
url | 工具 wiki、参考页面 | headers |
atom | 带订阅源的安全博客 | farr+narrative |
| 平均总体响应时间 |
| 3.8s |