乐于分享
好东西不私藏

Vibe Coding 实战 系列三:AI 工具怎么工作 + 代码审查怎么做

Vibe Coding 实战 系列三:AI 工具怎么工作 + 代码审查怎么做

Vibe Coding 实战教程 · ③ / ⑧

引擎盖下:AI 编程工具的工作原理

你不需要理解 Transformer 架构才能用 Vibe Coding。就像你不需要理解发动机原理才能开车。

但你需要知道一些关键概念。因为理解了这些,你就知道什么时候该信任 AI,什么时候该自己上手。

三个关键组件

一个 AI 编程工具的内部,有三个关键部分在协作:

发动机:LLM

1. 大语言模型(LLM)— 发动机。

这是核心。Claude、GPT-4、Gemini 都是 LLM。它们通过阅读海量代码学会了”给定上下文,预测接下来应该写什么代码”。

关键特性:它不是在”搜索”代码,是在”生成”代码。每次输出都是根据你的 Prompt 和上下文即时生成的。这意味着同一个 Prompt 可能得到不同结果。

传感器:上下文

2. 上下文系统 — 传感器。

AI 怎么知道你的项目长什么样?靠上下文系统。不同的工具收集上下文的方式不同:

工具
上下文来源
Copilot
当前打开的文件 + 光标附近的代码
Cursor
当前文件 + 你手动引用的文件 + 项目索引
Claude Code
自动搜索相关文件 + 读取 CLAUDE.md(一个 Markdown 配置文件,记录项目规范和 AI 协作偏好)配置
Bolt.new
你描述的项目结构 + 已生成的代码

上下文越多,AI 的输出越准确。但上下文也有上限(叫”上下文窗口”),塞太多反而会分散注意力。

手和脚:工具调用

3. 工具调用系统 — 手和脚。

光能生成代码不够,AI 还得能把代码写进文件、运行命令、查看结果。这就是工具调用。

Cursor 的 Agent 模式可以:读取文件、创建文件、运行终端命令、搜索代码。

Claude Code 可以:读写文件、运行 bash 命令、搜索代码库、调用外部工具(通过 MCP(Model Context Protocol,一种让 AI 调用外部工具的开放协议))。

这些能力让 AI 从”只能建议”变成了”能执行”。

!AI 编程工具三大组件

为什么 AI 会犯错

AI 编程工具犯错的根本原因有三个:

上下文不够

1. 上下文不够。

它没看到你项目里的某个关键文件,所以不知道你已经在 utils.py 里写了一个类似的函数,又造了一个轮子。

知识截止

2. 知识截止。

训练数据有时间限制。如果你用的是 2024 年训练的模型,它可能不知道某个库在 2025 年做了重大 API 变更。

统计偏差

3. 统计特性。

LLM 本质上是在预测”下一个 Token 最可能是什么”。有时候”最可能”不等于”正确”。特别是处理边界情况和特殊逻辑的时候。

理解了这三个原因,你就知道怎么应对了:

  • 上下文不够 主动提供相关文件和信息
  • 知识过时 告诉 AI 你用的版本号
  • 统计偏差 对关键逻辑手动验证

对话上下文管理

和 AI 的对话会越来越长。AI 在对话中看到的每一条消息都会影响它的输出。这意味着:

前几轮对话的质量,决定了后面的质量。

如果你一开始给了清晰的项目结构和需求描述,后面的每轮对话 AI 都能保持一致的上下文。如果你一开始就模糊,后面会越来越偏。

核心建议

把 AI 当成一个能力很强但对你项目一无所知的新同事。你不会让新同事直接改代码,你会先给他介绍项目结构、技术栈、代码规范。对 AI 也一样。项目介绍越清楚,协作越高效。

下一节讲最重要的主题:怎么审查 AI 生成的代码,确保质量。

别盲信导航:代码审查与质量把控

2025 年的一项研究数据:AI 生成的代码中,约 45% 包含安全漏洞。

这个数字可能让你紧张。应该紧张。但紧张不等于不用,而是要建立一套审查流程。

回想 GPS 隐喻:导航说右转,你扫一眼路况再转。不是为了不相信导航,是为了安全。

AI 生成代码的五大类问题

问题类型
典型表现
风险等级
检查方法
安全漏洞
SQL 注入、XSS(跨站脚本攻击,一种 Web 安全漏洞)、硬编码密钥
安全扫描 + 人工审查
逻辑错误
边界条件未处理、空指针
写测试 + 手动走一遍逻辑
性能问题
N+1(一种数据库查询性能问题,循环中逐条查询而非批量查询)查询、内存泄漏
跑基准测试 + 看 profiling(性能分析,找出代码的耗时瓶颈)
代码风格
命名不一致、缺少错误处理
Lint 工具 + 代码审查
幻觉代码
调用不存在的 API、伪造函数
实际运行 + 查文档验证

最后一类”幻觉代码”特别值得注意。AI 有时候会非常自信地调用一个根本不存在的函数或库。代码看起来完全合理,但你一跑就报错。

三遍审查法

我用的审查流程,简单但有效:

先跑起来

第一遍:跑起来看效果。

不要先读代码。先运行,看结果是不是你想要的。如果运行结果就不对,读代码也没意义——直接让 AI 重写。

扫关键路径

第二遍:扫关键路径。

不用逐行读。只看三个地方:

  1. 输入处理 — 参数验证、类型检查做了没有
  2. 核心逻辑 — 主流程的思路对不对
  3. 输出处理 — 返回值、错误处理、边界情况

查安全依赖

第三遍:查安全和依赖。

  1. 有没有硬编码的密钥、Token、密码
  2. 有没有 SQL 拼接、eval(一个危险的 Python 函数,能执行任意字符串代码)、未转义的用户输入
  3. 引入的新依赖是否必要、是否可信

三遍做完,大概 5-10 分钟。比你从零写快得多,但足以挡住大部分问题。

!三遍审查法

让 AI 帮你审查 AI

一个有用的技巧:让 AI 审查自己(或其他 AI)生成的代码。

在 Cursor 或 Claude Code 里:

TEXT

请审查以下代码,重点关注:
1. 安全漏洞
2. 逻辑错误
3. 性能问题
4. 是否有更好的实现方式
[粘贴代码]

AI 审查 AI 不是完美的,但它能帮你发现很多你一眼看不到的问题。两个不完美的审查者加在一起,比一个强。

自动化质量门禁

除了人工审查,用工具设几道自动门禁:

门禁
工具
作用
Lint
ESLint / Ruff
代码风格问题
类型检查
TypeScript / mypy
类型错误
单元测试
pytest / Jest
逻辑正确性
安全扫描
Snyk / Bandit
已知漏洞
Git Hook
pre-commit
提交前自动检查

在项目一开始就让 AI 帮你配好这些工具。之后每次 AI 生成代码,门禁自动帮你挡住一部分问题。

核心建议

审查 AI 代码不是不信任 AI,是对用户负责。AI 不在乎代码跑在生产环境还是本地测试环境。你在乎。所以审查是你的责任,不是可选项。花 5 分钟审查,省 5 小时排故障。

下一节讲迭代——当 AI 的输出不完美时,怎么高效地让它改。

本系列共 8 篇,这是第 3 篇

下期预告

走偏了就调头:迭代与重构