多代理代码分析系统

FastAPI多代理仓库聊天系统是一个生产级分布式系统,通过专门的AI代理提供智能代码仓库分析,包括代码结构、依赖关系和设计模式的实时查询。

  • by giridharan-1129
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 giridharan-1129/Multi-agent-MCP

使用说明

FastAPI多代理仓库聊天系统

概述

FastAPI Multi-Agent Repository聊天系统是一个生产级分布式系统,旨在通过专门的AI代理提供智能代码库分析。该系统将GitHub存储库索引到Neo4j知识图中,并为查询代码结构、依赖关系和设计模式提供实时接口。

该系统采用FastAPI、Neo4j和模型上下文协议(MCP)构建,展示了企业级分布式架构,具有明确的关注点分离和可扩展的设计模式。

核心架构

该系统遵循多代理架构,其中每个代理都专注于特定领域:

  • 编排器代理:查询分析、路由和响应综合
  • 索引器代理:存储库解析和Neo4j索引
  • 图形查询代理:知识图遍历和实体搜索
  • 代码分析代理:模式检测和代码分析

每个代理通过一个定义良好的接口进行通信,并通过Orchestrator进行协调,以提供全面的分析功能。

知识图谱

节点类型:包、文件、类、函数 关系:包含,定义,继承_ ROM,导入,调用,DECORATED_BY

Neo4j数据库将代码存储库构造为连接的实体,从而能够对依赖关系、继承层次结构和代码组织进行复杂的查询。

技术栈

  • Python 3.11
  • FastAPI 0.104+
  • Neo4j 5.14
  • Docker和Docker Compose
  • Pydantic v2用于验证
  • 用于实时通信的WebSockets

安装

先决条件:Docker、Docker Compose、Git

快速设置:

git clone <repository-url>
cd MultiAgentMCP
cp .env.example .env
# Edit .env with required variables
docker-compose up -d
curl http://localhost:8000/health

该系统将于http://localhost:8000

API终点

健康与信息

GET/健康 返回所有组件的系统运行状况。

GET/代理商 列出所有可用代理及其功能。

聊天界面

POST/api/聊天 用于单个查询的同步聊天端点。

Websocket/WS/聊天 实时流媒体聊天,用于交互式对话。

消息类型包括:会话创建、思考、分析、响应块、响应完成

索引操作

POST/api/索引 启动异步存储库索引。

请求正文:

{"repo_url": "https://github.com/tiangolo/fastapi", "full_index": true}

返回job_id以跟踪进度。

GET/api/index.jobs/{job_id} 获取索引作业的状态,包括进度指标。

GET/api/index.jobs 列出所有具有可选状态筛选器的索引作业。

GET/api/索引/状态 获取知识图统计数据和实体计数。

查询操作

POST/api/查询/查找 按名称和类型查找实体。

POST/api/查询/依赖关系 获取实体的依赖链。

POST/api/query/依赖项 获取依赖于指定实体的实体。

POST/api/query/相关 按关系类型获取相关实体。

POST/api/查询/执行 执行自定义Cypher查询(高级使用)。

分析操作

POST/api/分析/函数 分析功能实现和使用情况。

POST/api/分析/类 分析类结构和继承。

POST/api/分析/模式 检测代码中的设计模式。

POST/api/分析/比较 比较实体之间的实现。

配置

环境变量控制系统配置:

必修的:

  • NEO4J_用户名
  • NEO4J_密码
  • NEO4J_URI
  • OPENAI_API密钥

可选:

  • 环境(生产/开发/测试)
  • LOG_LEVEL(调试/信息/警告/错误)
  • 网关_端口(默认值:8000)

有关完整的配置选项,请参阅.env.example。

项目结构

src/
├── agents/           # Agent implementations
├── gateway/          # FastAPI application
│   ├── main.py      # Application entry point
│   ├── models.py    # Pydantic models
│   ├── dependencies.py  # Dependency injection
│   └── routes/      # Route handlers
└── shared/          # Shared utilities
    ├── config.py
    ├── neo4j_service.py
    ├── ast_parser.py
    └── logger.py

发展

本地开发设置:

python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
pytest src/tests/ -v --cov=src
uvicorn src.gateway.main:app --reload --host 0.0.0.0 --port 8000

代码质量标准:

black src/              # Format code
ruff check src/         # Lint code
mypy src/ --ignore-missing-imports  # Type check
pytest src/tests/ -v --cov=src      # Run tests

生产部署

该系统已准备好使用Docker进行生产:

docker-compose up -d
docker-compose ps
docker-compose logs -f gateway

通过/健康端点监控系统健康状况。

用于扩展:网关实例可以在负载均衡器后面复制。Neo4j可以集群以实现高可用性。

性能特征

使用FastAPI存储库进行测试(1050个包,4360+函数):

  • 存储库索引:1000多个文件需要5-10分钟
  • 典型查询响应:100-500ms
  • WebSocket吞吐量:每秒50+条消息
  • 连接池可实现高效的资源使用

安全考虑

当前的实现适合开发和内部使用。生产部署应实施:

  • API密钥验证
  • 请求速率限制
  • HTTPS/TLS加密
  • 数据库访问控制
  • 带WAF的API网关

监控

该系统提供:

  • 带相关ID的结构化JSON日志记录
  • 健康检查端点
  • 绩效指标收集
  • 错误跟踪和聚合

监控关键指标:

  • 请求延迟(p50、p95、p99)
  • 工作完成率
  • Neo4j查询性能
  • 代理响应时间
  • 按端点划分的错误率

已知限制

  1. 存储在内存中的作业跟踪(重新启动时清除)
  2. 无集群的单个Neo4j实例
  3. 没有内置的API身份验证
  4. 同步存储库索引
  5. 模式检测仅限于预定义的模式

未来的增强功能

  1. 使用Redis/Celery的持久作业队列
  2. GraphQL API和REST
  3. 语义搜索的向量嵌入
  4. 多存储库依赖性分析
  5. 基于WebSocket的协同分析
  6. 自定义LLM提供程序支持
  7. 高级缓存策略
  8. 实时分析流

故障排除

检查集装箱状态:

docker-compose ps
docker-compose logs gateway
docker-compose logs neo4j

验证Neo4j连接:

curl http://localhost:7474
docker exec multiagent-neo4j cypher-shell -u neo4j -p password "RETURN 1"

docker中记录的常见问题和解决方案会组成日志。

贡献

捐款遵循以下准则:

  • 代码遵循PEP 8风格
  • 所有函数都有类型提示
  • 文档字符串使用谷歌格式
  • 为新功能提供的测试
  • 代码通过质量检查

许可证

该项目用于教育和商业用途。

支持

文件可在以下网址获得:

  • API文件:http://localhost:8000/docs(Swagger用户界面)
  • QUICK_START.md:入门指南
  • ARCHITECTURE.md:设计决策
  • API.md:完整的终结点引用

有关问题,请查看上面的日志和故障排除部分。

版本

版本1.0.0-2026年1月30日

初始版本具有完整的多代理架构、Neo4j索引、REST和WebSocket API以及生产Docker部署。