erollqorrolli/multi-agent-codegen
GitHub: erollqorrolli/multi-agent-codegen
一个基于多智能体协作的 AI 代码生成系统,能将 GitHub issue 自动转化为经过沙箱测试验证的 Pull Request,并通过 PR 反馈实现持续学习。
Stars: 0 | Forks: 0
# 多智能体代码生成器
[](https://github.com/erollqorrolli/multi-agent-codegen/actions/workflows/ci.yml)
你打开一个 GitHub issue,比如*“构建一个带身份验证的 REST API 来跟踪费用。”*
几分钟后,一个 pull request 就出现了,里面包含可运行且经过测试的代码——由五个
AI agent 编写、审查和检查,每个 agent 只负责一项工作,并将他们的工作
交接给下一个。当你接受或拒绝该 PR 时,系统会记住原因并在下次
做得更好。
这是一个作品集项目。它运行在 **Google Gemini API 的免费层**,
因此试用它没有任何成本。
## 工作原理
工作被分配给五个 agent。每个 agent 都擅长一件事,
并且他们按顺序传递结果:
1. **架构师** —— 阅读请求并决定计划:tech stack、
数据库表和 API endpoint。
2. **实现** —— 将该计划转化为实际的源文件。
3. **测试** —— 为代码编写测试。
4. **安全** —— 查找漏洞和不安全的模式。
5. **优化** —— 查找缓慢或浪费资源的代码并提出修复建议。
协调器(即“orchestrator”)以正确的顺序运行它们。架构师
最先运行,因为一切都取决于它的计划。代码生成后,
测试、安全和优化 agent 将同时运行,因为它们
互不依赖。
这就是让它不仅仅是一个循环中的聊天机器人的原因:
- **测试是真正运行的。** 当测试 agent 编写测试后,系统
会在 sandbox 中执行它们并检查结果。如果测试失败,代码会
退回给实现 agent 进行修复——并且循环重复,直到
测试通过(或达到尝试次数上限)。agent 不能仅仅*声称*代码
可以工作;它必须真正能够运行。
- **它从反馈中学习。** 当你接受或拒绝 PR 时,系统会
将其转化为一条简短的、纯英文的规则(例如,*“始终在 login endpoint 中加入 rate limiting”*),并在
下次将其输入到相应 agent 的指令中。这些规则被保存为普通
的数据库行,你可以直接读取——没有任何隐藏。
```
issue ──> Architect ──> Implementation ──> [ Test · Security · Optimization ]
^ |
| v
└──── fix & retry ◄── tests pass? ──> Pull Request
|
v
you accept/reject ──> it learns
```
## 仪表盘
通过 Web 仪表盘观看它的工作:提交一个 issue,逐步跟踪每个 agent 的步骤
(包括使用的模型、耗时和消耗的 token),查看来自 sandbox 的真实测试
结果,并接受或拒绝结果——这正是为
学习循环提供反馈的方式。

你可以使用逼真的演示数据并且**无需 API key** 来试用该仪表盘——它附带了一个
seed 脚本:
```
cd backend && source .venv/bin/activate
export DATABASE_URL="sqlite+aiosqlite:///./demo.db"
python -m app.seed # loads example runs, steps, and lessons
uvicorn app.main:app # API at http://localhost:8000
cd ../frontend && npm install && npm run dev # dashboard at http://localhost:3000
```
## Tech stack
| 部分 | 选择 |
| ----------- | --------------------------------------------------- |
| Backend | Python 3.12, FastAPI (async) |
| AI model | Google Gemini (免费层) — 可替换为任何 LLM |
| Database | PostgreSQL 配合 SQLAlchemy (async) |
| Frontend | Next.js + TypeScript (用于监控运行的仪表盘) |
| GitHub | GitHub App + webhooks |
| Deployment | Docker / docker-compose |
AI model 位于一个小接口之后,因此将 Gemini 替换为 Claude、
OpenAI 或本地模型只需要修改一个文件——无需更改其他任何代码。
## 项目状态
该项目正在开发中。坦诚地说明当前的完成情况:
**已完成并验证**
- 完整的 pipeline 在真实的 Gemini 上端到端运行:所有五个 agent 协同工作,
修复循环修复了失败的代码,并生成了一个完整的项目。一次真实
运行生成了一个可运行的 FastAPI 应用、真实的安全发现和优化。
- sandbox 实际上在一个隔离的 virtualenv 中运行生成的测试,并将
真实的通过/失败结果反馈给修复循环。
- 确定性测试套件在**无需 API key**(使用 stub 模型)的情况下驱动了**整个 pipeline**,
覆盖了 happy path、修复循环和学习循环。
- 学习循环:PR 反馈被提炼为可重用的规则,并且已关闭的 PR 会
自动反馈(merged = 接受,closed = 拒绝)。
- 可选的 API token 身份验证、异步 Alembic 迁移和优雅的 quota 处理。
- 监控仪表盘(深色模式,带有运行时间线和反馈)。
**尚未完成**
- 一次完全通过(全绿)的生成测试运行(上次运行发现了 AI 自身
代码中的一个真实 bug;改进后的修复循环应该能解决它——等待免费层的 quota)。
- 实时进度流(目前仪表盘通过定时器刷新)。
- 针对真实仓库测试的 GitHub issue→PR 流程(代码已就位)。
- 部署。
底部的路线图包含完整的列表。
## 快速开始
### 1. 获取免费的 API key
从 [Google AI Studio](https://aistudio.google.com/apikey) 获取一个,然后:
```
cp .env.example .env # paste your key into GEMINI_API_KEY
```
### 2. 查看其运行效果的最快方式(终端,无需设置)
这会运行整个 pipeline 并打印每个 agent 的生成结果。它使用本地
文件作为数据库,因此你不需要 Postgres 或 Docker。
```
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
export GEMINI_API_KEY=your-key
export DATABASE_URL="sqlite+aiosqlite:///./demo.db"
python -m app.cli "Build a REST API for expense tracking with auth"
```
### 3. 完整应用(仪表盘 + 数据库)
```
make db # start Postgres in Docker
cd backend && source .venv/bin/activate
uvicorn app.main:app --reload # API at http://localhost:8000
cd ../frontend && npm install && npm run dev # dashboard at http://localhost:3000
```
### 4. 自动化的 GitHub 流程
要实现“打开一个 issue,得到一个 PR”的行为,你需要注册一个 GitHub App。
分步说明请参见 [docs/github-app.md](docs/github-app.md)。
## 运行测试
```
cd backend && source .venv/bin/activate && pytest
```
这些测试无需 API key、数据库或互联网即可运行。一个 stub 模型驱动了
**整个 pipeline**——因此这些测试证明了 agent 可以协调工作,修复循环
可以修复失败的代码,sandbox 能够区分通过和失败的测试套件,
并且学习循环可以提炼反馈。(编写这些测试发现了两个真实的 bug:一个 async
session 被并发提交,以及在 async context 之外进行了 lazy-load。)
## 项目布局
```
backend/app/
llm/ the AI interface + Gemini (swap models here)
agents/ the five agents and the coordinator
sandbox/ runs generated tests for real (Docker or local)
schemas/ the typed data passed between agents
services/ the learning loop, PR writer, GitHub client
api/ the web endpoints
db/ database models
cli.py run a job from the terminal
frontend/ the Next.js dashboard
docs/ setup guides
```
## 路线图
最近完成:~~关闭 PR 时的自动反馈~~,~~可选的 API 身份验证~~,
~~数据库迁移~~,~~全流程测试~~,~~优雅的 quota 处理~~。
仍待完成,大致按优先级排序:
1. 向仪表盘添加实时进度流(目前采用轮询方式)。
2. 针对真实仓库验证 GitHub issue→PR 流程。
3. 为每个请求仅挑选*相关*的学习规则(使用 embeddings),而不是
挑选前几条。
4. 建立一个评分系统,以衡量学习循环是否真的能随着时间推移
改善结果。
5. 在 CI 中运行 sandbox;强化 Docker 设置。
6. 部署它。
## 许可证
MIT —— 随意使用。
标签:AI辅助开发, AV绕过, FastAPI, Python, 代码生成, 多智能体, 无后门, 测试用例, 渗透测试工具, 自动化编程, 请求拦截