写代码的时候最烦什么?不是需求改来改去,是写到一半,Copilot 转圈圈。网络闪一下就断,补全消失,思路跟着断。更别说金融、医疗的项目了——代码不敢往外传,哪怕就几个 token 去云端判断上下文,合规那边直接拒绝。
本地跑个模型,到底图什么
去年底出差坐高铁,进出隧道那几次,网络直接断掉,编辑器里的 Copilot 老老实实转圈——不是工具不好,是条件不允许。后来拿 Ollama 拉了 DeepSeek-Coder 本地跑,模型全放自己电脑上。补全弹出速度反而比预想快,最关键的:代码不经过任何外部 API。坦白讲,很多人对“自己代码先过一道别人服务器”这事一直有点介意,我也一样。
Ollama 像个模型运行器,把模型下载下来,通过命令行启动一个 API 服务。VS Code 那边装个插件,指向这个本地 API,补全和审查就都齐了。DeepSeek-Coder 是专门训练的开源代码模型,参数量从 1.3B 到 33B 都有。普通笔记本跑 7B 或者 14B 就够,配上 GPU 加速,出结果挺快的。不用折腾 Python 环境,不用手动装 PyTorch。Ollama 把模型权重和推理引擎打包在一起,几条命令搞定。
从零开始装过一次就明白了。Windows 上 Ollama 安装包 1.2 GB,下载加安装不到五分钟。拉模型嘛,看网络和硬盘——6.7B 那个大概 4GB。新卡老卡都行,纯 CPU 也能跑。算上 VS Code 插件配置,半小时内就能看到补全弹出来。网络慢的话,模型提前下好,U 盘带着走也行。下面就是把步骤捋清楚,不绕弯路。

先把 ollama 这个命令弄到手
刚才说的“两条命令就跑通”,第一行是 ——但你得先让 ollama 这个命令存在啊。它不是 Python 包,也不是 npm 模块,是一个独立的二进制运行时,类似 Docker Desktop 那种装完就能用的东西。
Windows 用户直接去 Ollama 官网 下安装包(1.2 GB),双击一路下一步,任务栏右下角出现小羊驼图标就算成。macOS 用 Homebrew:。Linux(Ubuntu/Debian 系)一行命令搞定:curl -fsSL https://ollama.com/install.sh | sh。别去 GitHub Releases 找 tar.gz 自己解压——除非你真想折腾 systemd 服务或者改 UID,不然纯属多此一举。
装完立刻终端敲:。必须 ≥ 0.1.30。0.1.29 及更早版本不支持 DeepSeek-Coder 的 llama3 架构 tokenizer 行为,拉模型会卡在 “loading tokenizer” 不动。我上周在一台老 Mac 上踩过这坑,重装才解决。
默认模型存储路径在 %USERPROFILE%\AppData\Local\Programs\Ollama\models(Windows)或 ~/.ollama/models(macOS/Linux)。4GB 的 加上后续可能拉的 14B/33B,C 盘很快告急。改环境变量就行:setx OLLAMA_MODELS "D:\ollama-models"(Windows)或 export OLLAMA_MODELS="/mnt/data/ollama-models"(Linux/macOS),重启终端生效。
拉模型,让它先开口说话
装完 Ollama,先别急着开 VS Code。让模型在终端里开口说话。DeepSeek-Coder 官方目前推两个主力轻量级版本:(推荐,RTX 4060 / M2 Pro 能跑满速)和 (Win10 笔记本核显、8GB 内存也能凑合用)。别试 33B,Ollama 默认不启 GPU offload,那玩意儿在 16GB 内存上会直接卡死在 quantization 阶段。
下载过程没进度条,但终端会打印 chunk hash。实测 6.7b 模型约 4.2GB,千兆宽带 3 分钟内落地。如果卡在 超过 10 分钟,大概率是镜像源抽风——临时切清华源:export OLLAMA_HOST=0.0.0.0:11434 + export OLLAMA_ORIGINS="https://mirrors.tuna.tsinghua.edu.cn/ollama/"(仅限拉取阶段,用完删掉)。拉完立刻验证:
输入一段 Python 片段,比如:
def fibonacci(n):
if n <= 1:
return n
# 这里按 Ctrl+D 提交,看它续写
它应该补出 return fibonacci(n-1) + fibonacci(n-2)。如果返回空行或报 tokenizer.decode() got an unexpected keyword argument 'skip_special_tokens'——说明你还在用 0.1.29 或更旧版,回去重装。
注意

