VS Code 联动 Ollama,Ryzen AI 实现本地代码补全
为什么要把 AI 助手搬回本地?
写代码时,最让人头疼的往往不是逻辑本身,而是那些重复的样板代码、复杂的类型定义,或者是面对一堆“祖传”老旧项目时的无从下手。以前我们习惯依赖云端的 Copilot 或各类在线大模型,但在处理公司内部核心代码、涉及敏感密钥或未公开算法时,把代码片段上传到第三方服务器总让人心里打鼓。哪怕服务商承诺不训练,数据在传输过程中的风险依然存在。
最近折腾了一下手头的 AMD Ryzen AI 笔记本(基于 Strix Halo 架构),发现本地跑大模型已经不再是“玩具”级别的体验。得益于统一内存架构,Radeon GPU 能直接调用系统大内存,跑起 7B 甚至 14B 参数的模型来相当流畅。更重要的是,这一切都可以完全离线进行。今天就来分享一个实战方案:如何在 VS Code 里联动本地运行的 Ollama 服务,打造一个既智能又绝对安全的私有代码助手。
环境准备:让 Ollama 在 Ryzen AI 上跑起来
工欲善其事,必先利其器。要在本地获得类似云端的响应速度,硬件调度是关键。Strix Halo 架构的优势在于打破了显存墙,只要你的内存够大(建议 32GB 起步),就能轻松加载量化后的大模型。
首先,去 Ollama 官网下载并安装对应系统的版本。安装过程很简单,一路默认即可。装好后,打开终端(PowerShell 或 Bash),我们需要拉取一个擅长代码生成的模型。这里推荐 qwen2.5-coder 系列,它在代码补全和指令遵循上表现非常出色。
在终端执行以下命令:
ollama run qwen2.5-coder:7b
如果是第一次运行,Ollama 会自动下载模型文件。下载完成后,它会直接进入交互模式。此时你可以随便问它一个 Python 问题,比如“如何用递归计算斐波那契数列”,观察一下响应速度。在 Ryzen AI 的加持下,首字延迟通常能控制在毫秒级,生成速度也能达到每秒几十个字元,完全跟得上思考节奏。
为了让它作为后台服务稳定运行,以便被编辑器插件调用,我们可以新开一个终端窗口运行:
ollama serve
默认情况下,Ollama 会监听 127.0.0.1:11434 端口。新版 Ollama 对 AMD 后端的支持已经相当成熟,通常能自动识别 Radeon GPU 并开启加速,无需手动配置繁琐的环境变量。如果你想在启动时固定某些参数(比如上下文长度),可以创建一个 Modelfile 来自定义模型行为,但对于大多数代码补全场景,默认配置已经足够好用。
VS Code 无缝集成:安装与配置 Continue 插件
模型跑起来了,接下来就是重头戏:把它接进 VS Code。市面上支持本地 Ollama 接口的插件不少,这里推荐使用 Continue,它的配置灵活且对本地模型友好。
- 打开 VS Code,进入扩展商店(快捷键
Ctrl+Shift+X)。 - 搜索
Continue,找到由 Continue.dev 发布的插件并安装。 - 安装完成后,左侧活动栏会出现一个对话气泡图标,点击打开侧边栏。
初次使用时,Continue 会引导你选择模型提供商。我们要做的很简单:
- 点击侧边栏右下角的齿轮图标(设置),打开
config.json配置文件。 - 找到
models数组,添加一个新的配置项。你需要指定provider为ollama,model名称与你刚才下载的保持一致(例如qwen2.5-coder:7b)。
配置示例如下:
{
"models": [
{
"title": "Local Coder",
"provider": "ollama",
"model": "qwen2.5-coder:7b"
}
],
"tabAutocompleteModel": {
"title": "Local Autocomplete",
"provider": "ollama",
"model": "qwen2.5-coder:7b"
}
}
注意,除了聊天模型,我还单独配置了 tabAutocompleteModel。这是实现“类 Copilot"灰色幽灵提示的关键。保存配置文件后,Continue 会自动连接本地的 Ollama 服务。如果一切正常,状态栏会显示连接成功。此时,你的编辑器已经完全脱离了云端,所有代码数据都在本机内存中流转。
实战演练:私有项目中的智能补全
配置好后,我们来实际感受一下。新建一个 Python 文件,尝试编写一个带有类型提示和文档字符串的递归函数。
当你输入函数定义的第一行:
def fibonacci(n: int) -> int:
稍作停顿,你会发现编辑器下方出现了灰色的补全建议。本地模型不仅补全了整个函数体,还自动添加了详细的 Docstring,解释了参数含义、返回值以及递归的终止条件。
def fibonacci(n: int) -> int:
"""
计算斐波那契数列的第 n 项。
参数:
n (int): 非负整数,表示数列的索引。
返回:
int: 第 n 项的斐波那契数值。
异常:
ValueError: 当 n 为负数时抛出。
"""
if n < 0:
raise ValueError("输入必须是非负整数")
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
这种体验最妙的地方在于“无感”。在以往,你可能需要切换到浏览器,复制粘贴代码,再改改变量名。而现在,模型就像住在你电脑里的资深同事,随时待命。
更关键的是安全感。假设你正在维护一个包含内部 API 密钥或特定业务逻辑的私有项目。使用云端服务时,你不得不担心这些敏感信息是否会被记录。但在本地环境下,无论你怎么测试、怎么让模型重构代码,数据始终没有离开过你的内存条。即使在断网的飞机上或保密会议室里,这套工作流依然完美运行。
对于更复杂的场景,比如重构一段缺乏注释的老旧 Java 代码,你可以在 Continue 的对话框中选中代码块,输入指令:“请为这段代码添加 Javadoc 注释,并识别潜在的硬编码敏感信息。”Ryzen AI 的算力能保证模型在几秒钟内给出结构清晰、逻辑严密的建议,甚至能主动指出哪里应该改用环境变量配置。
结语
将 AI 代码助手本地化,并不是要完全取代云端大模型的博学,而是为了在效率与安全之间找到一个最佳平衡点。对于日常开发、私有项目维护以及对数据隐私有严格要求的场景,一台搭载 Ryzen AI 的笔记本配合 Ollama 和 VS Code,足以构建出一个强大、离线且专属的智能开发环境。
这种“数据主权”掌握在自己手中的感觉,一旦体验过,就很难再回去了。下次当你面对敏感代码犹豫是否要粘贴到网页框时,不妨想想这个本地方案——它就在你的终端里,随时待命,守口如瓶。
更多推荐


所有评论(0)