news 2026/8/23 19:09:28

代码审查交给AI

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码审查交给AI

目录

为什么 AI 审代码比人稳

在 WorkBuddy 里怎么做

核心提示词长这样

实跑结果:6 个坑一个没跑掉

审查报告长什么样

几个边界要说清楚

WorkBuddy 支持接本地模型

支持原理

🛠️ 主流接入方式

⚙️ 配置步骤(以 Ollama 为例)

💡 实用建议

WorkBuddy 默认支持的云端模型

🧠 WorkBuddy 默认支持的云端模型一览

💡 模型选择小贴士


你有没有过这种经历:周五下午提了个 PR,等到下周三才有人 review,回复就一句话"逻辑看着没问题,过"。结果上线当天炸了——一个空指针,review 的人根本没看那行。

不是同事不负责,是人 review 代码有天然的弱点:会疲劳、会漏看、会凭感觉。一个几百行的 PR,能认真看到第 50 行的人都不多。

我现在的做法是:PR 提给我之前,先让 WorkBuddy 过一遍。它不是替代人,是替人把那些"低级但致命"的坑先扫出来。人只需要看业务逻辑对不对。

为什么 AI 审代码比人稳

人 review 是抽样检查,看到哪算哪。AI 是全文扫描,而且每次标准一致——不会因为"今天心情好"就多看你两行。

更重要的是,AI 不怯场。你让 junior 去 review 架构师的代码,他不敢提意见。WorkBuddy 不管你是谁,代码有问题就标出来。

我做了个实测:一段我自己写的下单代码,故意埋了 6 个坑(SQL 注入、并发不安全、精度丢失、资源泄漏、吞异常、漏校验)。丢给 WorkBuddy,一次性全揪出来了,还给了修复代码。

下面说怎么在 WorkBuddy 里跑通这套流程。

在 WorkBuddy 里怎么做

不需要装任何插件,三步:

第一步,把要审的代码文件准备好。可以是一个 Java 文件,也可以是 `git diff` 导出的改动文本。

第二步,在对话里让 WorkBuddy 读文件并审查。直接说:

> 读取 demo_code_review 目录下的 OrderService.java,按以下维度帮我做代码审查:空指针风险、SQL 注入、资源是否关闭、并发安全、异常处理、入参校验。每个问题标出文件行号、严重程度、修复代码。

WorkBuddy 会用 Read 工具把代码读进来,然后逐行分析。

第三步,让它把审查报告存成文件。在提示词里加一句"保存为 review_OrderService.md",它就自动 Write 到工作目录。

核心提示词长这样

这是我实际在用的审查提示词(可直接复制改路径):

你是一名资深 Java 代码审查专家。请读取 {文件路径},按以下维度逐行审查:

1. 空指针风险:所有对象调用前是否可能为空
2. SQL 注入:是否有字符串拼接 SQL
3. 资源关闭:Connection/Statement/ResultSet 是否在 finally 或用 try-with-resources 关闭
4. 并发安全:共享变量是否有竞态(++、非原子读写)
5. 异常处理:是否有 catch 空块、吞异常、printStackTrace
6. 数值精度:BigDecimal 是否用了 double 构造
7. 入参校验:公开方法是否校验了入参

输出要求:
- 按严重程度排序(🔴高危 / 🟡中危 / 🟢低危)
- 每条含:行号、问题、修复代码
- 最后给整体建议和"是否建议合并"
保存为 review_{文件名}.md

实跑结果:6 个坑一个没跑掉

这是我故意写的"问题代码"被 WorkBuddy 揪出来的部分:

// 修复后的安全版本(WorkBuddy 给出的建议之一)
public String createOrder(String userId, String productId, double amount) {
// 1. 入参统一校验
if (userId == null || productId == null || amount <= 0) {
throw new IllegalArgumentException("参数不合法");
}
// 2. BigDecimal 用 valueOf 避免精度丢失
BigDecimal price = BigDecimal.valueOf(amount);

// 3. PreparedStatement 防注入 + try-with-resources 自动关资源
String sql = "SELECT id FROM orders WHERE user_id = ? AND product_id = ?";
try (Connection conn = DataSourceHolder.getConn();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
ps.setString(1, userId);
ps.setString(2, productId);
List<String> ids = new ArrayList<>();
while (rs.next()) {
ids.add(rs.getString("id"));
}
// 4. AtomicInteger 解决并发计数
orderCount.incrementAndGet();
return "ok:" + ids.size() + ":" + price;
} catch (SQLException e) {
// 5. 打日志 + 抛业务异常,不吞
log.error("创建订单失败 userId={}", userId, e);
throw new OrderCreateException("订单创建失败", e);
}
}

