AI 代码审查工具优化实战:从功能实现到体验提升

88 阅读4分钟

前言

前段时间我实现了一个基于 DeepSeek AI 的 Git 提交时自动代码审查工具。工具虽然能正常工作,但用户体验还有很大提升空间:输出冗长、问题级别不清晰、缺少进度反馈。今天,我对工具进行了全面优化,让审查结果更直观、更专业。

优化前的痛点

最初版本的输出是这样的:

========== DeepSeek 代码审查结果 ==========

你是一个严格的资深代码审查专家,请审查下面这次 git 提交的变更 diff。

1. 总体评价
本次提交的代码整体质量良好,但存在一些需要改进的地方。

2. 严重问题
- 【严重】在 src/utils/api.js 第 42 行,未处理空指针异常,可能导致程序崩溃
- 【严重】在 src/components/Button.tsx 第 15 行,缺少 PropTypes 类型检查

3. 一般问题
- 【一般】代码中存在一些性能优化的空间

4. 建议与优化
建议使用 useMemo 优化性能...

==========================================

问题很明显:

  • 输出冗长:包含大量描述性文字,关键信息被淹没
  • 级别不清晰:虽然有分级,但视觉上不够突出
  • 缺少进度反馈:不知道审查进行到哪一步
  • 不够专业:不像工具报错,更像 AI 对话

优化方案

1. 程序报错样式改造

我的第一个优化目标是让输出像编译器或 linter 的报错,简洁、专业、易读。

改造思路:

  • 移除所有描述性文字,只保留关键信息
  • 使用统一的格式:级别: [文件路径:行号] 问题描述
  • 按级别分组显示,每个级别显示统计数量

优化后的输出:

[deepseek-review] 代码审查发现问题:

❌ 严重问题 (1):
  ERROR: [src/utils/api.js:42] 未处理空指针异常,可能导致程序崩溃

⚠️ 一般问题 (1):
  WARN:  [src/components/Button.tsx:15] 缺少 PropTypes 类型检查

💡 优化建议 (1):
  INFO:  [src/hooks/useAuth.js:8] 建议使用 useMemo 优化性能

这样的输出一目了然,格式统一,专业感强,像 ESLint、TypeScript 编译器的输出。

2. 颜色和表情区分

为了让不同级别的问题更直观,我添加了颜色和表情符号。

实现方式:

  • 使用 ANSI 颜色码:红色(ERROR)、黄色(WARN)、蓝色(INFO)
  • 添加表情符号:❌(严重)、⚠️(警告)、💡(建议)、✅(成功)

实现方式: 使用 ANSI 颜色码和表情符号,让不同级别的问题在视觉上更突出。优化后,颜色 + 表情的组合让问题严重程度一目了然。

3. 审查进度和文件显示

用户最关心的问题之一:审查进行到哪一步了?正在审查哪些文件?

实现方案:

  • 在审查开始前,显示待审查的文件列表
  • 审查过程中,显示当前正在审查的文件
  • 使用动态提示,让用户知道工具在工作

实现要点:git diff 中解析文件列表,在审查开始前展示;使用动态提示显示审查进度,完成后自动清除。

效果展示:

[deepseek-review] 开始代码审查...

待审查文件 (3 个):
  1. 📄 src/utils/api.js
  2. 📄 src/components/Button.tsx
  3. 📄 src/hooks/useAuth.js

🔍 正在审查: src/utils/api.js, src/components/Button.tsx, src/hooks/useAuth.js...

这样用户就能清楚地知道有多少文件需要审查、具体是哪些文件,以及当前审查进度。

4. Prompt 优化减少误报

在测试过程中,我发现 AI 经常误报一些已经正确实现的功能。比如脚本明明有 shebang 行,AI 却报告"缺少 shebang"。

问题分析:

  • AI 对 diff 格式的理解不够准确
  • 缺少明确的识别规则
  • 过度关注格式问题,而不是实际功能缺陷

优化策略:

在 prompt 中添加详细的识别规则:明确如何识别 shebang(以 #!/ 开头),提示 AI 查看 diff 时注意 + 开头的行表示新增;强调只关注实际功能缺陷,不要过度关注格式;要求同一个问题只报告一次,避免重复。

优化效果:

  • 误报率大幅降低
  • 审查结果更准确
  • 减少了不必要的干扰

总结

通过这次优化,我让 AI 代码审查工具的输出更加专业、直观、易用。核心改进包括:

  1. 程序报错样式:让输出像编译器报错,简洁专业
  2. 视觉区分:颜色和表情让问题级别一目了然
  3. 进度反馈:让用户知道审查进行到哪一步
  4. 减少误报:通过优化 prompt 提高审查准确性

这些优化虽然看似简单,但大大提升了用户体验。

Github: github.com/GALA009/AI-…