贡献 我们欢迎各种贡献!Leann 是由社区打造、为社区服务的。 贡献方式 Bug 报告:发现问题了吗?告诉我们吧! 功能请求:有好点子吗?我们很乐意听听! 代码贡献:欢迎各水平的 PR! 文档:帮助让 Leann 更易用! 基准测试:分享你的性能结果! 开发环境搭建 前提条件 安装 uv(快速的 Python 包管理器): 克隆仓库: 安装系统依赖: macOS: Ubuntu/Debian: 从源码构建: 预提交钩子 我们使用预提交钩子来确保代码质量和一致性。每次提交前都会自动运行这些钩子。
我们欢迎各种贡献!Leann 是由社区打造、为社区服务的。
安装 uv(快速的 Python 包管理器):
curl -LsSf https://astral.sh/uv/install.sh | sh
克隆仓库:
git clone https://github.com/LEANN-RAG/LEANN-RAG.git cd LEANN-RAG
安装系统依赖:
macOS:
brew install llvm libomp boost protobuf zeromq pkgconf
Ubuntu/Debian:
sudo apt-get install libomp-dev libboost-all-dev protobuf-compiler \ libabsl-dev libmkl-full-dev libaio-dev libzmq3-dev
从源码构建:
# macOS CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++ uv sync # Ubuntu/Debian uv sync
我们使用预提交钩子来确保代码质量和一致性。每次提交前都会自动运行这些钩子。
安装预提交工具:
uv sync lint
安装 Git 钩子:
pre-commit install
手动运行预提交(可选):
uv run pre-commit run --all-files
我们的预提交配置包括:
# Install test tools only (no project runtime) uv sync --group test # Run all tests uv run pytest # Run specific test file uv run pytest test/test_filename.py # Run with coverage uv run pytest --cov=leann
test/ directorytest_*.pyWe use ruff 中,以同时进行代码风格检查和格式化,确保代码风格一致。
# Format all files ruff format # Check formatting without changing files ruff format --check
# Run linter with auto-fix ruff check --fix # Just check without fixing ruff check
我们的 CI 管道会自动运行于所有拉取请求中。它包括:
CI 使用与预提交相同的命令,以保证一致性:
# Linting ruff check . # Format checking ruff format --check .
请务必在推送之前本地通过这些检查!
fork 仓库并从 main 创建你的分支:
git checkout -b feature/your-feature-name
进行修改:
运行预提交检查:
pre-commit run --all-files
测试你的修改:
uv run pytest
提交时使用描述性信息:
git commit -m "feat: add new search algorithm"
遵循 Conventional Commits 规范:
feat: for new featuresfix: for bug fixesdocs: for documentation changestest: for test additions/changesrefactor: for code refactoringperf: for performance improvementsPush and create a pull request:
When adding new features or making significant changes:
/docs通过贡献,你同意你的贡献将采用与项目相同的许可协议(MIT)。
感谢你为 LEANN 做出贡献!无论贡献大小,每一份努力都在让项目变得更好,造福所有人。
免责声明:
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文的母语文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。