MultiReview
Hackathon: Global AI Hackathon with Qwen Cloud — Track 3: Agent Society
Repo: github.com/kyisaiah47/multiagent-code-review
Inspiration
Most AI code review tools are a single model reading your file and listing problems. A single model has blind spots — a security-focused prompt misses performance issues; a style-focused one misses auth flaws. Real engineering teams solve this by having specialists review the same code independently, then discuss disagreements in review meetings. I wanted to replicate that dynamic with agents.
What It Does
Submit any source file. Five specialist agents analyze it simultaneously, each focused on a different dimension:
- Security — OWASP Top 10, injection attacks, hardcoded secrets, auth flaws
- Performance — N+1 queries, blocking I/O, memory leaks, connection overhead
- Static Analysis — logic errors, resource leaks, swallowed exceptions
- Test Coverage — untested branches, missing edge cases
- Documentation — missing docstrings, unclear APIs, magic numbers
When two agents flag the same lines with conflicting suggestions, they enter a structured debate — where each agent defends or updates its position. A moderator agent watches the debate and issues a final verdict. Findings with genuine expert disagreement are escalated for human review.
The output: a ranked findings report with severity, confidence, consensus status, and a full debate transcript per contested finding — posted automatically as a GitHub PR comment.
How I Built It
Architecture
Input: source file + optional git diff
│
▼
Orchestrator (qwen3.7-plus)
│ asyncio.gather — 5 concurrent calls
├── StaticAnalysisAgent (qwen3.5-flash)
├── SecurityAgent (qwen3.5-flash)
├── PerformanceAgent (qwen3.5-flash)
├── DocumentationAgent (qwen3.5-flash)
└── TestCoverageAgent (qwen3.5-flash)
│
▼
ConflictDetector
│ exact-line overlap + semantic contradiction detection
▼
DebateEngine
│ 1 round per conflict, early exit on mutual agreement
▼
ModeratorAgent (qwen3.7-plus)
│ synthesizes final verdict with agreement score
▼
ConsensusResult
├── consensus_findings (severity · confidence · resolution)
├── unresolved_conflicts (escalated for human review)
└── metrics (debate rounds · conflicts resolved · human review count)
Tech Stack
| Layer | Technology |
|---|---|
| AI Models | Qwen3.7-Plus (orchestrator + moderator), Qwen3.5-Flash (5 specialists) |
| Agent Communication | Custom debate protocol — stance tracking (agree / maintain / concede_partial) |
| CLI | Python 3.11, Typer, Rich |
| API Server | FastAPI |
| Model Client | OpenAI-compatible SDK → Qwen Cloud DashScope |
| Cloud Deployment | Alibaba Cloud Function Compute v3 |
| CI Integration | GitHub Actions — runs on PRs, posts findings as PR comments |
Alibaba Cloud Deployment
The backend is deployed to Alibaba Cloud Function Compute v3 via deploy/alibaba_cloud.py, which uses the Alibaba Cloud FC, ECS, and credentials SDKs to package and deploy the FastAPI server as an HTTP-triggered function.
Challenges
- Conflict detection without an extra LLM call: Used exact line matching + keyword polarity heuristics (add vs. remove) to detect real conflicts fast, without burning tokens on another model call.
- CI output routing: GitHub Actions redirects stdout to a file for the PR comment. Progress logs had to be routed to stderr so they show live in the Actions UI while the markdown report writes to the file.
- JSON truncation: Setting
max_tokenstoo low caused agents to return truncated JSON mid-string. Added per-finding error handling to skip malformed entries gracefully. - Debate timeouts: Qwen API latency varies. Added per-call timeouts so a slow agent doesn't hang the entire pipeline.
What's Next
- SARIF output for native GitHub code scanning (findings appear inline in PRs)
- Streaming output so findings render as each agent completes
- Single-agent vs. multi-agent benchmark to quantify the recall improvement
- Support for JavaScript, TypeScript, and Go
Team
Built solo by @kyisaiah47 for the Global AI Hackathon with Qwen Cloud.

Log in or sign up for Devpost to join the conversation.