AICR 拥有报告契约
Agent 通过一个精简、稳定的 MCP 工具集报告发现,AICR 负责校验、去重和渲染—— agent 的自由文本 stdout 永远不会成为报告。
AICodeReviewer (AICR) 是一个自托管服务,用于跨多个版本控制系统编排 AI 代码评审。它把 webhook 和 trigger 归一到统一评审流水线,在你选定的沙箱内运行 agent CLI,并把结构化结果路由回 PR 评论、托管 issue 或 IM 机器人——而不是把 agent 的自由文本 stdout 当成正式报告。
AICR 拥有报告契约
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。
默认安全
仅拉取变更文件、只读源码挂载、allowlist 沙箱命令、每个边界的 secret 脱敏, 以及硬超时清理。
成本与上下文感知
自动 diff 压缩、按 run 的预算上限、LLM fallback 链,以及按项目和 provider 追踪 token 与成本的 dashboard。
自托管、单容器
server、队列 worker、orchestrator、dashboard 和数据库运行在同一进程中。
docker run 或 podman run 即可部署,加 worker 即可扩展。
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 保留最相关的 hunks 并裁剪其余部分。
Agent 在沙箱中运行。 你选择的 agent CLI 在 Docker 或 Podman 容器中执行, 带着 diff、你的 AI 指令和稳定的 MCP 工具集——具有只读源码挂载、allowlist 命令, 以及清理整棵进程树的硬超时。
结构化结果路由。 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 保持一致。
docker run 或 podman run 即可部署;
扩展时在共享数据库后增加 worker 数量。到生产最快的方式是单个 Docker 或 Podman 容器,前置反向代理,由 GitHub 或 Gitea
webhook 触发。请从快速上手开始。如果你在做评估或贡献,
本地 Node.js 快速上手只需要 pnpm install
和 pnpm build。