为什么要把 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,它的配置灵活且对本地模型友好。

  1. 打开 VS Code,进入扩展商店(快捷键 Ctrl+Shift+X)。
  2. 搜索 Continue,找到由 Continue.dev 发布的插件并安装。
  3. 安装完成后,左侧活动栏会出现一个对话气泡图标,点击打开侧边栏。

初次使用时,Continue 会引导你选择模型提供商。我们要做的很简单:

  • 点击侧边栏右下角的齿轮图标(设置),打开 config.json 配置文件。
  • 找到 models 数组,添加一个新的配置项。你需要指定 providerollamamodel 名称与你刚才下载的保持一致(例如 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,足以构建出一个强大、离线且专属的智能开发环境。

这种“数据主权”掌握在自己手中的感觉,一旦体验过,就很难再回去了。下次当你面对敏感代码犹豫是否要粘贴到网页框时,不妨想想这个本地方案——它就在你的终端里,随时待命,守口如瓶。

Logo

免费领 200 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