使用MCP的RAG Simple和Agent的混合版本
Git辅助AI
Git辅助AI 是一个功能强大的代理编码助手,可帮助您探索、理解和调试git存储库。它结合了 RAG(检索增强生成) 对于文档查询,请使用 代理工作流 (由Google Gemini和MCP提供支持)用于深度代码检查。
特性
- 双模路由:自动将查询路由到最佳策略:
- 简单模式(RAG):使用ChromaDB根据文档回答“操作方法”和概念问题。 - 能动模式:使用自定义 模型上下文协议(MCP) 工具服务器,用于搜索代码、读取文件、列出符号,并获取复杂任务的git错误信息,如“X在哪里定义?”或“解释此文件”。
- 现代用户界面:内置 溪流 用于响应式、基于网络的聊天界面。
- 检查员小组:
- 证据:显示检索到的原始文档块(RAG)。 - 追踪:显示代理的分步工具执行(代理)。 - 调试:显示内部路由逻辑和日志。
- 库管理:轻松克隆并在本地或远程git存储库之间切换。
建筑
- 前端:Streamlit(Python)
- LLM:谷歌双子座(通过
google-genaiSDK) - 矢量数据库:ChromaDB
- 代理协议:模型上下文协议(MCP)-自定义FastMCP实现
- 后端核心:
- Router:基于LLM的智能查询分类。 - AgenticClient:管理代理循环和MCP连接。 - SimpleRAG:处理文档索引和检索。 - ToolServer:为代理提供文件系统和git访问权限。
入门指南
先决条件
- Python 3.10+
- Git已安装在您的系统上。
- A. Google Gemini API密钥 (一个在 aistudio.google.com).
安装
- 克隆仓库:
git clone
cd Git_Assist- 创建虚拟环境 (推荐):
python -m venv venv
# Windows
.\venv\Scripts\activate
# Mac/Linux
source venv/bin/activate- 安装依赖项:
pip install -r requirements.txt- 配置环境:
创建一个 .env 根目录中的文件:
GEMINI_API_KEY=your_actual_api_key_here运行应用程序
使用主入口点运行应用程序:
python main.py*或者直接通过Streamlit:*
streamlit run ui/streamlit_app.py应用程序将在默认的web浏览器中打开(通常在 http://localhost:8501).
使用指南
- 选择/克隆回购:
- 使用侧边栏 克隆 通过URL创建新的存储库。 - 从下拉列表中选择一个现有存储库。
- 索引文档 (可选但推荐):
- 点击“索引文档”进行摄取 .md 和 .txt 将文件存入矢量数据库。这为“简单”RAG模式提供了动力。
- 提问:
- 概念性:“这个项目是关于什么的?”,“如何安装它?”-> *使用RAG*. - 代码探索“在哪里 Router 类定义?“,”解释 core/agentic_client.py“,”修复主循环中的错误“-> *使用代理工具*.
- 检查:
- 检查 追踪 侧边栏中的选项卡,以查看代理读取了哪些文件以及它调用了哪些工具。
项目结构和文件详细信息
根目录
main.py:入口点脚本。使用subprocess启动Streamlit应用程序(ui/streamlit_app.py).requirements.txt:列出运行项目所需的所有Python依赖项(例如。,streamlit,google-genai,mcp,chromadb)..env:环境变量的配置文件(存储您的GEMINI_API_KEY).DIAGRAMS.md:包含可视化系统架构、用户流、类结构和序列图的Mermaid.js图表。
core/ (后端逻辑)
agentic_client.py:代理工作流程的大脑。它管理聊天记录,连接到ToolServer通过MCP(stdio),将MCP工具转换为Gemini函数声明,并执行代理循环(思想->行动->观察)。llm.py:围绕Google GenAI SDK的包装器。它处理API身份验证,并为生成内容和嵌入提供统一的接口。repo_manager.py:处理存储库的文件系统操作。它可以克隆远程git URL,导入本地文件夹,并遍历文件以索引文档。router.py:智能路由模块。它使用LLM提示将用户查询分类为“简单”(一般/概念)或“代理”(代码探索/调试)。simple_rag.py:使用ChromaDB实现RAG(检索增强生成)管道。它处理摄取文档块和检索简单查询的相关上下文。
server/ (MCP工具)
tool_server.py:运行FastMCP服务器的独立脚本。它暴露了以下工具search_code,read_file_segment,list_files,以及list_symbols代理可以调用该文件系统与文件系统进行交互。
ui/ (前端)
streamlit_app.py:使用Streamlit构建的主用户界面。它处理:
- 侧边栏:回购选择、克隆和检查器选项卡(证据/跟踪/调试)。 - 聊天:呈现聊天历史记录并处理用户输入。 - 状态管理:协调对路由器、代理和RAG后端的调用。
data/
repo/:克隆存储库的默认位置。chroma_db/:ChromaDB矢量嵌入的持久存储。
技术栈
- 语言python
- Web框架:流光灯
- AI模型:Gemini 1.5 Flash/Pro
- 嵌入:Gemini文本嵌入004
- 工具:MCP(模型上下文协议)
