erollqorrolli/multi-agent-codegen

GitHub: erollqorrolli/multi-agent-codegen

一个基于多智能体协作的 AI 代码生成系统,能将 GitHub issue 自动转化为经过沙箱测试验证的 Pull Request,并通过 PR 反馈实现持续学习。

Stars: 0 | Forks: 0

# 多智能体代码生成器 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](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 的真实测试 结果,并接受或拒绝结果——这正是为 学习循环提供反馈的方式。 ![仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/894e2312aaf24f0f91a295599fa9162dcfff0ded4f3ae74cb2f647448eb6cd40.png) 你可以使用逼真的演示数据并且**无需 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, 代码生成, 多智能体, 无后门, 测试用例, 渗透测试工具, 自动化编程, 请求拦截