Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code Review Master(AI 代码检视机器人)

面向内网 Git 托管平台(华为 CodeHub / CodeArts Repo)的自动化 AI 代码检视系统。

核心链路复用阿里开源 OpenCodeReview(OCR) 与 code-review-graph(CRG):

MR 创建/更新(目标分支匹配 develop*)
        │
        ▼
  取 Git diff(本地 git 或服务端机器人镜像)
        │
        ▼
  OCR 确定性阶段:文件筛选 + 规则匹配
        │
        ▼
  CRG 链路审视:Tree-sitter 图谱 + blast-radius(可选)
        │
        ▼
  DeepSeek V4 Flash(内网 OpenAI 兼容接口)生成检视意见
        │
        ▼
  结构化解析 + 位置校验 + 去重
        │
        ▼
  本地报告  /  CodeHub 行内检视意见(DiffNote)+ 总结评论

两种运行形态

形态 触发方式 部署 产物
本地 agent(保留现有 demo) 用户在 AI 工具里说"帮我检视代码" 用户电脑一键安装 检视报告
中心服务(本仓库新增) CodeHub Webhook 自动触发 一台内网服务器 CodeHub MR 行内评论 + 总结

两者共用同一套检视链路(OCR + CRG + DeepSeek),只是入口和出口不同。

目录结构

code-review-master/
├── README.md                 # 本文档
├── config.example.json       # 中心服务配置模板
├── docs/
│   ├── dependencies.md       # 依赖清单(服务器离线手动安装必读)
│   └── HANDOFF.md            # 交接文档(给下一个 AI 的完整任务说明)
├── rules/                    # 自定义检视规则(OCR --rule)
│   ├── rule.json             # 规则索引(path -> 规则文档)
│   └── docs/                 # 规则文档目录(.md,用户自己补充)
├── scripts/
│   ├── install_local.ps1     # 本地 agent 一键安装(Windows)
│   ├── install_local.sh      # 本地 agent 一键安装(macOS/Linux)
│   ├── install_server.ps1    # 中心服务安装(Windows)
│   └── install_server.sh     # 中心服务安装(Linux)
├── server/                   # 中心服务(Python 标准库实现,离线可跑)
│   ├── reviewbot/            # 核心代码
│   └── ...
└── tests/                    # 单元测试(unittest)

快速开始

本地 agent(用户电脑,Windows)

cd 你的项目目录
./scripts/install_local.ps1

脚本会:检查 git/node/python 版本 → 安装 @alibaba-group/open-code-review(OCR)与 code-review-graph(CRG)→ 写入 OCR 的模型配置(从环境变量 OCR_LLM_URL / OCR_LLM_AUTH_TOKEN / OCR_LLM_MODEL 读取)→ 复制 rules/ 模板到当前目录。

之后在你的 AI 工具(Codex/Claude/Cursor 等)里说"帮我检视代码",AI 调用 ocr review 完成检视。也可以直接用命令行:

ocr review --from origin/main --to HEAD --format json

中心服务(内网服务器)

服务器无法联网 npm install / pip install,请先按 docs/dependencies.md 手动装好依赖,然后:

# 1. 生成配置
Copy-Item config.example.json config.json
# 2. 编辑 config.json:目标分支、机器人账号、模型地址等
# 3. 设置环境变量(密钥不进配置文件)
$env:CODEHUB_API_BASE = "https://codehub.internal/api"      # 占位,按内网实际地址改
$env:CODEHUB_API_TOKEN = "机器人账号 token"
$env:CODEHUB_BOT_USER = "bot"
$env:CODEHUB_BOT_TOKEN = "机器人 git 账号 token"
$env:CODEHUB_WEBHOOK_SECRET = "webhook 签名密钥"
$env:OCR_LLM_URL = "https://llm.internal/v1/chat/completions"  # 占位,按公司默认配置改
$env:OCR_LLM_AUTH_TOKEN = ""   # 本地拿不到 key 时留空,由公司默认配置注入
$env:OCR_LLM_MODEL = "deepseek-v4-flash"
# 4. 启动
py -m reviewbot.cli serve --config config.json

然后在 CodeHub 的仓库设置里添加 Webhook:URL 填 http://服务器IP:8123/webhook/codehub,勾选合并请求事件,密钥与 CODEHUB_WEBHOOK_SECRET 一致。

配置说明(config.json)

配置项 说明 示例
service.port Webhook 监听端口 8123
service.webhook_path Webhook 路径 /webhook/codehub
service.bot_marker 检视评论标识,用于去重 [AI检视]
target_branches 触发检视的目标分支通配符 ["develop*"](匹配 develop、develop-v2、develop/2026…)
exclude_branches 排除的分支 ["develop-release"]
git.clone_url_template 机器人克隆地址模板,{repo_path} 会被替换 https://${CODEHUB_BOT_USER}:${CODEHUB_BOT_TOKEN}@${CODEHUB_HOST}/git/{repo_path}.git
codehub.api_base_env 环境变量名,提供 CodeHub API 地址 CODEHUB_API_BASE
codehub.api_token_env 环境变量名,提供机器人 API token CODEHUB_API_TOKEN
ocr.rule_file 自定义规则索引(相对本文件所在目录) rules/rule.json
ocr.concurrency OCR 并发文件检视数 8
graph.enabled 是否启用 CRG 链路审视 true
severity_map OCR 严重度 → CodeHub 严重度映射 critical → fatal
post.dedupe 同一 MR 同一 head 已检视过则跳过 true
post.max_inline 行内评论上限,超出走总结 50

自定义检视规则

规则目录是 rules/,对应 OCR 的 --rule 参数。格式:

// rules/rule.json
{
  "default_rule": "default.md",
  "path_rule_map": {
    "**/*.py": "python.md",
    "**/*.java": "java.md"
  }
}

rules/docs/ 下放对应的 .md 规则文档,OCR 会按文件路径匹配并注入检视。当前只有模板(python.md.example),自定义规则留空待补充——你们后续把公司规范整理成 md 放进 rules/docs/ 并在 rule.json 里登记即可,不需要改代码。

安全与约束

  • 所有密钥(CodeHub token、模型 token、webhook secret)只从环境变量读取,不进配置文件、不进代码、不写日志。
  • 代码只在公司内网流转:检视在服务器/用户本地执行,模型走内网 DeepSeek 接口。
  • 服务端为机器人账号维护仓库镜像(git clone),用于 OCR/CRG 计算 diff,不依赖外部 MCP。
  • OCR 检视失败时默认fail-open:不影响 MR 流程,只记录日志/发一条提示。

常见问题

  • 检视意见贴错行:OCR 自带定位模块,且我们在回贴前会用真实 diff 的 refs 校验;如果内网 CodeHub 的 API 字段不同,调整 server/reviewbot/codehub.py 里的 endpoint 模板即可。
  • 同一个 MR 重复检视:post.dedupe 开启后,服务会先查该 MR 是否已存在包含 bot_marker + head SHA 的检视意见,有则跳过,省 token。
  • 只检视部分分支:改 target_branches 即可,例如 ["develop*", "release/*"]。

测试

cd server
py -m unittest discover -s ../tests -p "test_*.py"

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages