在 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的模型,本地电脑大多还能跑得动:

ollama pull qwen2.5-coder:7b-instruct

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

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

拉取模型:

ollama pull starcoder2:3b

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

ollama pull deepseek-coder:1.3b-base

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

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

拉取模型:

ollama pull nomic-embed-text

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

 pkill ollama

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

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

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

然后打开网页: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):

    {
      "title": "Qwen2.5 Coder 7B Instruct",
      "provider": "ollama",
      "model": "qwen2.5-coder:7b-instruct",
      "completionOptions": {
        "maxTokens": 2048
      },
      "useLegacyCompletionsEndpoint": false
    },

配置 Autocomplete 功能模型

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

  "tabAutocompleteModel": {
    "title": "StarCode2 3B",
    "provider": "ollama",
    "model": "starcoder2:3b"
  },

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

  "tabAutocompleteModel": {
    "title": "DeepSeek Coder 1.3B",
    "provider": "ollama",
    "model": "deepseek-coder:1.3b-base"
  },

上面幾個模型在不同編程語言中表現不太一樣,官方推薦是 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,可以修改為如下配置:

  "embeddingsProvider": {
    "provider": "ollama",
    "model": "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/

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *