zephyrrtos.cnZephyr 生态 · 中国驱动软件系统

智能体现在能评 PR 和 commit:把 Gitea 链接换个前缀,拿回一份带规则编号的评审报告

2026-11-03 · 场景:提交者贴来一个 commit 链接、一个 PR 链接,或者直接把一段驱动代码丢过来问「这个能合入吗」。以前这活儿靠人读;现在把链接里的 zephyrrtos.cn:3000 换成 zephyrrtos.cn/agent/api/r,服务器自己去取这次改动的 PR 头 / commit,跑一遍评审引擎,回一份六段报告——不是「LLM 看着像有问题」,而是 40 条规则 + checkpa…

2026-11-03

智能体智能体现在能评 PR 和 commit:把 Gitea 链接换个前缀,拿回一份带规则编号的评审报告

场景:提交者贴来一个 commit 链接、一个 PR 链接,或者直接把一段驱动代码丢过来问「这个能合入吗」。以前这活儿靠人读;现在把链接里的 zephyrrtos.cn:3000 换成 zephyrrtos.cn/agent/api/r,服务器自己去取这次改动的 PR 头 / commit,跑一遍评审引擎,回一份六段报告——不是「LLM 看着像有问题」,而是 40 条规则 + checkpatch + tree-sitter 结构/复杂度给出可核对的结论,每条都带规则 ID 与置信度。只读:不改仓库、不改 PR 状态。

你给:Gitea 链接(私有库也能给)
  │   https://zephyrrtos.cn:3000/zephyrrtos_china/zephyr/pulls/2
  ▼  换个前缀(host 后面的 path 原样保留)
  https://zephyrrtos.cn/agent/api/r/zephyrrtos_china/zephyr/pull/2
  │
  ▼ 服务器侧:用 Gitea 上的 refs/pull/<n>/head 取 PR 头(SSH 密钥只在服务器)
     commit 评审则直接取该 commit 与父提交的 diff
  │
  ▼ 与 origin/main 做 diff → 调评审引擎
     规则 40 条 · checkpatch · tree-sitter(结构 / 圈复杂度)· clang-format(可选)
  │
  ▼ 六段报告(HTML 页面;加 ?raw=1 拿 Markdown)
     1 结论(判定 + 等级计数)      4 未验证 / 需人工确认
     2 问题清单(文件:行 + 规则 ID) 5 规则覆盖(启用/命中/跳过)
     3 结构分析(复杂度热点)        6 机器检查(checkpatch 明细)
  • 三个入口:提交 /agent/api/r/<owner>/<repo>/commit/<sha> · PR /agent/api/r/<owner>/<repo>/pull/<n> · 文件 /agent/api/r/<owner>/<repo>/src/<ref>/<path>;只给 sha 也能用短入口 /api/r/<sha> 自动反查仓库
  • 实测(就在这条动态发布时跑的):PR #2「gicv3 跳过 shared distributor init」→ 20 个文件、1497 增 5 删,报告 5 KB;PR #1「lc_power_shield」→ 11 KB 报告;commit 5e92f1c → 2 个文件 2.7 KB。全部 200
  • 它抓到了什么:PR #2 上有一条 MINOR / R-UP-002 —— commit 标题 76 字符 > 72,Zephyr 的提交规范会因此判 CI 失败;报告还给了改法。这类「人肉容易漏、CI 会拦」的问题就是机器规则该负责的部分
  • 等级契约写死在引擎里:机器规则最高 MAJOR;启发式(LLM 判断)一律降级 INFO「待人工确认」;BLOCK 只能由评审人确认后给出。报告第四段「未验证 / 需人工确认」是刚性要求——没有它就说明这份报告没按契约出
  • 评审基于完整文件而不是只看 diff 片段:diff 模式会读被改文件的新版本,存量问题也报并标注「存量」;要更大上下文用 ?context=full&related=1

边界(先看这几条):① PR 评审目前只对 zephyrrtos_china/zephyr 生效——它是在服务器上的 Zephyr 检出里做 diff,其它仓库会明确提示改用文件级评审;② PR 头是现取现评:refs/pull/<n>/head 拉不到就直接报错,不猜、不回退成「目录树」(本版顺手修掉了旧行为:把 PR 链接塞给 /api/gitea 曾静默回退成目录树,会给出误导结果);③ 这些页面是公开只读的——任何人拿到 URL 都能看到该 commit/PR 的差异统计与评审报告,私有库正文不随页面整库下发;不想公开就别把 URL 发出去;④ 报告是机器 + 启发式结论,合入与否仍由人决定。

↗
分享到朋友圈

点击右上角 ··· → 选择「分享到朋友圈」。微信不提供网页直接分享接口,这一步需要在微信内完成。想自己写配文?先点本条动态的「复制图文摘要」(已带 #zephyrrtos_cn),回到朋友圈粘贴即可。

问智能体 Zephyr 问题问答 · 直接问智能体