CodeJury
多 Agent 软件交付流水线,核心创新为 LLM 陪审团评审机制,基于 SE-Jury 学术研究,显著提升代码评审质量
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
多 Agent 软件交付流水线,核心创新为 LLM 陪审团评审机制,基于 SE-Jury 学术研究,显著提升代码评审质量
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你向团队提交了一段新写的函数,代码审查工具给出的反馈不是"通过"或"驳回",而是一场由 5 名独立法官组成的合议庭投票——每名法官来自不同的 AI 模型,彼此之间不知道对方的判断,最终由一名主审官综合所有人的意见,形成一份有理有据的裁决书。
这听起来像是司法剧场,但 CodeJury 正将这个模型带入软件开发的核心环节。
2025 年,一篇来自新加坡管理大学、Monash 大学、华为等机构的联合研究 SE-Jury (arXiv 2505.20854) 首次系统性地回答了一个困扰 AI 代码审查多年的问题:一个 AI 评判另一个 AI 的代码,究竟准不准?
研究结果令人不安。在程序修复(APR)任务中,表现最好的单一 AI 法官与人类专家的评分相关性仅为 43.5%——几乎和抛硬币无异。而当同样的模型组成陪审团(ensemble of judges)时,相关性飙升至 76.2%,提升幅度达 75.2%。
CodeJury 的作者 Krish Agarwal 敏锐地捕捉到了这个发现背后的工程意义:与其花力气训练一个更强的单点审查模型,不如让多个不同立场的模型形成制衡。这一洞见直接驱动了 CodeJury 的核心设计。

一次真实的 CodeJury 会话录制,针对 Textualize/rich 仓库处理一个 bug 报告,全流程耗时 13 分钟,花费 $1.49,最终以陪审团全票通过结束。
传统 AI 代码审查工具几乎无一例外地采用了"单一法官"模式:给一个 LLM 发送 PR diff,询问"这段代码质量如何"。这个设计有一个根本性缺陷:法官和被审查的代码作者共享同样的训练分布,有着相同的"什么是好代码"的直觉。换句话说,AI 法官本质上是在审查自己的同类。
CodeJury 重新设计了这一流程:每个代码变更都会经过一个由 N 个独立陪审员(judge)组成的合议庭,每个陪审员基于不同的 AI 模型(可自行配置),独立地对代码进行审查并给出意见。随后由一名 主审官(foreperson) 综合所有人的意见,形成最终裁决。如果陪审团意见不统一,还可以触发修订循环,让 Dev 智能体根据反馈重新实现。
CodeJury 的整个交付流程分为六个阶段,每个阶段可以独立选择不同的 AI 提供商和模型:
| 阶段 | 职责 | 可选模型示例 |
|---|---|---|
| Knowledge | 解析目标仓库,构建代码图谱 | codebase-memory-mcp(本地代码图谱引擎) |
| PM | 与用户对话,明确需求并起草工单 | Claude、GPT |
| Planner | 分析仓库结构,制定实施计划 | Claude、GPT |
| Dev | 在隔离分支上实现代码变更 | Claude(Codex)、GPT |
| QA | 运行测试并进行质量审查 | 多种模型 |
| Review | 陪审团审查 + 主审官综合裁决 | 自定义陪审团配置 |
这个设计有一个精妙之处:每个阶段的模型都是可插拔的。你完全可以让 Claude 做规划、Codex 写代码、GPT 做审查——就像一个小型工程团队,每个人只做自己最擅长的事。
CodeJury 的另一个核心竞争力是其本地知识库,它解决了 AI 编码工具最常见的痛点:上下文不足导致的"幻觉代码"。

