labrat-0/RatVault

GitHub: labrat-0/RatVault

基于多 LLM 驱动的 Obsidian 知识库管理工具,自动将原始笔记转化为结构化、可检索的安全运营知识库。

Stars: 2 | Forks: 0

RatVault Logo

RatVault 🐀

🚧🧪🧪TRIALS ARE ONGOING | SOME PARTS NOT WORKING🧪🧪🚧

A multi-LLM knowledge vault — drop notes in, chat with them.

Inspired by Andrej Karpathy's structured thinking on reproducible workflows. Warm gratitude for the insights.

## 60 秒内本地运行 **需要 Python 3.10+** ``` # 1. Clone 并安装 git clone https://github.com/labrat-0/RatVault.git cd RatVault pip install -r requirements.txt # 2. 启动 dashboard python ingest.py --serve ``` 打开 **http://localhost:8055** —— 搞定。 **想用 LLM 与你的笔记聊天吗?** ``` # Option A — 本地 (无需 API key,免费): # 从 https://ollama.ai 安装 Ollama,然后: ollama pull mistral python ingest.py --setup # choose: ollama → mistral:7b-instruct # Option B — OpenAI / Anthropic / OpenRouter: python ingest.py --setup # follow the wizard ``` **添加你的第一条笔记:** ``` # 将任何 .md 或 .pdf 文件放入 inbox/,然后: python ingest.py # process → saves to Notes/ python ingest.py --dry-run # preview without writing ``` RatVault 是一个灵活的开源知识管理系统,能够接收原始笔记,使用任何 LLM 提供商对其进行处理,并将它们组织成一个精美的原生 Obsidian 库。 ## ✨ 功能 - 🤖 **多 LLM 支持** — 支持 OpenAI、Anthropic (Claude)、Ollama (本地)、OpenRouter 等 - 📝 **原始 → 结构化** — 从原始 Markdown 自动生成摘要、标签和交叉引用 - 🖼️ **媒体保留** — 自动处理图像、视频和媒体文件 - 🌐 **PWA 仪表板** — 支持离线工作的 Web 界面(无需构建步骤) - 🔭 **Obsidian 原生** — 库结构直接在 Obsidian 中工作,并支持 Dataview - ⚡ **零设置** — 一条命令即可启动:`python ingest.py --setup` ## 📖 配置 ### 提供商设置 选择以下方法之一: #### 选项 A:`.env` 文件 ``` cp .env.example .env # 使用你的设置编辑 .env ``` **OpenAI:** ``` RATVAULT_PROVIDER=openai RATVAULT_MODEL=gpt-4o-mini OPENAI_API_KEY=sk-... ``` **Anthropic (Claude):** ``` RATVAULT_PROVIDER=anthropic RATVAULT_MODEL=claude-3-haiku-20240307 ANTHROPIC_API_KEY=sk-ant-... ``` **Ollama (本地):** ``` RATVAULT_PROVIDER=ollama RATVAULT_MODEL=llama3.2 OLLAMA_BASE_URL=http://localhost:11434 ``` **OpenRouter:** ``` RATVAULT_PROVIDER=openrouter RATVAULT_MODEL=anthropic/claude-3-haiku OPENROUTER_API_KEY=sk-or-... ``` #### 选项 B:`config.yaml` ``` cp config.yaml.example config.yaml # 编辑 config.yaml ``` #### 选项 C:交互式向导 ``` python ingest.py --setup ``` ## 💻 使用 ### 基础导入 ``` # 预览更改而不写入 python ingest.py --dry-run # 处理来自 inbox/ 文件夹的文件 python ingest.py # 即使已 ingest 也强制重新处理 python ingest.py --force # 指定自定义输入目录 python ingest.py /path/to/files # 临时切换 provider python ingest.py --provider anthropic --model claude-3-haiku ``` ### 库结构 ``` RatVault/ ├── inbox/ # Drop raw files here (.md, .txt, .pdf) ├── Notes/ # Processed entries (Obsidian vault) │ ├── entry1.md │ └── entry2.md ├── assets/ │ ├── images/ # Extracted images │ └── videos/ # Extracted videos ├── Templates/ # Obsidian templates ├── .obsidian/ # Obsidian configuration ├── dashboard/ # Web dashboard (PWA) ├── pipeline/ # Ingest pipeline (config, providers, parser, writer) ├── serve.py # FastAPI backend └── ingest.py # CLI entry point ``` ### 条目格式 每个处理后的条目都是带有 YAML frontmatter 的 Markdown: ``` --- title: "My Research Note" slug: "my-research-note" created: "2026-04-25" ingested_at: "2026-04-25T14:32:11Z" summary: "3-sentence summary auto-generated by LLM" tags: [research, ml, notes] category: research difficulty: intermediate key_concepts: [concept1, concept2] questions_answered: [question1, question2] source_file: "inbox/raw-note.md" provider: claude model: "claude-3-haiku-20240307" cross_refs: ["[[Related Note]]"] assets: - {type: image, path: "assets/images/slug/diagram.png"} status: active type: note --- # 我的研究笔记 Content here... ``` ### 🌐 Web 仪表板 运行 `python ingest.py --serve` 并打开 http://localhost:8055 **功能:** - **🔍 搜索** — 对条目和标签进行全文搜索 - **📅 时间线** — 按日期浏览条目(最新优先) - **🖼️ 画廊** — 查看所有提取的图像和视频 - **📊 分析** — 图表:每日条目数、标签云、提供商使用情况 - **⚙️ 设置** — 更改提供商、模型和 API 密钥 - **📲 可安装** — 作为 PWA 添加到主屏幕(支持离线) ## 🏗️ 工作原理 ### 导入管道 1. **发现** — 扫描 `inbox/` 中的 `.md`、`.txt`、`.pdf` 文件 2. **解析** — 提取标题,剥离现有 frontmatter 3. **媒体提取** — 将图像/视频复制到 `assets/`,重写链接 - 本地图像:`![alt](https://raw.githubusercontent.com/labrat-0/RatVault/main/path)` → 复制到 `assets/images/{slug}/` - YouTube/Vimeo URL:包裹在 `> [!video]` 标注中 - 视频文件:复制到 `assets/videos/{slug}/` 4. **LLM 丰富** — 调用你配置的 LLM 以生成: - 自动标题(如未检测到) - 摘要(2-3 句话) - 标签(5-10 个 kebab-case 格式) - 分类 (security|development|research|personal|reference|workflow) - 关键概念和解答的问题 5. **写入** — 将带有 YAML frontmatter 的 Markdown 保存到 `Notes/` 6. **状态跟踪** — 记住已处理的文件以避免重复处理 所有文件如果已处理过将被跳过(除非使用 `--force`)。 ### 多 LLM 抽象 `providers.py` 通过统一接口支持 4 个 LLM 提供商: ``` response = call_llm(prompt, system_message, config) # 返回:LLMResponse(content, model, provider, tokens, duration) ``` 重试逻辑:尝试 3 次,采用指数退避(1s → 2s → 4s) ## 📚 Obsidian 集成 库的根目录是一个有效的 Obsidian 库。只需打开它: **文件** → **将文件夹打开为库** → 选择仓库根目录 ### 推荐插件 已配置: - **Dataview** — 将条目查询为表格/列表 - **Templater** — 新笔记的模板系统 - **Obsidian Git** — 自动提交更改 - **Calendar** — 按日期浏览 - **QuickAdd** — 常见操作的快捷方式 ### Dataview 示例 列出所有来自 Claude 的条目: ``` TABLE summary, tags FROM "Notes" WHERE provider = "anthropic" SORT ingested_at DESC ``` 查找草稿条目: ``` LIST FROM "Notes" WHERE status = "draft" SORT created DESC ``` ## 🔒 API 密钥安全 - API 密钥存储在 `.env` 或 `config.yaml` 中 - 两个文件都在 `.gitignore` 中 —— 它们不会被提交到 git - Web 仪表板 (`serve.py`) 会屏蔽 API 密钥输入 - 本地 Ollama 不需要 API 密钥 ## ❓ 常见问题 **问:导入挂起或很慢** 答:检查你的 LLM 提供商是否正在运行。对于 Ollama:`ollama serve`。对于 OpenAI/Claude:检查你的网络连接。 **问:“inbox 中未找到文件”** 答:确保 `inbox/` 文件夹中存在 `.md`、`.txt` 或 `.pdf` 文件。文件区分大小写。 **问:图像在 Obsidian 中不显示** 答:确保相对路径正确。图像应位于 `assets/images/{slug}/` 中。检查 `> [!video]` 标注。 **问:Web 仪表板无法启动** 答:确保已安装 fastapi 和 uvicorn:`pip install fastapi uvicorn`。端口 8055 可能正在被使用;请使用 `lsof -i :8055` 检查。 ## 📄 许可证 MIT ## ❔ FAQ **我可以在没有 API 密钥的情况下使用它吗?** 可以!使用 Ollama (本地 LLM)。从 [ollama.ai](https://ollama.ai) 下载。 **我可以导入现有笔记吗?** 可以。将它们放入 `inbox/` 并运行 `python ingest.py`。 **我可以切换 LLM 提供商吗?** 可以,随时都可以。只需更改 `.env` 或 `config.yaml` 并重新运行 `ingest.py --force`。 **库数据是可移植的吗?** 是的。该库只是一些 Markdown 文件。可以在任何文本编辑器中打开、移动到另一个 Obsidian 库,或在他处使用。 **我可以将其用于生产环境吗?** RatVault 专为个人知识管理而设计。对于生产用途,请考虑自建后端或使用外部服务。 ## 🚀 获取帮助 - 浏览 `Notes/` 以查看处理后的示例条目 - 查看 `config.yaml.example` 了解所有配置选项 - 运行 `python ingest.py --help` 查看所有 CLI 标志 - 在 GitHub 上提问 issue 由 [labrat](https://ratbyte.dev) 用 🖤 制作 灵感来源于 Andrej Karpathy 的神经网络训练秘诀。
标签:AI文本处理, AI风险缓解, Anthropic, API密钥扫描, CIS基准, Claude, CVE检测, Dataview, DLL 劫持, DNS解析, LLM, LLM评估, Markdown, Mistral, Obsidian, Ollama, OpenAI, PDF处理, Petitpotam, PWA, Python, RAG, Unmanaged PE, 代码示例, 内存规避, 后端开发, 团队协作, 备忘录, 大语言模型, 安全工程, 安全模板, 安全知识库, 安全运营, 工作流引擎, 库, 应急响应, 开源项目, 扫描框架, 数据分析, 无后门, 本地大模型, 本地部署, 检索增强生成, 模板库, 知识管理, 离线应用, 私人知识库, 笔记管理, 网络安全, 自动化处理, 逆向工具, 速查表, 防御加固, 隐私保护