bssm-oss/CodeAgora
GitHub: bssm-oss/CodeAgora
一个多 LLM 辩论式代码审查工具,通过让多个大模型并行审查、对抗讨论并达成共识,自动发现代码中的安全漏洞和逻辑缺陷。
Stars: 7 | Forks: 1
CodeAgora
让 LLM 为你的代码展开辩论
多个 LLM 并行审查你的代码,对冲突的意见进行辩论,然后由一个主 Agent 给出最终结论。不同的模型能捕获不同的 bug —— 共识机制过滤掉噪音。 ## 快速开始 ``` npm i -g @codeagora/review agora init git diff | agora review ``` `agora init` 会自动检测你的 API 密钥和 CLI 工具,然后生成配置。 ## 支持的提供商(第 1 级) | 提供商 | 类型 | 费用 | |----------|------|------| | Groq | API | 免费 | | Anthropic | API | 付费 | | Claude Code | CLI | 订阅 | | Gemini CLI | CLI | 免费 | | Codex CLI | CLI | 订阅 | [完整提供商列表(24+ API,12 CLI) ->](docs/PROVIDERS.md) ## 工作原理 ``` git diff | agora review Pre --- Semantic Diff Classification --- TypeScript Diagnostics --- Change Impact Analysis | L1 --- Reviewer A (security) --+ --- Reviewer B (logic) --+-- parallel specialist reviews --- Reviewer C (general) --+ | Filter -- Hallucination Check (file/line validation) --- Self-contradiction Filter --- Evidence Dedup | L2 --- Adversarial Discussion (supporters must disprove) --- Static analysis evidence in debate | L3 --- Head Agent --> ACCEPT / REJECT / NEEDS_HUMAN | Output -- Triage: N must-fix / N verify / N ignore ``` ## 桌面应用 旧的 Web 仪表板和终端 TUI 正被整合到一个跨平台的 Tauri 桌面应用程序中。 CLI 仍然是 LLM Agent 和 CI 的主要自动化平台。桌面应用将成为面向人类的本地 UI,用于查看审查历史、配置、进度、成本和结果探索。 初步的私有脚手架位于 `packages/desktop` 目录中,桌面 MVP 正在逐步成型。 ## MCP 服务器 (Claude Code / Cursor) 用于 AI IDE 集成的 9 工具 MCP server。 ``` // claude_desktop_config.json or .cursor/mcp.json { "mcpServers": { "codeagora": { "command": "npx", "args": ["-y", "@codeagora/mcp"] } } } ``` 工具:`review_diff`、`review_pr`、`review_staged`、`session_list`、`session_detail`、`explain_session`、`config_get`、`config_set`、`health_check`。 ## 扩展 所有扩展都是可选的 —— 仅按需安装。 | 包 | 安装 | 功能 | |---------|---------|-------------| | [@codeagora/mcp](https://www.npmjs.com/package/@codeagora/mcp) | `npm i -g @codeagora/mcp` | MCP server(9 个工具) — 与 Claude Code、Cursor 及任何兼容 MCP 的 IDE 集成 | 核心的 `codeagora` CLI 包含了命令行审查和 GitHub Actions 所需的一切。面向人类的 UI 工作正在向桌面应用转移。 [扩展指南 ->](docs/EXTENSIONS.md) ## GitHub Actions 只需 2 步即可将 CodeAgora 添加到任何仓库: **1. 创建 `.ca/config.json`**(或运行 `agora init`): ``` { "mode": "pragmatic", "reviewers": [ { "id": "r1", "model": "llama-3.3-70b-versatile", "backend": "api", "provider": "groq", "enabled": true, "timeout": 120 }, { "id": "r2", "model": "qwen/qwen3-32b", "backend": "api", "provider": "groq", "enabled": true, "timeout": 120 }, { "id": "r3", "model": "meta-llama/llama-4-scout-17b-16e-instruct", "backend": "api", "provider": "groq", "enabled": true, "timeout": 120 } ] } ``` **2. 添加工作流**(`.github/workflows/codeagora-review.yml`): ``` name: CodeAgora Review on: pull_request: types: [opened, synchronize, reopened] permissions: contents: read pull-requests: write statuses: write jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: bssm-oss/CodeAgora@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} env: GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }} ``` **3. 将 `GROQ_API_KEY` 添加**到你仓库的 Settings > Secrets > Actions 中。 每个 PR 都会收到内联的审查评论、总结性结论和提交状态检查。在任何 PR 上添加 `review:skip` 标签即可跳过审查。 ## 文档 | 文档 | 内容 | |-----|---------| | [CLI 参考](docs/CLI_REFERENCE.md) | 所有命令和选项 | | [配置](docs/CONFIGURATION.md) | 配置文件指南 | | [提供商](docs/PROVIDERS.md) | 完整提供商列表及层级 | | [架构](docs/ARCHITECTURE.md) | Pipeline 设计与项目结构 | | [扩展](docs/EXTENSIONS.md) | MCP 和桌面应用方向 | | [产品界面计划](docs/PRODUCT_SURFACE_AND_LIGHTWEIGHT_PLAN.md) | 当前界面与轻量级路线图 | | [Agent 契约](docs/AGENT_CONTRACT.md) | 稳定的 JSON、NDJSON、退出码和 MCP 输出语义 | | [故障排除](docs/TROUBLESHOOTING.md) | 常见错误与修复,退出码 | | [常见问题](docs/FAQ.md) | 常见问题解答 | ## 开发 ``` pnpm install && pnpm build pnpm test # 3386 tests pnpm test:coverage # with coverage report pnpm typecheck pnpm cli review path/to/diff.patch ``` ## 基准测试 `benchmarks/golden-bugs/` 下的黄金 bug fixture 驱动着假阴性测量框架(参见 #472)。 **对预计算结果进行评分**(快速,无 API 调用): ``` pnpm bench:fn -- --validate-only # schema-check fixtures pnpm bench:fn -- --results path/to/results-dir # score against pre-computed review output pnpm bench:fn -- --results path/to/results-dir --json # CI-friendly JSON report ``` **针对每个 fixture 运行实时 Pipeline**(生成上述结果目录): ``` export OPENROUTER_API_KEY=... pnpm bench:fn:run -- --results ./bench-out pnpm bench:fn -- --results ./bench-out ``` 驱动程序默认使用 `benchmarks/.ca/config.json`。专用的运行配置位于 `benchmarks/.ca/` 目录下,包括用于单 fixture 免费模型门控的 `config.free-smoke.json`,以及用于当前低成本多样化基准测试的 `config.low-cost-diverse.json`。添加 `--fixtures id1,id2` 进行限制,添加 `--skip-head` 跳过 L3 裁决阶段。 两种 fixture 类型并存: - **召回率用例**(`expectedFindings` 非空)—— 审查必须列出每个提及的 bug。遗漏计为 FN。 - **FP 回归用例**(`expectedFindings` 为 `[]`)—— 审查不应报告任何内容。任何发现都属于回归。 当前种子 fixture:8 个召回率用例(共 10 个预期发现) + 4 个 FP 回归用例。有关 fixture 格式,请参见 `benchmarks/golden-bugs/README.md`。 ### 最新低成本多样化汇总 (2026-04-28 KST) 完整报告:[`docs/golden-bug-benchmark-report-2026-04-27.md`](docs/golden-bug-benchmark-report-2026-04-27.md)。 冒烟测试门控: ``` pnpm bench:fn:run -- --results ./bench-out-smoke \ --config benchmarks/.ca/config.free-smoke.json \ --fixtures authz-admin-bypass \ --skip-head pnpm bench:fn -- --results ./bench-out-smoke ``` 冒烟测试运行仅执行了 `authz-admin-bypass` 并通过了该 fixture(`1/1`,`fp=0`)。`bench-out-smoke` 的全量汇总数据没有实际意义,因为其他 fixture 并未运行。 完整的低成本多样化运行: ``` pnpm bench:fn:run -- --results ./bench-out-low-cost-confirmed-20260427 \ --config benchmarks/.ca/config.low-cost-diverse.json \ --skip-head pnpm bench:fn -- --results ./bench-out-low-cost-confirmed-20260427 ``` 2026-04-28 的后续操作添加了 `auth-session-dual` 作为非配额的同文件多 bug 召回 fixture,然后将该 fixture 重新运行到相同的结果目录中: ``` pnpm bench:fn:run -- --results ./bench-out-low-cost-confirmed-20260427 \ --config benchmarks/.ca/config.low-cost-diverse.json \ --fixtures auth-session-dual \ --skip-head pnpm bench:fn -- --results ./bench-out-low-cost-confirmed-20260427 ``` | 指标 | 结果 | |---|---:| | 总 fixture 数 | 12 | | 召回 / FP 回归 fixture 数 | 8 / 4 | | 预期发现数 | 10 | | 实际发现数 | 32 | | TP / FP / FN | 10 / 0 / 0 | | 精确率 | 100.0% | | 召回率 | 100.0% | | F1 | 100.0% | | FP 干净率 | 100.0% | | 平均 recall@3 / @5 / @10 | 100.0% / 100.0% / 100.0% | | 触发的 FP 回归数 | 0/4 | 单 fixture 结果:每个召回 fixture 均以 `fp=0` 和 `r@3=100.0%` 通过;每个 FP 回归 fixture 均通过。在确认的汇总中,`quota-manager-dual` 和 `auth-session-dual` 均获得 `2/2`、`fp=0` 和 `r@3=100.0%` 的分数。 `bench:fn:run` 还会在 `标签:AI代码审查, AI辅助编程, Anthropic, CIS基准, Claude, CVE检测, DevSecOps, DLL 劫持, Gemini, Git集成, GNU通用公共许可证, LLM, MITM代理, Node.js, NPM包, OSV-Scalibr, TypeScript, Unmanaged PE, 上游代理, 云安全监控, 人机协同, 代码安全, 代码审查, 代码缺陷检测, 代码评审, 多智能体, 大语言模型, 威胁情报, 安全插件, 对抗性辩论, 开发者工具, 暗色界面, 漏洞枚举, 自动化攻击, 逻辑审查, 防幻觉检测, 静态分析