前言
前段时间我实现了一个基于 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 代码审查工具的输出更加专业、直观、易用。核心改进包括:
- 程序报错样式:让输出像编译器报错,简洁专业
- 视觉区分:颜色和表情让问题级别一目了然
- 进度反馈:让用户知道审查进行到哪一步
- 减少误报:通过优化 prompt 提高审查准确性
这些优化虽然看似简单,但大大提升了用户体验。
Github: github.com/GALA009/AI-…