注意 `orderCount` 字段也要改成 `private final AtomicInteger orderCount = new AtomicInteger(0);`,否则 `incrementAndGet()` 编译不过。WorkBuddy 在报告里也标了这一点。

审查报告长什么样

WorkBuddy 生成的报告是结构化 Markdown,每个缺陷带行号、严重程度、修复代码,最后给一个"是否建议合并"的结论。我一般把它贴在 PR 评论里,或者存进资料库长期留档。

实测下来,低级缺陷(注入、空指针、资源泄漏)它抓得比人准。业务逻辑类的(这个方法到底该不该这么设计)它给不出好建议,那部分还得人来看。

几个边界要说清楚

第一,别让它审整个大仓库。一次审一个文件或一个小 diff,质量最高。丢个几千行的模块进去,它会抓大放小。

第二,它的修复代码要人工确认能编译。上面那个例子,如果只改方法不改字段,AtomicInteger 那行会报错。AI 给的代码是参考,不是直接能合。

第三,敏感代码注意。如果代码不能出内网,就别用云端模型审。WorkBuddy 支持接本地模型,那个场景更合适。

第四,可以做成定时任务。如果你每天提很多 PR,可以用 automation_update 建个定时任务,每天下午跑一遍当天改动的代码文件,自动出审查报告。

WorkBuddy 支持接本地模型

支持原理

WorkBuddy 底层兼容OpenAI API 标准协议/v1/chat/completions格式)-2。因此,任何能提供该格式接口的本地推理服务(如 Ollama、LM Studio 等)都可以被 WorkBuddy 识别并接入-6。

🛠️ 主流接入方式

本地工具说明参考
Ollama最主流的方式,通过http://localhost:11434/v1接入--2
LM Studio同样提供 OpenAI 兼容 API,配置方式类似-1
vLLM / SGLang适合显卡玩家,性能更高-18

⚙️ 配置步骤(以 Ollama 为例)

第一步:安装 Ollama 并下载模型

访问 ollama.com 下载安装-7,然后在命令行拉取模型(以 qwen3:4b 为例):

ollama pull qwen3:4b

中文用户首选 qwen3:4b(约 2.5GB 内存,8GB 内存可跑),中文理解能力最强-7。

第二步:在 WorkBuddy 中添加自定义模型

  1. 打开 WorkBuddy 客户端,点击左下角头像 →设置模型-7

  2. 点击「+ 添加模型」「配置自定义模型」-6

  3. 提供商选择「自定义 / Custom」-6

  4. 填写以下参数-2-6:

