具有高级判断力和严格评分标准的AI代码审查工具
lazycoder是一个代码审查代理,它对每个更改的代码块应用固定的17条规则(R1-R17),运行沙盒检查,并返回APPROVE、REQUEST_CHANGES或BLOCK的裁定。它设计为确定性、一致性和可审计的,具有配置驱动的策略和作为回归门的评估套件。
lazycoder 是一款基于人工智能的代码审查工具,旨在模拟资深开发者的判断力。它会对每次代码变更中的每个修改块应用一套固定的审查标准(包含17条规则,从R1到R17),并运行真实的沙盒检查,最终给出明确的裁定:通过(APPROVE)、请求修改(REQUEST_CHANGES)或阻止合并(BLOCK)。
该工具的核心设计哲学是确定性优先。所有可以纯逻辑实现的部分都采用纯逻辑,而将非确定性的语言模型(LLM)作为最后接入的组件。这种故障隔离策略确保当审查出现问题时,问题必然出在提示词或模型本身,而非底层管道——因为管道已经通过充分的测试证明其可靠性。
lazycoder 的审查规则集(R1-R17)涵盖了代码层面(数据结构、控制流、输入输出、失败模式、副作用、依赖)、安全层面(验证、密钥、注入)、简洁性、系统层面(状态、同步与异步、单体与微服务、不变量)以及可维护性、测试和兼容性。每一条规则都必须被评估,否则无法给出通过裁定。
配置采用声明式文件,存储在 config/ 目录下,包括项目上下文、防护栏、运行时设置、工作循环、审查规则、生产就绪检查、评估集和可观测性配置。这些文件可以像代码一样被审查、对比和替换。
lazycoder 的评估套件(config/evals.json)包含已知有缺陷和已知正确的案例,用于衡量审查工具本身的性能。作为CI门禁,它形成了一个闭环:审查工具有了自己的审查者,每次变更后都能检测自身是否仍然可靠。
该工具的开发严格遵循测试驱动开发(TDD),所有行为都先红后绿。领域模型使用严格的pydantic模型,使得无效状态无法表示。例如,通过的规则不能带有发现项,失败的必须带有。每个发现项必须引用规则ID和精确的文件:行号。
目前,lazycoder 已经实现了端到端管道:从差异解析、规则评估到汇总裁定。它支持两种模式:假客户端(用于测试,无需网络和API密钥)和真实客户端(可选的Anthropic API集成)。在首次真实运行中,模型检测到了E3评估案例中的SQL注入漏洞,触发了R7规则并给出了BLOCK裁定。
未来的路线图包括:在完整评估集上运行真实模型并追踪评分,以及发布GitHub Action以使该工具能直接作为PR门禁。
lazycoder 并不能完全取代人类审查者——重要决策仍需人工确认。但它消除了人类不擅长的部分:记住所有17条规则、在200个文件中保持一致性、以及证明检查确实运行过。