一个代码仓库锐评工具 Repo-Roast

最近整理了一个 Claude Code Skill,名字叫 Repo-Roast
目标很直接:给一个仓库地址,出来一份有观点、带评分、有证据的锐评报告。

不是 lint,不是静态分析——是模拟一个写了 20 年代码、review 过 10000+ PR 的 Tech Lead,在认真看完你的仓库后说真话。

输入仓库地址 → Scout 侦察画像 → 5 个 Sub-Agent 并行审查 → Editor 汇总报告

为什么做这个

现有工具各管一摊,没人看全局:

  • SonarQube 静态规则扫得快,但不会说人话,没有语义理解
  • CodeScene 看热点,但不读代码内容
  • ESLint/Prettier 管格式,只管对不对,不管好不好

缺一个能从架构、安全、性能、可读性、工程化五个维度做语义级审查,还带人格和观点的工具。

它怎么跑的

三阶段流水线:

Phase 1: Scout — 单 Agent,≤10 次工具调用,快速建立项目画像。读 README、目录结构、构建配置、CI 配置、Git 历史。不读实现代码,只建立画像 JSON。

Phase 2: Deep Dive — 5 个 Sub-Agent 并行启动,各负责一个维度:

  • 架构审查:模块依赖、分层、循环依赖、扩展性
  • 安全审查:硬编码密钥、注入点、输入校验、依赖漏洞
  • 性能审查:N+1 查询、算法复杂度、资源泄漏、缓存策略
  • 可读性审查:命名质量、函数长度、注释密度、风格一致性
  • 工程化审查:测试覆盖、错误处理、文档、配置管理、Git 工作流

每个 Sub-Agent 独立上下文窗口,输出严格 JSON,互不干扰。

Phase 3: Editor — 单 Agent 汇总,计算综合评分,筛选 Top 10 问题,写成报告。

五条铁律

不是建议,是底线。违反任何一条视为审查失败:

  1. 有据可依 — 每个批评必须带文件名 + 行号。没有证据的批评是诽谤
  2. 有褒有贬 — 只喷不夸是情绪发泄。亮点必须认,烂处必须说
  3. 拒绝模糊 — 禁止"可能存在"“或许可以”。确认有问题就说,否则闭嘴
  4. 对事不对人 — 评代码,不评作者
  5. 给出路 — 指出问题必须附带修改建议,哪怕是方向性的

审查视角(Flavor)

同一个仓库,不同视角看到的问题不同:

  • default — 老炮工程师:直率、有观点。过度设计?简历驱动开发?依赖膨胀?
  • google — Google 工程文化:可读性优先、80%+ 覆盖率、style guide 合规
  • startup — 硅谷创业公司:MVP 可交付性、技术债可不可控、上手成本
  • oss-maintainer — 开源维护者:CONTRIBUTING 指南、社区友好度、onboarding 体验

评分体系

S/A/B/C/D 五级:

等级 含义
S 该维度几乎完美,可作为参考实现
A 优秀,偶有小瑕疵
B 良好,有明显改进空间
C 及格,问题较多
D 不及格,需要重构

综合评分由各维度按 Flavor 权重加权聚合。

大仓库自适应

不是所有仓库都值得逐文件扫描:

代码行数 深度 审查范围
< 5,000 deep 全部源文件
5,000 – 50,000 standard 核心模块
> 50,000 quick 热点文件 top 20 + 入口 + 配置

热点文件通过 git log --stat 分析高频改动文件得出。

用法

# 基础
review https://github.com/xxx/yyy

# 指定视角
review https://github.com/xxx/yyy --flavor google
review https://github.com/xxx/yyy --flavor startup

# 指定维度
review https://github.com/xxx/yyy --dimensions security,performance

# 聚焦目录
review /path/to/project --focus src/core/

# 控制深度
review https://github.com/xxx/yyy --depth deep

技术实现

纯 Markdown/JSON,零代码依赖。跑在 Claude Code Agent 框架上,利用 Sub-Agent 并行能力。

关键设计决策:

  • Sub-Agent 之间不通信,避免复杂度
  • Sub-Agent 只输出 JSON,便于 Editor 解析
  • Phase 1 严格限制工具调用次数(≤10),控制 Token 消耗
  • 120 秒软超时,超时的维度标记为 timeout,不阻塞报告生成
  • Editor 阶段抽查 issue 引用的文件是否存在,防幻觉

后续计划

  • 历史对比:两次锐评的 diff,看质量是变好还是变差
  • 自动修复:不只说问题,直接生成 patch
  • CI 集成:push 代码自动生成锐评报告
  • 飞书/Slack 集成:报告推送到频道

仓库地址:https://github.com/haodehaode378/ruiping-skill

如果你有想被锐评的仓库,欢迎丢过来。你提的 bug/建议,我会优先排进下一版。