字段填写内容
接口地址http://127.0.0.1:11434/v1/chat/completions
API Key任意非空字符串即可(如ollama
模型名称ollama list输出一致(如qwen3:4b
  1. 点击保存,模型会出现在 WorkBuddy 的模型选择器列表中,可直接使用-6。

💡 提示:配置信息仅保存在本地~/.workbuddy/models.json文件中,不上传云端-6-14。

💡 实用建议

  • 组合使用最省积分:本地模型处理日常简单任务(零消耗),云端模型处理复杂推理任务-7

  • 硬件建议:模型大小控制在 GPU 共享内存的 80% 以内,预留 20% 给系统-1

  • 故障排查:若配置后无法使用,检查接口地址是否遗漏/v1后缀,以及防火墙是否放行 11434 端口-2

配置完成后,你就可以在 WorkBuddy 中自由切换本地模型,实现完全离线的 AI 辅助体验了。

WorkBuddy 默认支持的云端模型

WorkBuddy 默认内置了丰富的云端模型库,覆盖了从日常办公到专业编程等多种场景。根据官方信息,它内置了13 个主流大模型,主要来自混元 (Hunyuan)DeepSeek智谱 (GLM)月之暗面 (Kimi)MiniMax这五家厂商-。

下面是这些内置模型的清单,以及它们的核心特点和适用场景。

🧠 WorkBuddy 默认支持的云端模型一览

模型系列具体模型核心特点与适用场景积分消耗系数
AutoAuto系统智能调度,根据任务自动选择最合适的模型。如果拿不准用哪个,选它就对了。视调用的具体模型而定-11
混元 (Hunyuan)Hy3 (Hy3 preview)腾讯自研,限时免费的思考模型,推理能力增强--2。限时免费-11
Hunyuan-2.0-Thinking同样是腾讯混元的思考模型,擅长逻辑推理--12。需查看官方文档
DeepSeekDeepseek-V4-Flash旗舰模型,速度优先,支持 1M 超长上下文,性价比高-11-2。x0.06-11
Deepseek-V4-Pro旗舰模型,性能优先,同样支持 1M 超长上下文-11。x0.16-11
智谱 (GLM)GLM-5.2支持1M 超长上下文,非常擅长处理长文档、长视频等长程任务--11。x0.79-11
GLM-5.1能力均衡,适合各类日常使用场景。x0.79-11
GLM-5v-Turbo原生多模态模型,支持图片理解。x0.95-11
月之暗面 (Kimi)Kimi-K3擅长处理复杂的长程自主任务,前端开发能力突出,在科研推理上表现也很出色--11。x1.62-11
Kimi-K2.7-Code面向编程场景优化的多模态模型--11。x0.57-11
Kimi-K2.6多模态模型,适合处理各类日常任务-11。x0.52-11
MiniMaxMiniMax-M3原生多模态,在代码编写和智能体任务方面表现优秀--11。x0.25-11
MiniMax-M2.7能力均衡,性价比高,适合日常使用--11。需查看官方文档

补充说明

  • 列表中的“积分消耗系数”和“限时免费”信息来自社区分享-11-2,具体政策请以 WorkBuddy 官方最新公告为准。

  • 除上表外,WorkBuddy 早期版本或部分文档中还曾提及GLM-5.0GLM-5.0-TurboGLM-4.7MiniMax-M2.5Kimi-K2.5等模型--12,它们可能已更新为表格中的新版本,使用时请以客户端内实际显示的模型列表为准。

💡 模型选择小贴士

这么多模型,该如何选择?这里有几个简单的原则供你参考:

  • 不确定用哪个:选Auto,让系统帮你做决定-12。

  • 日常任务:追求高性价比选Deepseek-V4-Flash-2;追求性能均衡选GLM-5.1MiniMax-M2.7-11。

  • 处理超长文档:选GLM-5.2Deepseek-V4系列-11。

  • 编程开发:优先考虑Kimi-K2.7-Code-11。

  • 需要图片理解:选择带“视觉”标签的模型,如GLM-5v-TurboMiniMax-M3-11。

  • 复杂推理任务:选择Hy3Hunyuan-2.0-Thinking等思考模型-12。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 19:09:17

DOM对象:操作元素

1.元素内容:innerHTML:元素内部的HTML文本innerText:元素内部当前可见的文本内容textContent:元素内部所有的文本除了innerHTML会解析html的标签输出为对应结构&#xff0c;其他则不解析&#xff0c;且在看源代码中&#xff0c;对应文本会以实体的方式呈现&#xff08;即转义&a…

作者头像 李华
网站建设 2026/8/23 19:07:04

L1与L2正则的本质区别:稀疏性、几何结构与泛化路径

1. 为什么L1和L2正则项不是“差不多”的替代品——从模型稀疏性本质说起 你有没有在调参时随手把 l1_ratio0.5 往里一填&#xff0c;心里想着“L1和L2混一混&#xff0c;总比不加强”&#xff1f;我试过&#xff0c;而且不止一次。结果是&#xff1a;验证集准确率涨了0.3%&am…

作者头像 李华
网站建设 2026/8/23 19:06:59

账单涨了,不是你用多了

摘要&#xff1a;8 月以来国内大模型集体涨价&#xff0c;DeepSeek V4-Pro 高峰输出价从 6 元涨到 27 元。很多人看到账单第一反应是"我是不是用多了"——其实用量没变&#xff0c;是单价涨了。本文拆开"账单用量单价"这三本账&#xff0c;并聊聊额度收紧后…

作者头像 李华
网站建设 2026/8/23 19:04:58

Codex 百万上下文怎么开?分享一下 8.17 更新后的配置方法

我今天看到 8 月 17 日关于 Codex 的一个更新&#xff1a;除了 API Key 的使用方式之外&#xff0c;通过 ChatGPT 账号登录 Codex 的用户&#xff0c;也可以使用百万级上下文了。刚好我平时也在用 Codex&#xff0c;所以研究了一下怎么配置&#xff0c;方法其实非常简单&#x…

作者头像 李华
网站建设 2026/8/23 19:01:09

自己动手写Agent Harness【hooks】:生命周期钩子实现

写在前面&#xff1a;系列是为了帮助大家更好的去理解Agent Harness基础设施&#xff0c;并不是想重复造轮子&#xff0c;真实开发建议选择一个成熟的SDK或Harness框架&#xff0c;才是最合适的选择~ 1. 引言&#xff1a;skill 和 rule 都不是强制层&#xff0c;底线靠谁 上一篇…

作者头像 李华
网站建设 2026/8/23 18:58:42

SpringBoot+Vue毕业生招聘平台开发实践

1. 项目概述 1.1 系统背景与意义 作为一名长期从事Java全栈开发的工程师&#xff0c;我最近完成了一个基于SpringBoot的毕业生信息招聘平台项目。这个系统的开发源于当前高校毕业生就业过程中存在的信息不对称问题。传统的校园招聘往往受限于时间和空间&#xff0c;而各类招聘…

作者头像 李华