知识库分为两层:
第一层:持久化代码图谱。 CodeJury 集成外部工具 codebase-memory-mcp,通过 tree-sitter 解析 AST,将仓库解析为节点(函数、类、方法、HTTP 路由等)和边(调用关系、导入关系、继承关系等)。支持 158 种编程语言,索引构建过程完全确定性,无需 LLM 或外部 API。大型仓库的索引在秒级完成。
第二层:本地语义向量检索。 基于 FastEmbed(ONNX/CPU,无需 GPU 和外部服务),对代码图谱节点生成密集向量嵌入。当用户用自然语言描述需求时(如"实现一个在界面上显示进度条的效果"),系统不仅能通过 BM25 关键词匹配定位相关函数,还能通过语义相似度找到词汇上不匹配但语义相关的代码片段。
CodeJury 提供了两种部署方式,均极为简洁:
方式一:pip 安装(推荐 CLI 用户)
pip install codejury
codejury run
仅需 Python 3.11+,即可在终端启动交互式会话。它通过终端 CLI 的方式运行,界面由 Rich + prompt_toolkit + Textual 驱动——这意味着它是一个真正的终端优先应用,不依赖任何浏览器或 GUI。
方式二:Docker 一键部署(推荐团队使用)
docker compose up --build
# 访问 http://localhost:8017
docker-compose 方式提供了完整的 Web UI(FastAPI + Jinja SSR,无构建步骤),内置代码图谱引擎、SQLite 数据库,默认 DEMO_MODE=true,安全隔离非生产环境。

从架构文档来看,CodeJury 的后端采用 FastAPI(提供 JSON API 和 SSR Web UI 双入口),数据层使用 SQLModel(SQLite),AI 调用支持 Anthropic Claude API / OpenAI 兼容 API / Claude CLI 三种后端,后者无需 API Key,直接复用本地 Claude 认证。
Pipeline 编排采用进程内线程池(background thread pool),支持 git clone / branch / diff / PR 全流程,Orchestrator 控制器负责 Dev → QA → Jury → PR 的顺序执行以及修订循环。陪审团 jury/ 模块以并行方式调度所有陪审员,最后由 foreperson 合成裁决。
整个项目有 25 个测试文件,覆盖 Agent 后端、API、身份验证、交付门控、工具、编排、检索管道等核心模块,测试驱动开发的特征明显。
作为一个 2026 年 7 月才创建的年轻项目(Stars 仅 135),CodeJury 存在几个值得关注的问题:
1. 生产环境验证不足。 默认 DEMO_MODE=true,意味着开箱即用的是干跑模式,不真正创建 PR。需要手动设置才能对真实仓库操作,这对于想直接上生产的团队有一定门槛。
2. 陪审团配置复杂度。 虽然理念优雅,但陪审团成员的模型选择、提示词设计、主审官的裁决逻辑都需要用户自行摸索。对于没有 AI 代码审查经验的用户,初次配置可能感到无从下手。
3. 外部依赖 codebase-memory-mcp。 代码图谱功能依赖外部二进制工具,虽然 docker-compose 方式内置了该工具,但 pip 安装时需要单独安装,增加了依赖管理的复杂性。
4. SQLite 的并发限制。 后端使用 SQLite 作为数据库,在高并发场景下可能存在写入瓶颈。文档未提及任何并发测试数据。
CodeJury 最有价值的地方不在于它用了多少个 AI 模型,而在于它将陪审团机制这一司法领域的智慧引入软件工程。单点 AI 审查的本质是权威判断,天然存在盲区;而陪审团机制通过多样性实现了偏差校正——这与机器学习中的"集成学习"(Ensemble Learning)有着深刻的方法论共鸣。
从行业趋势看,CodeJury 代表了一个方向:AI 代码工具正从"单点智能"向"多智能体协作"演进。从早期的一个 LLM 写代码,到多个 Agent 分工协作、互相审查,这是一条符合软件工程实践规律的路径。
如果这个方向持续演进,未来的代码审查可能不再是"人审 AI",而是**"AI 陪审团审 AI"**——人类只负责最终合并决策,而代码质量的大门在提交之前就已经由机器守好了。

