写点什么

37GAMES Nova(AI-CodeReview) 介绍

  • 2024-07-24
    广东
  • 本文字数:884 字

    阅读完需:约 3 分钟

37GAMES Nova(AI-CodeReview)介绍

项目由来

受启发于各个 AI 编码助手和 AI Code Review 方案,我们希望 37GAMES 的 AI Code Review 具备以下特性:

1). 与现有的 CI 流程紧密贴合,即 Gitlab-Runner+SonarQube;

2). 具备整个项目的上下文理解能力,支持多编程语言,并且能以较低成本实现;

3). 具备高扩展性,可以使用任意模型或 AI-Agent 平台,可以使用任意的上下文搜索方式,如 RAG 或 AST 搜索;

于是 Nova 应运而生。


Nova[/ˈnoʊ.və/],是指新星,象征着新生和亮度。结合 Code Review,我们寄望 Nova 能拥有新颖且高质量的代码审查能力。

流程介绍


如上的"Retrieve Code Context"和"Code Review"可以替换成任意实现,如果不想用 AST Symbol 搜索可以改为 RAG,不想用 Dify 也可以使用其他模型进行 Review。

代码实现以下接口即可:

#/nova/codexcontext/provider.gotype Provider interface {    Retrieve(ctx context.Context, change Change) (ContextItems, error)} #/nova/aiagent/aiagent.gotype AIAgent interface {    Complete(ctx context.Context, inputs map[string]string) (response string, err error)}
复制代码

部署架构


部署非常简单,打好 Nova 镜像后,只在.gitlab-ci.yml 增加一个 job 即可,如下:

...ai-code-review-job:  stage: lint-and-test  image: ${NOVA_IMAGE}  rules:    - if: $AI_CODE_REVIEW == "true" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" && $CI_COMMIT_BRANCH != "master"      when: on_success    - when: never  before_script:    - mkdir -p ${CI_REPORTS_DIR}/  script:    - nova  artifacts:    when: always    expire_in: 1 week    paths:      - ${CI_REPORTS_DIR}/sonar-report.json...
复制代码

代码安全

支持 Review 文件/Context 文件路径过滤,也支持文本内容敏感词过滤。

默认接入文本内容敏感词过滤,规则参考:

功能展示

1.支持 Didy 配置

2.融入 Gitlab-CI Pipeline


3.打通 SonarQube

4.理解项目上下文

成功找到"gschatsdk.NewSdk()"的函数定义:

还原上下文代码:

难点与展望

1.Code Review 更加精确,过滤非必要的建议,只有把 AI 审核意见做精准才能加到质量阈

2.不同开发语言/项目支持定制审核提示语


用户头像

一群聪明的人做好玩的事 2018-11-16 加入

连接技术力量,赋能业务发展,引领创新未来

评论

发布
暂无评论
37GAMES Nova(AI-CodeReview)介绍_AI_三七互娱后端技术团队_InfoQ写作社区