为什么需要本地代码审查
传统代码审查(Code Review)依赖人工逐行检查,耗时久、标准不统一。而托管的 AI 审查服务(如 GitHub Copilot、CodeRabbit)虽然强大,却存在两个痛点:
- 代码隐私:商业代码发送到外部服务器,很多公司不批准
- 成本:按量计费,团队大了费用不低
2025~2026 年,开源模型(DeepSeek Coder、Qwen2.5-Coder、CodeGemma)的能力已经足够胜任常规审查任务,配合 Ollama + Continue.dev,你可以在 VS Code 里搭建一套完全本地运行、零成本、可定制审查规则的代码审查助手。
整体架构
1
2
3
4
5
6
7
8
9
10
|
┌─────────────────────┐
│ VS Code + Continue │ ← IDE 插件,负责交互
├─────────────────────┤
│ Continue 配置 │ ← 设定模型、审查规则、prompt 模板
├─────────────────────┤
│ Ollama (本地 API) │ ← 运行开源代码模型
├─────────────────────┤
│ DeepSeek-Coder / │ ← 实际的模型推理
│ Qwen2.5-Coder │
└─────────────────────┘
|
所有请求都在你本机完成,断网也能用。
第一步:安装 Ollama 并拉取模型
Ollama 把模型下载、量化、推理全部封装成了 ollama run 一行命令,无需纠结 CUDA 版本或 Python 依赖。
1
2
3
4
5
6
7
8
|
# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh
# 拉取一个适合代码审查的模型(6B 参数,量化后约 3.5GB)
ollama pull deepseek-coder:6.7b-instruct-q4_K_M
# 验证运行
ollama run deepseek-coder:6.7b-instruct-q4_K_M "检查这段 Python 代码的问题:"
|
小贴士:GPU 显存 ≤4GB 用 qwen2.5-coder:3b 或 deepseek-coder:1.3b;≥8GB 推荐 deepseek-coder:6.7b。
第二步:安装 Continue.dev 扩展
Continue 是 VS Code 的开源 AI 编程插件(类似 Copilot 但支持本地模型)。
- 在 VS Code 扩展市场搜索 “Continue” 并安装
- 安装后左侧出现 Continue 图标
- 打开命令面板(
Cmd+Shift+P),执行 Continue: Open Config
配置文件位于 ~/.continue/config.json,我们把它改成使用本地 Ollama 模型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
{
"models": [
{
"title": "DeepSeek-Coder Local",
"provider": "ollama",
"model": "deepseek-coder:6.7b-instruct-q4_K_M",
"contextLength": 16384
}
],
"tabAutocompleteModel": {
"title": "Qwen2.5-Coder 3B",
"provider": "ollama",
"model": "qwen2.5-coder:3b"
}
}
|
为什么用两个模型? deepseek-coder:6.7b 深度推理强,用于审查大段代码;qwen2.5-coder:3b 轻量快速,用于行内补全和简单提示。
第三步:编写审查 Prompt
Continue 支持自定义 Slash 命令。在 config.json 中追加一个 /review 命令:
1
2
3
4
5
6
7
8
9
|
{
"slashCommands": [
{
"name": "review",
"description": "审查选中代码的变更",
"prompt": "你是一个资深的代码审查员。请严格审查以下代码,按这个格式输出:\n\n## 🔴 关键问题\n严重错误或安全漏洞,必须修复\n\n## 🟡 改进建议\n代码风格、性能优化、可维护性\n\n## ✅ 好的实践\n值得肯定的写法\n\n请用中文回复,每条问题附上对应的行号和修改建议。"
}
]
}
|
这段配置做了什么:定义了一个 /review 命令。在 VS Code 中选中代码,输入 /review,模型就会按固定格式输出结构化的审查结果。
第四步:实战演示
假设你写了这样一段代码,选中它并在 Continue 输入 /review:
1
2
3
4
5
6
7
8
|
def get_user_data(user_id):
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
query = f"SELECT * FROM users WHERE id = {user_id}"
cursor.execute(query)
data = cursor.fetchone()
conn.close()
return data
|
模型审查后输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
## 🔴 关键问题
1. **SQL 注入漏洞(第4行)**:直接拼接 user_id 到 SQL,恶意输入可删除全表
→ 修复:使用参数化查询 `cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))`
2. **连接未管理(第2行)**:若第6行前抛出异常,连接不会关闭
→ 修复:使用 `with sqlite3.connect('users.db') as conn:`
## 🟡 改进建议
1. 缺少异常处理:数据库查询应用 try/except 包裹
2. 硬编码数据库路径:`users.db` 建议改为配置参数
## ✅ 好的实践
函数职责单一,只做查询一件事
|
这种结构化输出比人工 Review 更一致——团队所有人都看到同一套标准。
进阶:MCP 协议 + CI 流水线
Continue 已支持 MCP(Model Context Protocol),可以把本地审查能力接入 CI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# .github/workflows/code-review.yml
name: Local AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Local Review
env:
OLLAMA_HOST: http://localhost:11434
run: |
npx @continuehq/mcp-server-review \
--model deepseek-coder:6.7b \
--diff <(git diff origin/main...HEAD)
|
注意:CI 环境需要至少 4GB 可用内存。如果 CI 节点没有 GPU,模型跑在 CPU 上约需 6~10 秒。
效果对比
| 方案 |
隐私 |
延迟 |
成本 |
定制度 |
| GitHub Copilot Review |
❌ 云端 |
~5秒 |
$19/月/人 |
低 |
| CodeRabbit |
❌ 云端 |
~10秒 |
按量计费 |
中 |
| 本地方案 |
✅ 本地 |
2~8秒 |
免费 |
高 |
本地延迟取决于硬件:M 系列 Mac 约 24 秒,普通 CPU 约 610 秒。
总结
搭建一套可用的本地代码审查助手只需三步:
- 装 Ollama + 拉模型 — 5 分钟
- 配 Continue 插件 — 改一行 JSON
- 写审查 Prompt — 定制团队规范
这套方案的核心价值不是替代人工审查,而是把重复性、标准化的检查交给 AI,让人 Reviewer 聚焦在架构设计和业务逻辑。对于注重代码安全的团队或个人开发者,这是零成本、高收益的提效方式。