在 Mac 上使用 VS Code、Continue 和 Ollama + Qwen2.5-Coder 搭建免费的本地 AI 编程助手

最近 Cursor 这款编程神器如火如荼,吸引了众多开发者的目光。然而,尽管 Cursor 功能强大,其高昂的价格却让许多个人开发者和小型团队望而却步;同时,类似 Cursor 的工具,都是基于云端大模型的,很多对于隐私比较看重的希望更多使用本地大模型的方案。基于上述原因,本文将为 Mac 用户(需要你的电脑配置较高最好是 M 系列芯片才更好)介绍一种基于 VS Code、Continue 插件和 Ollama Qwen2.5-Coder 的本地化开源解决方案,让您以更低的成本体验 AI 编程助手的强大功能。

系统环境

macOS Sonoma 14.6.1
VSCode 1.93.1
Continue 0.8.52
Ollama 0.3.11

1. VS Code 下载&配置

VS Code 简介
Visual Studio Code 是一款轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并支持 Windows、macOS 和 Linux 系统。它内置了对 JavaScript、TypeScript 和 Node.js 的支持,并拥有丰富的扩展生态系统,可以支持其他语言和运行时环境(如 C++、C#、Java、Python、PHP、Go、.NET)。

VS Code 可以从其官方网站下载[3]。
下载地址:
https://code.visualstudio.com/

VS Code+CLang 环境配置
我这里使用 C++ 进行演示,按照下面的官网教程配置了 VSCode+CLang 环境:
https://code.visualstudio.com/docs/cpp/config-clang-mac

比如我这里就安装了 C/C++ Extension Pack 这个套装就把 C++ 相关的插件都安装好了。
安装和配置教程参考:
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack

当然你也可以配置任何你需要的语言环境,这些不是本文重点,这里就不赘述了。

2. Ollama + Qwen2.5 Coder 下载&配置

2.1 Ollama 简介

Ollama 是一个开源项目,旨在简化大型语言模型的本地部署和使用[4]。它的主要特点包括:

  • 支持多种流行的开源 AI 模型,如 Llama 2、CodeLlama 和 Qwen。
  • 提供简单的命令行界面,方便模型的下载、运行和管理。
  • 支持自定义模型和参数调整,以满足特定需求。
  • 优化了本地运行性能,可以在个人电脑上流畅运行大型语言模型。
  • 提供 API 接口,便于与其他应用程序集成。

介绍网站:
https://ollama.com/

2.2 Qwen2.5-Coder 简介

Qwen2.5-Coder 是通义千问团队开发的先进 AI 编程助手,提供 1.5B、7B 和即将推出的 32B 三种规模模型。它支持 128K tokens 上下文长度和 92 种编程语言,通过 5.5T tokens 的大规模训练数据显著提升了代码生成、推理和修复能力。7B 版本在多项评估中超越了更大规模模型,成为当前最强大的基础代码模型之一。Qwen2.5-Coder 不仅在编程方面表现出色,还保持了优秀的数学和通用能力。通过指令微调的 Qwen2.5-Coder-Instruct 版本进一步增强了多语言编程和复杂指令遵循能力。采用 Apache 2.0 许可,旨在加速代码智能领域的应用和创新。[1]

这一模型就是我们希望本地运行的模型,本篇文章中我们后面会使用 Qwen2.5-Coder-Instruct 来做实例。
模型介绍页面:
https://qwenlm.github.io/blog/qwen2.5-coder/

从介绍中我们可以看到其表现比大部分开源模型更好:

你也可以直接在 Hugging Face 进行简单体验:
https://huggingface.co/spaces/Qwen/Qwen2.5-Coder-7B-Instruct

2.3 Ollama 下载安装

对于 Ollama,Mac 用户可以访问官网下载安装:
https://ollama.com/

双击解压后的 Qllama.app 按照步骤一步一步安装 ollama 命令行工具:

2.4 配置 Ollama 和 Qwen2.5-Coder-Instruct 等模型

Chat 功能模型:Qwen2.5-Coder-Instruct 7B
该模型参见如下页面:
https://ollama.com/library/qwen2.5-coder

打开终端,运行以下命令下载 Qwen2.5-Coder-Instruct 7B 和 1.5B 模型,本篇文章发布时只有 7B 模型选择,更强大的模型还没有开放,后续也可以更换:

首先,下载一个 7B 模型,用于 Chat 窗口的指令对话,这一模型相对会慢一些,但是相比几十上百B的模型,本地电脑大多还能跑得动:

然后就是下载一个 4.7G 的文件,需要一段时间,如果成功的话就是类似如下界面:

Autocomplete 功能模型:StarCode2 3B
对于 Autocomplete,官方推荐的是 StarCode2 3B,实测下来这个模型更大所以会慢一点,但是效果的确好一些。如果电脑配置比较好的也可以安装这个:
网址:https://ollama.com/library/starcoder2

拉取模型:

如果这个跑不动的话,可以用更小的模型 DeepSeek Coder 1.3B:

总之,由于 Autocomplete 需要更频繁和快速的运行,但并不像 Chat 那样需要处理复杂的输入,从效果或者功耗考虑,最好的就是用专用的小而快的模型。

Embedding 功能模型:Nomic Embed Text
对于 Embedding 功能,官方推荐为 Nomic Embed Text 模型,这一模型很小:
网址:https://ollama.com/library/nomic-embed-text

拉取模型:

如果需要关闭 Qllama 进程可以使用下面的命令:

2.5 配置 OpenWebUI 测试 Ollama 模型(可选)

当然你也可以配置一个类似 OpenAI ChatGPT 的聊天页面,可以自动切换这些模型来进行测试。OpenWebUI 就是一个 Ollama 官方支持的 Web 应用,安装方法建议使用 Docker 安装方式:

然后打开网页:http://localhost:3000/ 即可使用

演示功能:

参考页面:https://openwebui.com/

3. Continue 插件安装&配置

Ollama 和 Qwen2.5 Coder 模型安装完成后,在 VS Code 中安装 Continue 插件。打开 VS Code,使用快捷键 Cmd+Shift+X 进入扩展市场,搜索并安装 "Continue" 插件。

3.1 Continue 插件简介


Continue 是一个强大的 VS Code 插件,旨在将 AI 编程助手无缝集成到您的编程工作流程中[2]。它的主要特点包括:

  • 支持多种 AI 模型,包括本地模型和云端服务。
  • 提供代码补全、解释、重构和生成功能。
  • 可以根据上下文理解您的代码和注释,提供更精准的建议。
  • 支持自定义提示和工作流,以适应不同的编程需求。
  • 具有隐私保护功能,可以在本地运行 AI 模型,保护您的代码安全。

3.2 Continue 插件安装

要在 Visual Studio Code 中安装 Continue 插件,请按照以下步骤操作:

  1. 打开 Visual Studio Code:启动您的 Visual Studio Code 编辑器。
  2. 访问扩展市场:在左侧活动栏中,点击扩展图标(通常是一个四方形的图标),或者使用快捷键 Ctrl+Shift+X
  3. 搜索 Continue 插件:在扩展市场的搜索框中输入“Continue”,然后按回车键。
  4. 安装插件:在搜索结果中找到 Continue 插件,点击“安装”按钮。
  5. 配置插件:安装完成后,您可能需要根据需要进行一些配置。可以参考 Continue 的官方文档以获取详细的配置说明。
  6. 重启 VS Code:为了确保插件正常工作,建议重启 Visual Studio Code。

重启后使用快捷键 Cmd+L 打开对话框,建议将对话框拖动到右侧边栏:

在这里可以使用免费的测试账号,有 50 次使用 Claude Sonnet 3.5 大模型的机会。不过本文中我们主要讲怎么配置本地 Qwen2.5 Coder 模型。

通过这些步骤,您就可以成功在 Visual Studio Code 中安装 Continue 插件,开始使用它来增强您的开发体验。

3.3 Continue 插件配置 Ollama + Qwen2.5 Coder 模型

接下来,在 VS Code 中配置 Continue 插件使用该模型。

配置 Chat 功能模型

Chat 部分模型只需要在聊天窗口点击模型选择菜单并添加模型即可:

首先添加模型:

添加时选择为 Ollama 选择 Autodetect 他就会自动检测你已经安装好的本地模型。

如果没有问题,就可以在列表中看到这两个模型,我们这里把 7B 模型设为 Chat 使用的本地模型:

如果你遇到生成较长的代码被截断情况,可以编辑 config.json 文件将这一段修改为(增加 maxTokens 设置,默认为 600):

配置 Autocomplete 功能模型

如果你使用 StarCode2 3B 可以修改为如下配置:

如果你使用 DeepSeek Coder 1.3B 可以修改为如下配置:

上面几个模型在不同编程语言中表现不太一样,官方推荐是 StarCode2 3B,如果电脑配置比较好建议用这个,否则可以考虑 DeepSeek Coder 1.3B。

PS:虽然 Qwen2.5 Coder 也提供了 1.5B 小模型,但是官方不推进,因为这个模型没有针对补全任务进行优化。你可以自行试试怎么样,不过如果你使用的话可能会遇到下面的提示:

配置 Embedding 功能模型

Continue 附带一个内置的 @codebase 上下文提供程序,可让您自动从代码库中检索最相关的代码片段。假设您已经设置了聊天模型(例如 Codestral、Llama 3),则由于 Ollama 和 LanceDB 的嵌入,您可以将整个体验保留在本地。截至目前,官方建议使用 nomic-embed-text embeddings

这一部分模型官方推荐为 Nomic Embed Text,可以修改为如下配置:

4. 使用 Continue 进行 AI 辅助编程

Continue 插件提供了多种 AI 辅助编程功能,以下是一些常用的方法[2]:

4.1 Chat 聊天功能

参考:https://docs.continue.dev/chat/how-to-use-it

右侧的 Chat 聊天室可以任意进行提问,比如想不到哪种用法可以直接问。当然作为编程助手 Continue 比较特别是可以把代码作为 Context 提问。常见的比如:

高亮一段代码作为 Context 提问

选中一段代码,然后用 Cmd + L 快捷键加入聊天窗口提问:

使用 @ 引用 Context

还有很常见的方式是使用 @ 的一系列标记来作为 Context 在聊天窗口引用,常见的比如 @一个函数名、@一个文件、@codebase 作为整个工程等:

Continue.dev 有很多常用的引用标签,比如:

  • 当前活动文件

    发送请求时按 Cmd/Ctrl + Option + Enter 可以包含当前打开的文件作为上下文。

  • 特定文件

    输入 @files 并选择文件,可以将工作区中的特定文件包含为上下文。

  • 特定文件夹

    输入 @directory 并选择目录,可以将工作区中的特定文件夹包含为上下文。

  • 整个代码库

    输入 @codebase 可以将整个代码库包含为上下文。

  • 文档网站

    输入 @docs 并选择文档网站,可以将特定的文档网站包含为上下文。

  • 终端内容

    输入 @terminal 可以将 IDE 中的终端内容包含为上下文。

  • Git 差异

    输入 @diff 可以包含当前分支的所有更改作为上下文。

  • 其他上下文

    Continue.dev 还提供了其他内置的上下文提供者,并允许创建自定义的上下文提供者。

这里有一些更详细的说明:
https://docs.continue.dev/chat/context-selection

使用演示:

4.2 Tab Autocomplete 自动代码补全功能

Continue.dev 的自动完成功能可以在您输入代码时提供内联代码建议。以下是如何使用这个功能的详细说明:

开启自动完成功能

要启用自动完成功能,您可以:

  • 点击 IDE 右下角状态栏中的"Continue"按钮
  • 或者确保在 IDE 设置中勾选了 Enable Tab Autocomplete 选项

使用自动完成功能

  • 接受完整建议

    当出现建议时,按 Tab 键可以接受整个建议。

  • 拒绝建议

    如果您不想使用当前的建议,按 Esc 键可以拒绝它。

  • 部分接受建议

    如果您只想接受建议的一部分,可以使用更精细的控制:

    • Cmd(Mac)或 Ctrl(Windows/Linux)+ 右箭头键(→)
    • 这样可以逐词接受建议的部分内容

通过这些简单的操作,您可以充分利用 Continue.dev 的自动完成功能,提高编码效率。根据您的需求,灵活地接受、拒绝或部分接受代码建议。

使用演示:

4.3 代码编辑

Edit 功能介绍

Edit 功能是 Continue.dev 提供的一个便捷工具,允许您直接在当前文件中修改代码。您只需要高亮想要修改的代码块,描述您想要进行的更改,然后系统就会生成内联的差异(diff),您可以选择接受或拒绝这些更改。

Edit 功能特别适合进行小型、快速的代码更改,例如:

  • 编写注释
  • 生成单元测试
  • 重构函数或方法

Edit 功能使用

下面是常见的操作过程:

  • 高亮代码并激活 Edit 功能

    首先,高亮您想要修改的代码块。然后,按下 Cmd(Mac)或 Ctrl(Windows/Linux)+ I 来激活 Edit 输入框。

  • 描述代码更改

    在输入框中,简洁地描述您想要对高亮代码进行的更改。对于 Edit 功能,一个好的提示应该相对简短和明确。如果您需要进行更长、更复杂的任务,建议使用 Chat 功能。

  • 接受或拒绝更改

    系统会在您高亮的文本内生成内联的差异。您可以通过以下方式导航和处理这些建议的更改:

    • 接受单个更改:Cmd/Ctrl + Option + Y
    • 拒绝单个更改:Cmd/Ctrl + Option + N
    • 接受所有更改:Cmd/Ctrl + Shift + Enter
    • 拒绝所有更改:Cmd/Ctrl + Shift + Delete

    如果您想为同一段高亮代码请求新的建议,只需再次使用 Cmd/Ctrl + I 即可重新提示模型。

举一个生成测试代码的例子,我们可以高亮这段代码,然后点击 Cmd + I 在对话框中输入 Generate Unit test

稍等一会儿就会自动生成一段单元测试代码(当然这个生成比较简陋,你可以补充更多的提示来让模型生成更加完善的代码)。

4.4 Actions 功能

其中的 Action 功能为开发者提供了极大的便利。Action 允许用户快速执行预定义的任务,大大提高了编码效率。

Continue 插件提供了多种实用的预设 Action,例如:

  • 解释选中的代码
  • 优化代码性能
  • 添加单元测试
  • 修复代码中的错误

以下是 Action 一些常用功能:

斜杠命令

详细参考:
https://docs.continue.dev/customize/slash-commands

一些常见命令举例:

  • 斜杠命令是通过输入'/'并从下拉菜单中选择来激活的快捷方式。
  • /edit 命令允许用户将代码编辑直接流式传输到编辑器中。
  • /comment 命令提示LLM为高亮显示的代码添加注释。
  • /share 命令生成聊天历史的可共享markdown文本。
  • /cmd 命令从自然语言生成shell命令。
  • /commit 命令为当前git更改生成提交消息。
  • /http 命令允许在您自己的HTTP端点上创建自定义斜杠命令。
  • /issue 命令帮助生成GitHub草稿问题的链接。
  • /so 命令引用StackOverflow来回答问题。
  • /onboard 命令帮助用户熟悉新项目。

右键 Actions

右键操作允许你高亮选中所需的代码区域,然后右击并从下拉菜单中选择一个操作。

Continue 提供了下面一些常用选项:

  • Add Highlighted Code to Context: 将高亮的代码添加到上下文中
  • Fix this Code: 修复这段代码
  • Optimize this Code: 优化这段代码
  • Write a Docstring for this Code: 为这段代码写一个文档字符串
  • Write Comments for this Code: 为这段代码写注释

这里有一些更详细的说明:
https://docs.continue.dev/actions/how-to-use-it

结语
经过这些不同的探索,相信您现在已经对如何最佳地利用 Continue 和 Ollama 有了更清晰的理解。希望这些工具不仅能提升您的编程效率,还能激发您的创造力,让您在技术的世界中不断突破自我。祝大家 AI 编程快乐!

参考文献

  1. QwenLM. (2024). Qwen2.5-Coder. GitHub. https://github.com/QwenLM/Qwen2.5-Coder
  2. Continue. (2024). Continue - AI Coding Assistant. https://www.continue.dev/
  3. Microsoft. (2024). Visual Studio Code. https://code.visualstudio.com/
  4. Ollama. (2024). Ollama: Get up and running with large language models locally. https://ollama.ai/
  5. 通过Ollama和VSCode的Continue插件使用本地大模型实现AI辅助代码编写. (2024). https://mp.weixin.qq.com/s/oqndOraEmIeFCpXT4QYOww
  6. Continue. (2024). OpenAI compatible servers / APIs. https://docs.continue.dev/customize/model-providers/openai#openai-compatible-servers--apis
  7. Continue. (2024). Ollama Code Assistant. https://blog.continue.dev/ollama-code-assistant/
2 Comments

Add a Comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注