arn-c0de/Crawllama

GitHub: arn-c0de/Crawllama

一款基于 Ollama 的本地化 AI 研究代理,整合网络搜索、RAG 与 OSINT 工具,支持复杂的多跳推理与隐私保护情报收集。

Stars: 14 | Forks: 1

CrawlLama Logo CrawlLama

![Python 版本](https://img.shields.io/badge/python-3.11%2B-blue) ![平台](https://img.shields.io/badge/platform-Windows-lightblue) ![平台](https://img.shields.io/badge/platform-Linux-lightgrey) ![许可证](https://img.shields.io/badge/license-Non--Commercial-orange) ![状态](https://img.shields.io/badge/status-Active-success) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/arn-c0de/Crawllama) [文档](docs/README.md) | [快速入门](docs/getting-started/QUICKSTART.md) | [API 指南](docs/guides/API_USAGE.md) | [自适应跳跃](docs/getting-started/ADAPTIVE_HOPS_QUICKSTART.md) | [安全](SECURITY.md) | [更新日志](CHANGELOG.md) [项目网站](https://arn-c0de.github.io/Crawllama/) **具备 OSINT 和多跳推理能力的 AI 研究代理** 当前版本:`1.4.9`(改进与修复) `1.4.8` 版新增:[公司情报开发者文档](docs/osint/COMPANY_INTELLIGENCE.md) ## 目录 - [概述](#overview) - [功能特性](#features) - [图片](#images) - [快速入门](#quickstart) - [安装](#installation) - [使用](#usage) - [REST API](#rest-api) - [CLI 命令与选项](#cli-commands--options) - [项目结构](#project-structure) - [配置](#configuration) - [测试](#testing) - [插件开发](#plugin-development) - [技术栈](#technology-stack) - [文档](#documentation) - [路线图](#roadmap) - [性能](#performance) - [法律声明](#legal-notices) - [故障排除](#troubleshooting) - [支持与社区](#support-and-community) - [贡献](#contributing) - [许可证](#license) - [致谢](#credits) - [更多文档](#further-documentation) ## 概述 一个完全本地化、具备高级情报功能的 AI 研究代理: - OSINT 模块:电子邮件、电话和 IP 情报;社交媒体分析;高级搜索运算符 - 使用 LangGraph 进行复杂查询的多跳推理 - 基于查询复杂度的自适应代理选择(低/中/高) - 基于 FastAPI 的 REST API,便于集成 - 可扩展的插件系统 - 针对大上下文支持和异步执行的性能优化 ## 功能特性 ### 核心功能 - **自适应代理跳跃系统** – 根据查询复杂度(低/中/高)自动选择代理,基于置信度的升级,以及资源感知适应(v1.4.4 新增) - **自适应报告的 UI 设置** – 直接在交互式设置菜单中切换自适应情报报告(v1.4.4 新增) - **多跳推理** – 基于 LangGraph 的代理,具有多步骤工作流(路由 → 搜索 → 分析 → 后续 → 综合 → 批判) - **重启命令** – 无需退出程序即可重启代理 - **并行化** – 使用线程池进行多方面搜索,以提升性能 - **性能优化** – 支持 RTX 3080 的 16k 上下文;异步和并行处理 - **多源网络搜索** – DuckDuckGo、Brave Search、Serper API,支持回退机制 - **Wikipedia 集成** – 专用 Wikipedia 搜索(德语/英语) - **高级 RAG 系统** – 批处理、多查询和混合搜索([RAG 分析](docs/guides/RAG_ANALYSIS.md)) - **智能缓存** – 基于 TTL 的哈希键、LRU 淘汰机制,以及可配置的最大大小(500MB) - **工具编排** – 通过 LLM 自动选择工具 - **交互式设置菜单** – 实时配置 LLM、搜索、RAG 和 OSINT - **上下文使用跟踪器** – 使用 tiktoken 实时监控 token 使用情况 - **健康监控仪表板** – 具有丰富 UI 的交互式系统监控 - **延迟加载** – 按需加载工具和插件 - **异步操作** – 使用 aiohttp 进行并行 HTTP 请求 - **资源监控** – 内存使用率、性能跟踪和自动垃圾回收 - **FastAPI REST API** – 8 个以上端点,带自动文档(`/query`、`/plugins`、`/stats`、`/health`)(参见 `app.py`) - **插件系统** – 动态加载和卸载插件 - **增强型 CLI** – Rich 格式化和 Markdown 输出 - **安装脚本** – `setup.bat`、`setup.sh`,支持自动配置 - 可选云端 LLM 支持 ### OSINT 功能 - **高级搜索运算符** – `site:`、`inurl:`、`intext:`、`filetype:`、`email:`、`phone:`、`ip:` - **电子邮件情报** – 验证、MX 记录、一次性邮箱检测和变体 - **电话情报** – 验证、运营商查询、国家检测和格式化 - **持久化存储** – 在 `clear` 操作后依然保留;存储电子邮件、电话、IP、用户名、域名和笔记 - **存储 CRUD** – 使用 `forget` 命令的完整 CRUD 功能 - **批处理** – 同时分析多个电子邮件或电话并生成汇总统计数据 - **IP 情报** – IPv4/IPv6 分析、地理位置、ISP 信息、安全信誉和 VPN 检测 - **社交情报** – 支持 12 个平台(GitHub、LinkedIn、Twitter、Instagram、Facebook、YouTube、Reddit、Pinterest、TikTok、Snapchat、Discord、Steam) - **AI 查询增强** – 查询变体、运算符建议、实体检测和自动类型检测 - **合规模块** – 频率限制、使用条款、审计日志和 robots.txt 合规性 - **隐私保护** – 道德抓取、使用跟踪;无需 API 密钥 - **安全搜索过滤器** – 可配置的结果质量(关闭/适中/严格) ### 安全与性能 - **代码质量** – 重构后的专注方法,提高可维护性 - **精确 Token 计数** – 集成 tiktoken 以进行精确的 token 计数 - **智能重试逻辑** – 基于 Tenacity 的重试,带有指数退避 - **频率限制** – 1 次请求/秒及 robots.txt 检查 - **回退系统** – API 故障时的自动回退机制 - **安全配置** – 加密存储 API 密钥 - **输出验证** – 清理 LLM 输出 - **域名黑名单** – 防止访问不受欢迎的域名 - **RTX 3080 优化** – 16k 上下文支持(qwen3:8b),增加缓存大小 - **Windows 控制台兼容性** – ASCII 输出和 UTF-8 编码,提供稳健的 CLI 体验(v1.4.4 新增) - **Clear-all 命令** – 从 CLI 即时重置会话、缓存和内存(v1.4.4 新增) ## 图片 ### 健康仪表板 - 实时系统监控 具有丰富终端 UI 的实时监控,显示系统指标、组件健康状况和性能跟踪。 ![健康仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/56e2bc4c26013532.png) ### 交互式 CLI 界面 CrawlLama 的自适应智能系统,具有自动代理选择和交互式命令功能。 ![CLI 界面](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/12d36c5940013536.png) ### 测试仪表板 GUI 基于 Tkinter 的测试管理界面,具有自动测试检测和实时进度跟踪功能。 ![测试仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8feb1715ac013541.png) ## 快速入门 ## 安装 **Windows:** 1. 下载 Crawllama 2. 解压到任意文件夹(例如 `C:\Crawllama`) 3. 从 [ollama.ai/download](https://ollama.ai/download) 安装 Ollama 4. 启动 Ollama 并加载模型: ``` ollama serve ollama pull qwen3:4b ``` 5. 在 Crawllama 文件夹中: ``` setup.bat run.bat ``` **Linux/macOS:** 1. 下载并解压: ``` wget https://github.com/arn-c0de/Crawllama/archive/refs/tags/v1.4.7-preview.zip unzip v1.4.7-preview.zip cd Crawllama-v1.4.7-preview ``` 2. 安装 Ollama: ``` curl -fsSL https://ollama.ai/install.sh | sh ollama serve & ollama pull qwen3:4b ``` 3. 设置并启动: ``` chmod +x setup.sh run.sh ./setup.sh ./run.sh ``` ### 选项 1:安装脚本(推荐用于 Git 安装) **Windows:** ``` setup.bat ``` **Linux/macOS:** ``` chmod +x setup.sh ./setup.sh ``` 注意:初始安装后,您必须在安装过程中至少选择一个 LLM 模型。如果已安装模型,可以跳过此步骤——否则,必须进行选择以避免测试程序出错。 安装脚本将会: - 检查 Python 版本(3.10+) - 创建虚拟环境 - 让您选择要安装的功能和 LLM 模型(核心组件始终安装) - 安装所有选定的依赖项 - 创建必要的目录 - 将 `.env.example` 复制为 `.env` - 检查 Ollama 状态 初始安装注意事项: 当在新创建的虚拟环境中首次运行 `pip install -r requirements.txt` 时,安装所有依赖项——特别是 `torch`、`sentence-transformers` 和科学库——可能需要 **5-10 分钟**(或更长,具体取决于网络和硬件)。请等待过程完成;之后,虚拟环境即可使用。 磁盘空间注意事项:安装后(包括 `venv`),项目通常需要约 **1.2-1.5 GB** 的可用磁盘空间(v1.4 版本约为 1.23 GB)。根据操作系统、Python 包(例如较大的 PyTorch/CUDA wheels)和其他模型,该值可能会有显著差异。如果存储空间有限,请预留充足的额外空间。 模型下载大小(近似值): - `qwen3:4b` — 约 **2-4 GB**(取决于格式/量化) - `qwen3:8b` — 约 **8-12 GB** - `deepseek-r1:8b` — 约 **6-10 GB** - `llama3:7b` — 约 **6-9 GB** - `mistral:7b` — 约 **4-8 GB** - `phi3:14b` — 约 **12-20+ GB** 注意:模型大小因提供商、格式(FP16、INT8 量化等)和附加资源而异。量化模型(如 INT8)可以显著减小大小,而 FP32/FP16 或包含附加分词器/词表文件的模型则需要更多空间。如果同时使用大型模型或多个模型,请规划足够的额外存储空间。 ### 选项 2:手动安装 **前置条件:** - Python 3.10+ ([python.org](https://www.python.org/downloads/)) - Git ([git-scm.com](https://git-scm.com/downloads)) - Ollama ([ollama.ai/download](https://ollama.ai/download)) **Windows - 逐步操作:** ``` # 1. Clone repository git clone https://github.com/arn-c0de/Crawllama.git cd Crawllama # 2. 创建虚拟环境 python -m venv venv venv\Scripts\activate # 3. 安装依赖(耗时 5-10 分钟) pip install -r requirements.txt # 4. 创建目录 mkdir data\cache data\embeddings data\history logs plugins # 5. 配置 copy .env.example .env notepad .env # Optional: Add API keys # 6. 启动 Ollama(单独终端) ollama serve # 7. 加载模型(单独终端) ollama pull qwen3:4b # 8. 启动 Crawllama python main.py --interactive ``` **Linux/macOS - 逐步操作:** ``` # 1. Clone repository git clone https://github.com/arn-c0de/Crawllama.git cd Crawllama # 2. 创建虚拟环境 python3 -m venv venv source venv/bin/activate # 3. 安装依赖(耗时 5-10 分钟) pip install -r requirements.txt # 4. 创建目录 mkdir -p data/cache data/embeddings data/history logs plugins # 5. 配置 cp .env.example .env nano .env # Optional: Add API keys # 6. 安装并启动 Ollama curl -fsSL https://ollama.ai/install.sh | sh ollama serve & # 7. 加载模型 ollama pull qwen3:4b # 8. 启动 Crawllama python main.py --interactive ``` **安装故障排除:** | 问题 | 解决方案 | |---------|--------| | `python not found` | 安装 Python 3.10+:[python.org](https://www.python.org/downloads/) | | `pip install` 失败 | 运行 `python -m pip install --upgrade pip` | | `ollama: command not found` | 安装 Ollama:[ollama.ai/download](https://ollama.ai/download) | | `Connection refused`(Ollama) | 启动 Ollama:`ollama serve` | | `ModuleNotFoundError` | 激活虚拟环境:`venv\Scripts\activate`(Windows)或 `source venv/bin/activate`(Linux) | | 磁盘空间已满 | 确保至少有 5 GB 可用空间用于 venv + 模型 | ### 选项 3:Git Clone(快速安装) ``` # 1. Clone git clone https://github.com/arn-c0de/Crawllama.git cd Crawllama # 2. 虚拟环境 python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows # 3. 依赖 pip install -r requirements.txt # 4. 目录 mkdir -p data/cache data/embeddings data/history logs plugins # 5. 配置 cp .env.example .env ``` ### Ollama 设置 ``` # 安装 Ollama curl -fsSL https://ollama.ai/install.sh | sh # Linux/macOS # 或从 https://ollama.ai/download # Windows # 启动 Ollama ollama serve # 加载模型 ollama pull qwen3:4b # 备选:deepseek-r1:8b, llama3:7b, mistral ``` ## 使用 ### 1. CLI - 交互模式 ``` python main.py --interactive # 或使用安装脚本 run.bat # Windows ./run.sh # Linux/macOS ``` ``` ╭──────────────────────────────────────────────────────────────╮ │ CrawlLama - Local Search and Response Agent │ │ Commands: │ │ clear - Reset session (history + cache) │ │ clear-cache - Clear cache only │ │ save - Manually save session │ │ load - Reload session │ │ stats - Display statistics │ │ status - Show context usage │ │ settings - Show/edit settings │ │ restart - Restart agent (reload config) │ │ exit, quit - Exit │ ╰──────────────────────────────────────────────────────────────╯ What is Machine Learning? ``` **新命令:** - `status` - 显示 token 使用情况和可用上下文容量 ``` status Context Usage Tracker ┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ Source ┃ Tokens ┃ Share ┃ ┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━┩ │ Conversation │ 850 │ 8.5% │ │ Search Results │ 320 │ 3.2% │ │ Total Used │ 1,170 │ 11.7% │ │ Available │ 8,830 │ 88.3% │ │ Maximum │ 10,000 │ 100% │ └───────────────────┴───────────┴───────────┘ ``` - `settings` - 交互式配置编辑器 ``` settings Displays all settings and allows: • Category selection (llm, search, rag, cache, osint, all) • Change LLM model (qwen3:8b, deepseek-r1:8b, etc.) • Adjust temperature (0.0-1.0) • Configure max tokens (now 16,000 for RTX 3080+) • Change search region (de-de, us-en, wt-wt) • Configure OSINT max results & rate limits • Enable/disable RAG • Enable/disable cache • Save changes directly to config.json • Auto-restart after saving (optional) ``` - `restart` - 重启代理 ``` restart • Reloads config.json • Fully reinitializes agent • Optional session preservation • No session interruption ``` ### 2. 健康监控仪表板 ``` # Windows health-dashboard.bat # Linux/macOS python health-dashboard.py ``` 仪表板显示: - 系统健康状况(CPU、内存、磁盘、网络) - 组件状态(LLM、缓存、RAG、工具) - 性能指标(响应时间) - 错误日志(最后 10 个错误) - 自动刷新(每 5 秒) 交互命令: - `r` - 刷新(手动) - `c` - 清除错误日志 - `t` - 运行组件测试 - `q` - 退出 ### 3. 能搜索如何工作? 代理自动决定**何时以及如何**搜索: #### 自动决策 ``` Who is the current German Chancellor? 1. LLM analyzes: "Requires current info" 2. Agent performs web search 3. LLM processes search results 4. Agent delivers up-to-date response ``` #### 针对性搜索的搜索运算符 **OSINT 搜索运算符:** ``` # 特定领域搜索 site:github.com machine learning # Email Intelligence email:john.doe@company.com # Phone Intelligence phone:"+49 151 12345678" # IP Intelligence (NEW!) ip:8.8.8.8 192.168.1.1 # Auto-detects as IP # Social Media Intelligence (12 Platforms) username:elonmusk @microsoft github # Auto-detects as username # 文件格式搜索 site:example.com filetype:pdf # URL 过滤器 inurl:documentation python # 内容中的文本 intext:"contact email" site:example.com ``` **组合搜索:** ``` # 多重操作符 site:linkedin.com inurl:profile "software engineer" # 使用减号排除 python programming -java # OR 连接符 site:github.com OR site:gitlab.com "machine learning" ``` 有关所有功能,请参阅 **[OSINT 使用指南](docs/osint/OSINT_USAGE.md)**。 ### 4. CLI - 直接查询 ``` # 标准查询(Agent 自动决定是否需要 Web Search) python main.py "What is Python?" # Multi-Hop Reasoning(用于复杂查询) python main.py --multihop "Compare Python and JavaScript for web development" # 离线模式(无 Web Search,仅 LLM 知识) python main.py --no-web "Explain photosynthesis" # 带搜索操作符的 OSINT search python main.py "site:github.com python projects" python main.py "email:contact@example.com" # 指定特定模型 python main.py --model llama3:7b "Who discovered Einstein?" ``` ### 5. FastAPI 服务器 ``` # 启动服务器 python app.py # 或使用启动脚本 run_api.bat # Windows ./run_api.sh # Linux/macOS # 或手动 uvicorn app:app --host 0.0.0.0 --port 8000 ``` **API 文档:** http://localhost:8000/docs **可用端点:** **查询与推理:** - `POST /query` - 执行标准或多跳查询 - `POST /osint/query` - 带运算符的 OSINT 查询(email:、phone:、ip: 等) **内存存储(CRUD):** - `GET /memory` - 检索所有存储的条目 - `POST /memory/remember` - 存储值(电子邮件、电话、IP、用户名、域名、笔记) - `GET /memory/recall/{category}` - 检索类别(电子邮件、电话、IP 等) - `DELETE /memory/forget` - 删除单个值、类别或所有内容 - `GET /memory/stats` - 内存存储统计 **会话管理:** - `POST /session/clear` - 重置会话 - `POST /session/save` - 保存会话 - `POST /session/load` - 加载会话 **缓存:** - `POST /cache/clear` - 清除缓存 - `GET /cache/stats` - 缓存统计 **配置:** - `GET /config` - 检索当前配置 - `PATCH /config` - 修改配置(llm、search、rag、cache、osint) - `GET /context/status` - Token 使用情况与上下文状态 **插件与工具:** - `GET /plugins` - 列出可用插件 - `POST /plugins/{name}/load` - 加载插件 - `POST /plugins/{name}/unload` - 卸载插件 - `GET /tools` - 列出可用工具 **系统:** - `GET /health` - 健康检查(代理、监控、组件) - `GET /stats` - 系统统计(代理统计、资源、性能) - `GET /security-info` - 安全配置(频率限制、功能) **API 安全(v1.4.2+):** API 默认受多项安全功能保护: - **API 密钥认证** - 需要 X-API-Key 标头 - **频率限制** - 60 次请求/分钟(可配置) - **输入验证** - 基于 Pydantic 的验证 - **查询清理** - 防止注入攻击 - **请求日志** - 记录所有请求 - **CORS 保护** - 可配置的来源 - **受信任主机中间件** - 主机标头验证 **设置:** ``` # 1. 在 .env 中设置 API key CRAWLLAMA_API_KEY=your_secure_api_key_min_32_chars # 2. 用于本地开发(不带 API key) CRAWLLAMA_DEV_MODE=true # 3. 调整速率限制(可选) RATE_LIMIT=100 # 4. 配置 CORS origins(可选) ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8080 ``` **使用 API 密钥:** ``` # 带 API key header curl -X POST http://localhost:8000/query \ -H "Content-Type: application/json" \ -H "X-API-Key: your_api_key_here" \ -d '{"query": "test"}' # 或在开发模式下(不带 API key) export CRAWLLAMA_DEV_MODE=true python app.py ``` **示例请求:** ``` # 标准查询(Agent 根据需要自动使用 Web Search) curl -X POST http://localhost:8000/query \ -H "Content-Type: application/json" \ -d '{ "query": "What is Machine Learning?", "use_multihop": false }' # Multi-hop query(用于复杂分析) curl -X POST http://localhost:8000/query \ -H "Content-Type: application/json" \ -d '{ "query": "Compare Python and JavaScript", "use_multihop": true, "max_hops": 3 }' # 带搜索操作符的 OSINT search curl -X POST http://localhost:8000/query \ -H "Content-Type: application/json" \ -d '{ "query": "site:github.com python machine-learning", "use_multihop": false }' # 检索统计信息 curl http://localhost:8000/stats # 列出插件 curl http://localhost:8000/plugins # 加载插件 curl -X POST http://localhost:8000/plugins/example_plugin/load ``` ## CLI 命令与选项 ### 基本选项 | 选项 | 描述 | |--------|--------------| | `--interactive` | 交互模式 | | `--debug` | 启用调试日志 | | `--no-web` | 离线模式(无网络搜索) | | `--model MODEL` | 选择 Ollama 模型 | | `--stats` | 显示系统统计 | | `--clear-cache` | 清除缓存 | ### 高级选项(v1.1) | 选项 | 描述 | |--------|--------------| | `--multihop` | 启用多跳推理 | | `--max-hops N` | 最大推理步骤(1-5) | | `--api` | 启动 API 服务器 | | `--plugins` | 列出可用插件 | | `--load-plugin NAME` | 加载插件 | | `--help-extended` | 显示扩展帮助 | | `--examples` | 显示使用示例 | | `--setup-keys` | 安全设置 API 密钥 | ### 交互命令 | 命令 | 描述 | |--------|--------------| | `exit`、`quit` | 退出程序 | | `clear` | 清屏 | | `stats` | 显示统计 | | `help` | 显示帮助 | ## REST API CrawlLama 提供完整的 REST API,以便集成到自定义应用程序中。 ### 启动 API 服务器 **Windows:** ``` run_api.bat ``` **Linux/macOS:** ``` ./run_api.sh ``` 或手动: ``` uvicorn app:app --host 0.0.0.0 --port 8000 ``` ### 快速入门 **1. 启动 API 服务器** ``` run_api.bat ``` **2. 打开 API 文档** - 交互式文档:http://localhost:8000/docs - ReDoc:http://localhost:8000/redoc **3. 发送查询** ``` curl -X POST http://localhost:8000/query \ -H "X-API-Key: your-key" \ -H "Content-Type: application/json" \ -d '{"query": "What is Python?", "use_tools": false}' ``` ### 主要端点 - `POST /query` - 执行查询(带/不带网络搜索、多跳) - `GET /health` - 健康检查 - `GET /stats` - 系统统计 - `POST /memory/remember` - 存储数据(OSINT) - `GET /memory/recall/{category}` - 检索数据 - `GET /plugins` - 管理插件 - `POST /cache/clear` - 清除缓存 ### 认证 在 `.env` 中设置 API 密钥: ``` CRAWLLAMA_API_KEY=your-secret-key-here ``` 或用于测试: ``` CRAWLLAMA_DEV_MODE=true ``` ### 完整文档 [API 使用指南](docs/guides/API_USAGE.md) - 包含示例的完整 API 文档 ## 项目结构 完整且最新的项目结构可在此处找到:[docs/development/PROJECT_STRUCTURE.md](docs/development/PROJECT_STRUCTURE.md) ## 配置 ### config.json ``` { "llm": { "base_url": "http://127.0.0.1:11434", "model": "qwen3:8b", "temperature": 0.7, "max_tokens": 10000, "stream": true }, "search": { "provider": "duckduckgo", "max_results": 5, "timeout": 10 }, "rag": { "enabled": true, "batch_size": 100, "max_workers": 4 }, "cache": { "enabled": true, "ttl_hours": 24, "max_size_mb": 500, "clear_on_startup": false }, "osint": { "max_results": 20, "email_search_limit": 50, "phone_search_limit": 50, "general_osint_limit": 100 }, "multihop": { "enabled": true, "max_hops": 3, "confidence_threshold": 0.7, "enable_critique": true }, "plugins": { "example_plugin": { "enabled": true } }, "security": { "rate_limit": 1.0, "max_context_length": 8000, "check_robots_txt": true } } ``` **推荐的 `max_tokens` 设置:** | GPU/硬件 | 推荐 max_tokens | 模型 | |-------------|----------------------|--------| | RTX 3080+ (10GB+) | 10,000 - 16,000 | qwen3:8b, deepseek-r1:8b | | RTX 3060/3070 (8GB) | 6,000 - 8,000 | qwen3:4b, llama3:7b | | 仅 CPU | 2,000 - 4,000 | qwen3:4b | **提示:** 使用 `status` 命令实时监控您的 token 使用情况! ### .env(可选) ``` # API Keys(可选) BRAVE_API_KEY=your_brave_api_key SERPER_API_KEY=your_serper_api_key # 代理(可选) HTTP_PROXY=http://proxy:port HTTPS_PROXY=https://proxy:port ``` ## 测试 ``` # 所有测试 pytest tests/ -v # 带覆盖率 pytest --cov=core --cov=tools --cov=utils tests/ # 特定测试 pytest tests/test_multihop_reasoning.py -v pytest tests/test_error_simulation.py -v # 带调试输出 pytest tests/ -v --log-cli-level=INFO ``` ## 插件开发 ### 创建一个简单的插件 ``` # plugins/my_plugin.py from core.plugin_manager import Plugin, PluginMetadata class MyPlugin(Plugin): def get_metadata(self) -> PluginMetadata: return PluginMetadata( name="MyPlugin", version="1.0.0", description="My custom plugin", author="Your Name", dependencies=[] ) def get_tools(self): return [self.my_tool] def my_tool(self, input: str) -> str: return f"Processed: {input}" ``` **详见:** [插件教程](docs/guides/PLUGIN_TUTORIAL.md) ## 技术栈 ### 核心 - **LLM**:Ollama(qwen3:4b、deepseek-r1:8b、llama3、mistral) - **编排**:LangGraph(多跳推理) - **网络搜索**:duckduckgo-search、Brave API、Serper API - **RAG**:ChromaDB + Sentence Transformers ### 后端 - **API**:FastAPI + Uvicorn - **数据库**:SQLite(会话) - **异步**:aiohttp、asyncio - **监控**:psutil ### 工具 - **HTML 解析**:BeautifulSoup4 - **CLI**:Rich(格式化) - **重试**:Tenacity - **安全**:cryptography ### 开发 - **测试**:pytest、pytest-mock、pytest-cov - **CI/CD**:GitHub Actions(计划中) ## 文档 ### 用户指南 - [安装指南](docs/getting-started/INSTALLATION.md) - 详细安装说明 - [LangGraph 指南](docs/guides/LANGGRAPH_GUIDE.md) - 多跳推理 - [插件教程](docs/guides/PLUGIN_TUTORIAL.md) - 插件开发 - [健康监控](docs/health/HEALTH_MONITORING.md) - 系统监控 ### 开发者文档 - [项目结构](docs/development/PROJECT_STRUCTURE.md) - 项目概览 - `docs/development/RELEASE_PROCESS.md` - 发布流程(计划中/维护者说明) - 测试 - 有关示例,请参阅 `tests/` ### API 文档 - Swagger UI:http://localhost:8000/docs - ReDoc:http://localhost:8000/redoc ## 路线图 ### 第一阶段:核心功能(已完成) - Ollama 集成 - 网络搜索(DuckDuckGo) - 工具编排 - 基础 RAG 与缓存 - 使用 Rich 的 CLI ### 第二阶段:稳健性(已完成) - 回退系统 - 使用 tenacity 的重试逻辑 - 频率限制与 robots.txt - 域名黑名单 - 带代理支持的安全获取 - 多源网络搜索 - 全面测试(覆盖率 80%+) ### 第三阶段:智能化(已完成 - v1.1) - 使用 LangGraph 的多跳推理 - RAG 优化(批处理、多查询、混合) - 并行化 - 工具/插件的延迟加载 - 异步 HTTP 操作 - 内存与性能监控 ### 第四阶段:生产就绪(已完成 - v1.1) - FastAPI REST API - 多用户支持 - 插件系统 - 增强型 CLI - 安装脚本 - Systemd 服务 - 全面文档 ### 第五阶段:未来(计划中) - [] GUI(Streamlit/Gradio) - [] GraphQL API - [] 用于生产环境的 Redis 缓存 - [] Kubernetes 部署 - [] 监控仪表板 - [] 多语言支持 - [] 语音界面 ## 贡献 欢迎贡献! **开发工作流:** 1. Fork 本仓库 2. 创建功能分支(`git checkout -b feature/amazing-feature`) 3. 提交更改(`git commit -m 'Add amazing feature'`) 4. 推送到分支(`git push origin feature/amazing-feature`) 5. 创建 Pull Request **编码规范:** - 符合 PEP8 规范 - 使用类型提示 - 为所有函数编写文档字符串 - 为新功能编写测试 ## 性能 ### 基准测试(基于 i7-8700K,32GB RAM) | 操作 | 平均值 | 备注 | |-----------|--------------|----------| | 标准查询 | 2-5s | 无网络搜索 | | 带网络搜索的查询 | 5-10s | 3-5 个结果 | | 多跳(3 跳) | 15-30s | 复杂 | | RAG 搜索 | <1s | 5 个结果 | | API 请求 | <100ms | 无工具 | ### 资源占用 - **内存**:200-500 MB(标准),500-800 MB(含 RAG) - **CPU**:10-30%(空闲),50-80%(活动) - **磁盘**:~100 MB(代码),可变(缓存/嵌入) ## 法律声明 ### 网络抓取 - 遵守 `robots.txt` - 频率限制(默认 1 次请求/秒) - 可识别的用户代理 - 用户有责任遵守当地法律法规 ### 数据隐私 - 所有数据均在本地处理 - 无云服务 - 完全控制日志/缓存 - 会话数据加密(可选) ### API 密钥 - Brave Search API:[brave.com/search/api](https://brave.com/search/api) - Serper API:[serper.dev](https://serper.dev) ## 故障排除 ### Ollama 无法连接 ``` # 检查状态 curl http://127.0.0.1:11434/api/tags # 启动 Ollama ollama serve ``` ### 导入错误 ``` # 重装依赖 pip install -r requirements.txt # 或重新运行安装 ./setup.sh # or setup.bat ``` ### ChromaDB 错误 ``` # 删除 Embeddings rm -rf data/embeddings/ # 重启 python main.py ``` ### API 频率限制 ``` # 在 config.json 中调整 "security": { "rate_limit": 2.0 # 2 req/s } ``` ## 支持与社区 - **问题反馈**:[GitHub Issues](https://github.com/arn-c0de/Crawllama/issues) - **支持**:[crawllama.support@protonmail.com](mailto:crawllama.support@protonmail.com) - **直接联系**:[arn-c0de@protonmail.com](mailto:arn-c0de@protonmail.com) - **安全/泄露**:[crawllama.support@protonmail.com](mailto:crawllama.support@protonmail.com)(通过 Proton Mail 加密) ## 许可证 **Crawllama 许可证(非商业)** – 免费用于使用和开发,但不允许商业销售。 **允许:** - 个人使用 - 教育与研究 - 修改与分享(非商业) - 为项目做贡献 **不允许:** - 出售软件 - 商业用途 - 集成到付费产品中 详见 [LICENSE](LICENSE)。 ## 致谢 构建于: - [Ollama](https://ollama.ai) - 本地 LLM - [LangGraph](https://github.com/langchain-ai/langgraph) - 代理编排 - [FastAPI](https://fastapi.tiangolo.com) - REST API - [ChromaDB](https://www.trychroma.com) - 向量数据库 - [Rich](https://github.com/Textualize/rich) - 终端格式化## 更多文档 - **[文档概览](docs/README.md)** - **快速入门与安装** - [QUICKSTART.md](docs/getting-started/QUICKSTART.md) – 5 分钟快速入门 - [INSTALLATION.md](docs/getting-started/INSTALLATION.md) – 详细安装说明 - **功能指南** - [LANGGRAPH_GUIDE.md](docs/guides/LANGGRAPH_GUIDE.md) – 多跳推理 - [OSINT_USAGE.md](docs/osint/OSINT_USAGE.md) – OSINT 功能 - [OSINT_CONTEXT_USAGE.md](docs/osint/OSINT_CONTEXT_USAGE.md) – OSINT 上下文使用 - [SOCIAL_INTELLIGENCE.md](docs/osint/SOCIAL_INTELLIGENCE.md) – 社交情报 - [PLUGIN_TUTORIAL.md](docs/guides/PLUGIN_TUTORIAL.md) – 插件开发 - [HALLUCINATION_DETECTION.md](docs/guides/HALLUCINATION_DETECTION.md) – 幻觉检测 - [SEARCH_LIMITATIONS.md](docs/guides/SEARCH_LIMITATIONS.md) – 搜索限制 - **健康监控** - [HEALTH_MONITORING.md](docs/health/HEALTH_MONITORING.md) – 健康系统 - [HEALTH_DASHBOARD.md](docs/health/HEALTH_DASHBOARD.md) – 仪表板使用 - [HEALTH_FEATURES.md](docs/health/HEALTH_FEATURES.md) – 可用功能 - [DASHBOARD_STARTER.md](docs/health/DASHBOARD_STARTER.md) – 仪表板入门 - **维护者文档** - `docs/development/RELEASE_PROCESS.md` – 发布流程(计划中/维护者说明) - [SECRET_LEAK_RESPONSE.md](docs/security/SECRET_LEAK_RESPONSE.md) – 密钥泄露响应计划 - `docs/development/PRE_RELEASE_CHECK.md` – 发布前检查清单(计划中/维护者说明) - [PROJECT_STRUCTURE.md](docs/development/PROJECT_STRUCTURE.md) – 项目结构 *最后更新:2026-02-12*
标签:AI风险缓解, ESC4, ESC8, LLM评估, Ollama, OSINT, Python, RAG, REST API, Ruby, 人工智能, 企业情报, 多跳推理, 实时处理, 密码管理, 情报分析, 无后门, 本地大模型, 检索增强生成, 用户模式Hook绕过, 知识库, 社会工程学, 网络安全, 网络诊断, 自动问答, 调试插件, 逆向工具, 隐私保护