让显卡动起来,别让 CPU 扛着
模型能跑了,但CPU推理那速度……写一行代码等两秒补全,我试了十分钟就想摔键盘。代码补全这种高频交互,延迟超过 500ms 基本就没法用。是时候让显卡干活了。Ollama 对 NVIDIA GPU 的支持挺省心的——它默认会去抓 CUDA 环境。但你得先确认两件事装好了:NVIDIA 驱动(建议 525.xx 以上)和 CUDA Toolkit 11.8+。别装太新的 CUDA 12.6,我踩过坑,Ollama 0.1.34 对 12.x 支持有问题,启动直接报 。
验证很简单:终端敲 nvidia-smi,看到显卡列表和显存占用就说明驱动正常。然后跑 ,随便输入一段代码,观察显存变化——6.7b 模型量化后大概占 4.8GB 显存,如果你的卡只有 8GB,开个浏览器再加 VS Code 差不多就满负荷了。别硬跑 33B,除非你的是 RTX 4090 24GB。如果显存没变化、CPU 占用飙升,说明 GPU 没生效。这时候手动 export 一下环境变量:
# Linux/macOS
export OLLAMA_CUDA=1
# Windows (PowerShell)
$env:OLLAMA_CUDA="1"
# 然后重启 Ollama 服务
ollama serve
再跑一遍,nvidia-smi 里应该能看到 进程占着显存了。如果还不行,检查 CUDA 版本—— 输出低于 11.8 的话,去 NVIDIA 官网下载 CUDA Toolkit 11.8 重装。还有个小坑:双显卡笔记本(集显+独显)可能默认走核显。Win 用户去「图形设置」把 ollama.exe 手动指定为「高性能 NVIDIA 处理器」。Linux 用户要确认 切换到了 nvidia 模式。显存够用的话,补全延迟能从 CPU 的 2~3 秒降到 200~400ms,这才算真正可用的代码助手。
让 VS Code 认识本地模型
GPU 加速跑通了,但 VS Code 还是哑巴——它不认识你本地那个正在显存里喘气的 。别急,Ollama 默认不自动暴露 API;得手动喊它一声:。终端执行这行命令(别加 & 后台运行,先盯着日志看):
看到 就算成功。这个端口是硬编码的,改不了,也别想换——Ollama 的 REST 接口就认这口锅。如果提示端口被占, 或 netstat -ano | findstr :11434 查进程,杀掉再试。
VS Code 插件选 Continue,不是 CodeGPT。CodeGPT 配置太糙,模型下拉列表里压根不显示本地 Ollama 模型。Continue(v1.0.59+)才是目前唯一能自动识别 并列出 ollama 模型的插件。装完进设置 → Extensions → Continue → Configuration,填三处:API base 设为 ,Model 选 ,Completions 打开。别碰 Temperature,默认 0.2 就够稳。
新建一个 main.py,敲 def parse_,光标停住——不是按 Ctrl+Space 才触发,是实时飘出建议。第一次延迟略高(约 300ms),后续基本贴着键盘节奏走。如果卡住不动,检查 VS Code 是否用了 Remote-SSH 或 WSL:Ollama 服务必须和插件在同一个系统上下文里,跨环境会连不上 localhost。补全能动了,审查还没上线——那是下一章的事。现在,你手边的 IDE 已经有了自己的副驾驶,只是它还不会主动提醒你 os.system() 有多危险。
自己定审查规则,比等别人 CR 舒服
补全终于能跟手了,但代码审查才是本地大模型真正拉开差距的地方。云端 Copilot 不敢让你写自定义审查规则——你没法让它“别光看语法,帮我查查这个 SQL 拼接是不是有注入风险”。本地跑 DeepSeek-Coder 就不一样了,Prompt 怎么写,它就怎么审。我是在一次 CR 被怼之后才认真搞这事的。同事指着我的 exec(raw_input) 说“你这是在给黑客开后门”,我才意识到——IDE 的静态检查根本抓不住这种动态执行的危险。于是我把这个场景塞进了 Continue 的 Slash Command。
Continue 插件支持自定义 Slash Command,配置文件在 .continue/config.json。加这么一段:
{
"slashCommands": [
{
"name": "review",
"description": "审查当前文件,找 bug、性能坑、安全隐患",
"prompt": "请以资深代码审查员的身份审查以下代码。列出所有潜在 bug、性能问题、安全漏洞,以及可读性改进。每条问题附带行号和建议修复代码。代码:\n\n{{selectedCode}}"
}
]
}
在编辑器里选中代码段,按 Ctrl+Shift+R 然后输入 /review,模型就会按你的 Prompt 输出。实测对 Python 的 os.system()、JavaScript 的 eval() 都能精准警告。C++ 的裸指针越界也能抓到七成左右。比 Clang-Tidy 的静态分析多了一层语义理解。默认的 DeepSeek-Coder 审查风格偏保守,经常说“这段代码可以改进”,但不告诉你具体怎么改。我调了 Ollama 的 Modelfile:
FROM deepseek-coder:6.7b
PARAMETER temperature 0.1
PARAMETER top_p 0.9
SYSTEM """
你是一个严格的代码审查员。只输出明确的问题和建议,不要写“总体来说”这类废话。每条问题必须附带行号和修正方案。
"""
然后 ,把 Continue 的 Model 换成 my-coder。再跑 /review,输出直接变成了“第23行:SQL 使用 f-string 拼接,有注入风险,建议改用参数化查询”。这才是审查该有的样子。有个小坑:审查大文件(300+ 行)时上下文窗口容易超,我一般只选中怀疑的片段而不是全文件扔进去。DeepSeek-Coder 的 4096 token 上下文对付单函数绰绰有余,但整个模块塞进去它会走神。本地审查的质量上限取决于你写 Prompt 的认真程度。我试过让模型审查自己刚才生成的代码,它会自我批评得特别狠——甚至把没问题的写法也挑出来说“风格不一致”。所以审查命令最好单独配一个低 Temperature 的模型副本,别和补全混用同一个。写代码这么多年,第一次觉得 IDE 真的在“看”我写的东西,而不只是帮我补括号。把审查规则握在自己手里,比等别人 CR 时被怼要舒服得多——至少被怼也是被自己的模型怼,面子上过得去。





评论