# root_seeker
**Repository Path**: iceycn/root_seeker
## Basic Information
- **Project Name**: root_seeker
- **Description**: RootSeeker 是一个面向公司内网的 AI 驱动错误分析与根因发现服务。它不仅仅是一个日志解析器,更是一个拥有代码理解能力的智能 SRE。 通过集成 SLS (日志)、Zoekt (精确代码检索)、Qdrant (语义向量检索) 和 LLM (大模型推理),RootSeeker 能够自动还原故障现场,定位问题代码,并生成专家级的修复建议。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-03-16
- **Last Updated**: 2026-05-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# RootSeeker
中文 | English
**RootSeeker** 是一个面向公司内网的 **AI 驱动错误分析与根因发现服务**。它不仅仅是一个日志解析器,更是一个拥有代码理解能力的智能 SRE。
通过集成 **SLS (日志)**、**Zoekt (精确代码检索)**、**Qdrant (语义向量检索)** 和 **LLM (大模型推理)**,RootSeeker 能够自动还原故障现场,定位问题代码,并生成专家级的修复建议。
> **如果觉得这个项目对你有帮助,请帮忙点个 Star ⭐️,你的支持是我们更新的动力!**
---
## 📚 目录
- [为什么选择 RootSeeker?](#-为什么选择-rootseeker)
- [核心特性](#-核心特性)
- [工作原理](#-工作原理)
- [快速开始](#-快速开始)
- [部署文档](#-部署文档)
- [API 参考](#-api-参考)
- [案例分析](#-案例分析)
- [贡献指南](#-贡献指南)
- [License](#-license)
---
## 🚀 为什么选择 RootSeeker?
传统的故障排查往往依赖人工经验,SRE 需要在日志平台、监控系统和 IDE 之间反复横跳,耗时耗力。RootSeeker 旨在解决以下痛点:
* **告别“通灵”式 Debug**:不再对着报错堆栈瞎猜,直接定位到具体的代码行。
* **全息现场还原**:自动关联 TraceID,拉取同一链路上的所有上下文日志(API 入参、SQL、RPC)。
* **懂你的私有代码**:构建私有代码索引,即使是复杂的业务逻辑,AI 也能通过语义搜索理解意图。
* **多轮侦探推理**:像人类专家一样思考,通过多轮追问和二次检索,逐步逼近根因。
---
## ✨ 核心特性
- **🔍 双引擎代码检索**:结合 Zoekt(正则/符号)和 Qdrant(向量语义),兼顾精确匹配与意图理解。
- **🤖 智能根因分析**:基于 RAG(检索增强生成)技术,利用 DeepSeek/ChatGPT 等大模型进行深度推理。
- **🔗 全链路日志补全**:自动从阿里云 SLS 等源拉取上下文,还原故障发生时的完整数据流。
- **📡 多渠道触达**:分析报告实时推送至企业微信、钉钉,支持 Markdown 格式。
- **🛡️ 数据安全**:支持私有化部署,代码和日志不出内网(可对接本地 LLM)。
- **⚡️ 高效 Token 管理**:内置 AST 切片与精准 Token 计数,最大化利用 LLM 上下文窗口。
---
## 🛠️ 工作原理
```mermaid
graph LR
Log["错误日志 (SLS)"] --> Ingest["数据摄入"]
Ingest --> Enrich["日志补全 (TraceID)"]
Enrich --> Retrieval["双路检索"]
Retrieval --> Zoekt["Zoekt (精确)"]
Retrieval --> Qdrant["Qdrant (语义)"]
Zoekt --> Context["构建上下文"]
Qdrant --> Context
Context --> LLM["大模型推理"]
LLM --> Report["生成报告"]
Report --> Notify["企微/钉钉通知"]
```
1. **Ingest & Enrich**:接收报错,自动回溯 TraceID 拉取前后文。
2. **Retrieval**:提取关键词,并行检索代码库(Zoekt 定位物理位置,Qdrant 理解逻辑关联)。
3. **Analysis**:LLM 进行多轮推理(Chain of Thought),必要时请求补充证据。
4. **Report**:生成包含根因、证据和修复建议的最终报告。
---
## 🏁 快速开始
### 环境要求
| 组件 | 版本要求 | 说明 |
|------|----------|------|
| **Python** | ≥ 3.11 | 核心服务 |
| **JDK** | 8 | Admin 管理后台 |
| **Docker** | 20+ | 推荐部署方式 |
### 一键部署 (Docker)
最简单的体验方式是使用 Docker Compose:
```bash
# 1. 克隆仓库
git clone https://gitee.com/icey_1/root_seeker.git
cd root_seeker/root_seeker_docker
# 2. 启动服务 (自动处理配置)
bash start.sh
```
启动后访问:
* **RootSeeker API**: `http://localhost:8000`
* **Admin 后台**: `http://localhost:8080`
### 手动安装 (macOS/Linux)
```bash
# 1. 复制配置
cp config.example.yaml config.yaml
# 2. 安装依赖
bash scripts/install-without-docker.sh
# 3. 启动所有服务
bash scripts/start-all-one-click.sh
```
---
## 📖 部署文档
我们提供了详尽的组件文档,帮助你从零开始搭建生产级环境:
* [**配置参考**](docs/components/00-配置参考.md): `config.yaml` 全解
* [**阿里云 SLS 集成**](docs/components/03-阿里云SLS.md): 日志源配置
* [**LLM 配置**](docs/components/04-LLM配置.md): DeepSeek/OpenAI/豆包接入
* [**通知配置**](docs/components/07-通知配置.md): 企微/钉钉机器人
* [**更多文档...**](docs/文档索引.md)
---
## 🔌 API 参考
| 接口 | 方法 | 说明 |
|------|------|------|
| `/ingest` | POST | 提交错误日志进行分析 |
| `/ingest/aliyun-sls` | POST | 接收 SLS Webhook 回调 |
| `/git-source/repos` | GET | 获取仓库列表 |
| `/analysis/{id}` | GET | 查询分析报告结果 |
更多接口请查看代码中的 `main.py` 或启动后的 Swagger UI (`/docs`)。
---
## 💡 案例分析
> **场景**:线上交易服务突发 `NullPointerException`。
>
> **RootSeeker 的表现**:
> 1. **捕获**:接收到报错日志,自动拉取同一 TraceID 下的 API 入参。
> 2. **检索**:通过 Zoekt 定位到 `DiscountCalculator.java` 第 89 行。
> 3. **发现**:通过 Qdrant 发现该类最近新增了 `@Autowired private VipStrategy vipStrategy;`。
> 4. **推理**:LLM 结合日志指出,该类是由 `new` 关键字手动实例化的,导致 Spring 注入失败,字段为 null。
> 5. **报告**:30 秒内推送报告,建议改为 Spring 托管或构造函数注入。
---
## 🤝 贡献指南
欢迎提交 Pull Request 或 Issue!
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
---
## 📄 License
Apache 2.0 License © 2026 RootSeeker Team
---
**如果这个项目帮到了你,请给一个 Star ⭐️ 支持一下!**