ocrag/README.md

209 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ocrag - OpenCode 代码知识库 RAG 插件
> 为 OpenCode 提供本地代码语义搜索能力,支持将代码文件添加到知识库并通过自然语言进行检索。
[English](./README_EN.md) | [设计文档](./DescriptionOfDesign.md)
---
## ✨ 特性
- 🚀 **零配置**:嵌入式数据库,安装即用
- 🔒 **本地优先**:所有数据存储在本地,不上传到外部服务器
- 🔍 **语义搜索**:通过自然语言查询相关代码片段
- 📦 **多语言支持**:支持 Python、Rust、C++、Go、JavaScript、TypeScript 等 40+ 种编程语言
-**极速响应**:搜索延迟 < 100ms
- 🤖 **AI 友好**输出格式专为 AI 消费设计
---
## 📦 安装
### 环境要求
- Python 3.10+
- [uv](https://github.com/astral-sh/uv)包管理器
### 安装步骤
```bash
# 1. 安装 Python 包
uv pip install -e .
# 2. 安装 OpenCode 插件(可选)
cp opencode-plugin/ocrag-plugin.ts ~/.config/opencode/plugins/
# 3. 安装 Skill可选
mkdir -p ~/.config/opencode/skills/ocrag
cp opencode-skill/SKILL.md ~/.config/opencode/skills/ocrag/
```
---
## 🚀 快速开始
### 基本使用
```bash
# 添加文件到知识库
uv run ocrag add ./src/main.py
# 递归添加整个目录(自动应用 .gitignore + 二进制文件过滤)
uv run ocrag add ./src/ --recursive
# 排除特定文件
uv run ocrag add ./src/ --recursive --exclude "**/__pycache__" "**/test_*.py"
# 只添加特定类型的文件
uv run ocrag add ./src/ --recursive --include "*.py" "*.rs"
# 禁用 .gitignore 过滤
uv run ocrag add ./src/ --recursive --no-ignore
# 搜索相关代码
uv run ocrag search "如何实现用户认证"
# 列出知识库中的文件
uv run ocrag list
# 使用通配符筛选列表
uv run ocrag list "*.py" # 仅列出 Python 文件
uv run ocrag list "src/**" # 仅列出 src 目录下的文件
# 删除文件
uv run ocrag remove ./src/main.py
# 使用通配符批量删除
uv run ocrag remove "**/test_*.py" # 删除所有测试文件
uv run ocrag remove "src/**/*.js" # 删除 src 下所有 JS 文件
```
### OpenCode 集成
安装插件后AI 可以自动使用知识库功能
```
用户:把当前文件加入知识库
AI✓ 已将 main.py 添加到知识库
用户:认证模块是怎么实现的?
AI根据知识库中的代码认证模块包含以下关键实现...
```
---
## 📁 项目结构
```
ocrag/
├── src/ocrag/ # Python 源代码
│ ├── cli.py # 命令行入口
│ ├── chunker.py # 代码分块
│ ├── embedder.py # 向量化模块
│ ├── db.py # 数据库操作
│ └── commands/ # 命令实现
│ ├── add.py
│ ├── search.py
│ ├── remove.py
│ └── list.py
├── models/ # Embedding 模型
│ └── Qwen3-Embedding-0.6B/
├── tests/ # 单元测试
├── scripts/ # 工具脚本
│ └── benchmark.py # 性能测试
├── opencode-plugin/ # OpenCode 插件
└── opencode-skill/ # Skill 文件
```
---
## 🔧 配置
### 模型配置
默认使用 `models/Qwen3-Embedding-0.6B` 本地模型
如需使用 GPU 加速
```bash
USE_GPU=true uv run ocrag search "查询内容"
```
### 数据库位置
数据默认存储在 `~/.ocrag/data.lance`
---
## 📊 性能
| 操作 | 延迟 | 说明 |
|------|------|------|
| 搜索 | **~65ms** | embedding + 向量检索 |
| 添加文件 | **~5s** | 含分块 + embedding + 存储 |
| 列出文件 | **~5ms** | 纯数据库查询 |
运行性能测试
```bash
uv run python scripts/benchmark.py
```
---
## ✅ 运行测试
```bash
# 运行所有测试
uv run python -m pytest
# 运行特定模块测试
uv run python -m pytest tests/unit/test_db.py -v
# 查看测试覆盖
uv run python -m pytest --cov=src/ocrag
```
---
## 🛠️ 开发
### 添加新命令
1. `src/ocrag/commands/` 下创建新文件
2. 实现 `run()` 函数
3. `src/ocrag/cli.py` 中注册命令
4. `src/ocrag/commands/__init__.py` 中导出
### 代码规范
```bash
# 格式化代码
ruff format src/
# 代码检查
ruff check src/
```
---
## 📚 相关文档
- [设计文档](./DescriptionOfDesign.md) - 详细的设计说明和技术选型分析
- [CHANGELOG](./CHANGELOG.md) - 版本更新记录
---
## 🤝 贡献
欢迎提交 Issue Pull Request
---
## 📄 许可证
MIT License
---
**版本**0.1.0
**最后更新**2026年4月15日