结构化报告契约
Agent 通过一组固定的 MCP 工具上报发现,AICR 负责校验、去重和渲染。 agent 的自由文本 stdout 不会成为报告。
AICodeReviewer (AICR) 是一个自托管服务,在多个版本控制系统之上编排 AI 代码评审。它把 webhook 和 trigger 归一到同一条评审流水线,在你选定的沙箱里运行 agent CLI,再把结构化结果路由回 PR 评论、托管 issue 或 IM 机器人。agent 的 自由文本 stdout 不会作为正式报告。
结构化报告契约
Agent 通过一组固定的 MCP 工具上报发现,AICR 负责校验、去重和渲染。 agent 的自由文本 stdout 不会成为报告。
多 agent 支持
Kilo Code、Claude Code、opencode、Zoo Code 和 Copilot CLI 共用同一套运行时契约,切换 agent 不用改流水线。
多 VCS 接入
GitHub、Gitea、Forgejo、GitLab 走 webhook;Perforce 和 Subversion 走
trigger。全部归一为同一个 ReviewEvent。
默认安全
只拉取变更文件、只读源码挂载、沙箱命令白名单、每个边界的 secret 脱敏, 以及硬超时清理。
成本与上下文控制
自动 diff 压缩、按 run 的预算上限、LLM fallback 链,dashboard 按项目和 provider 统计 token 与成本。
自托管、单容器
server、队列 worker、orchestrator、dashboard 和数据库运行在同一进程中。
docker run 或 podman run 即可部署。
Webhook 或 trigger 到达,来自你的 VCS(push、PR 或手动 /aicr review
命令)。AICR 用你配置的 HMAC secret 或 API key 验证请求。
VCS 适配器拉取变更。 只拉取变更的文件(scoped fetch),不做全量 clone。 对 PR 计算 merge-base diff;对 P4 和 SVN 计算 changelist 或 revision diff。
Diff 压缩。 当变更集超过模型上下文窗口时,AICR 保留最相关的 hunk, 裁剪其余部分。
Agent 在沙箱中运行。 你选择的 agent CLI 在 Docker 或 Podman 容器中执行, 带着 diff、你的 instructions 和固定的 MCP 工具集。源码挂载只读,命令走白名单, 超时后杀掉整棵进程树。
结构化结果路由。 Problem 变成 PR 行内评论(带代码上下文)、托管 issue
(带生命周期跟踪,修复后自动关闭)或 IM 摘要卡片(飞书/企业微信)。同一个
aicr.report_problem 调用驱动全部三种输出。
ReviewEvent。ModelSpec 翻译成每个工具的原生字段,并在
run manifest 里记录不支持的能力降级,不会静默丢弃。aicr.report_problem、aicr.publish_summary、aicr.skip、
aicr.fetch_more_context、aicr.try_blame)。同一个 problem 可以渲染为
PR 行内评论、托管 issue 或 IM 摘要卡片。--init 回收僵尸进程。/metrics 端点。| 维度 | 选项 |
|---|---|
| VCS 提供商 | GitHub、Gitea、Forgejo、GitLab(webhook);Perforce (P4)、Subversion (SVN)(trigger) |
| Agent CLI | Kilo Code、Claude Code、opencode、Zoo Code、Copilot CLI |
| 输出通道 | PR/MR 行内评论与摘要、托管 problem issue、飞书机器人、企业微信机器人 |
| 沙箱 | native、docker、podman、docker_socket(k8s_pod、firecracker 预留) |
| 模型提供商 | 任意 OpenAI 兼容 API;models.dev 目录提供上下文窗口和定价元数据 |
每个发现都遵循同一套契约:无论由哪个 agent 产出、由哪个 channel 渲染,报告格式都
一致。一个 problem 始终携带严重级别、分类、文件路径、行范围和人类可读的
message(外加可选的修复 suggestion)。
严重级别是固定的五级刻度,方便下游路由和分诊:
| 严重级别 | 含义 |
|---|---|
critical |
合入前必须修复——数据丢失、安全漏洞、崩溃或数据损坏 |
high |
在现实条件下有真实影响的疑似 bug 或漏洞 |
medium |
值得处理的正确性、契约或性能风险 |
low |
轻微问题或代码异味;可延后处理 |
info |
提示性说明或观察,无需操作 |
分类把发现归入固定的族,例如 correctness、security、performance、
api-contract 和 style,分组和去重由此跨 run 保持一致。
评审以精确为先:agent 只报告验证过、可操作的问题,summary 只围绕这些问题展开, 不罗列“检查过但没发现异常”的部分。没有可操作问题时,评审以显式 skip 收尾, 不会发布空洞的表扬式 summary。
docker run 或 podman run 即可部署;
需要更高并发时,多个 worker 进程可共享同一个 SQLite 或 Redis 队列。到生产最快的方式是单个 Docker 或 Podman 容器,前置反向代理,由 GitHub 或 Gitea
webhook 触发。请从快速上手开始。做评估或贡献时,
本地 Node.js 快速上手只需要 pnpm install
和 pnpm build。