本指南適用於有權安裝應用程式,並可使用自有非敏感測試檔案的 Mac 使用者。你將把一個模型下載至 Ollama,將可持久儲存的 Open WebUI 瀏覽器聊天和 VS Code 的 Continue 擴充功能連接到同一個執行服務,再檢查實際提出的修改,決定是否保留。下列命令與檢查依據維護者的現行文件;BIG CHANGE 未執行這套組合,也未測量其速度、成本或網路流量。

主要變化

  • 改變了什麼: 已下載的 Ollama 模型可以透過本機 API,同時支援瀏覽器聊天和 VS Code 編輯助理。每個用戶端仍須各自檢查連線。
  • 為何重要: 一次模型安裝即可在同一台 Mac 上支援對話及經過審閱的程式碼修改,檔案擁有者仍掌握最終編輯決定。
  • 應注意什麼: 選單中的模型名稱無法證明是哪個伺服器回答。請檢查供應方連線與實際回覆,尤其是另有供應方或雲端功能設定時。

1. 檢查 Mac 並選擇模型

你需要 Ollama 所需的 macOS 14 或更新版本、 Mac 版 Docker Desktop、配備 Continue 擴充功能的 VS Code,以及用來執行以下簡短 JSON 和檔案檢查的 Python 3。Ollama 支援 Apple M 系列的 CPU 與 GPU 執行;其文件對 Intel Mac 僅列出 CPU。請從 Mac 下載頁安裝 Ollama,將應用程式移至 Applications,啟動後依提示允許建立命令列連結。安裝並啟動 Docker Desktop,再從 VS Code 的 Extensions 檢視安裝 Continue。若缺少 Python 3,請從 Python.org 安裝(若 python3 無法使用)。在 Mac 上,VS Code 不會自動將 code 加入 shell 路徑。請遵循其 Mac 安裝說明:按 Cmd+Shift+P開啟 Command Palette,執行 Shell Command: Install 'code' command in PATH,再重新啟動 Terminal。確認所需工具皆可使用:

Terminal
sw_vers -productVersion
ollama --version
docker version
code --version
python3 --version

記錄已安裝的版本。如果任一應用程式未執行,或 Mac 沒有足夠空間儲存模型及 Docker 資料,請先停止。 qwen2.5-coder:7b 模型頁面 目前列出 4.7 GB 下載大小及 Apache 2.0 授權。下載大小不等於執行所需的全部記憶體。這只是本指南的具體範例,不代表適合每台 Mac。必要時選擇文件明確說明的較小本機模型標籤,再將以下每個命令、瀏覽器選項及 YAML 欄位中的 qwen2.5-coder:7b 替換為該確切標籤。同時檢查替代模型的授權。

下載模型,並確認 Ollama 列出確切標籤:

Terminal
ollama pull qwen2.5-coder:7b
ollama list
curl --fail-with-body --silent --show-error http://127.0.0.1:11434/api/tags | python3 -c 'import json,sys; d=json.load(sys.stdin); print([m["name"] for m in d["models"]])'

清單應包含 qwen2.5-coder:7b。接著向 本機聊天 API 要求簡短回覆。遇到 HTTP 錯誤時命令會失敗,並檢查傳回的模型及非空白助理內容;回覆的具體措辭並不重要。 Ollama 執行選項 num_predict 將此次檢查限制為最多產生 64 個 token。即使句子遭截斷,也能證明收到了內容;空白回覆則表示檢查失敗,需進一步排查。

Terminal
set -o pipefail
curl --fail-with-body --silent --show-error http://127.0.0.1:11434/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"model":"qwen2.5-coder:7b","messages":[{"role":"user","content":"Reply with one short sentence about checking a local connection."}],"stream":false,"options":{"num_predict":64}}' \
  | python3 -c 'import json,sys; d=json.load(sys.stdin); assert d.get("model")=="qwen2.5-coder:7b",d.get("model"); assert d.get("message",{}).get("content","").strip(); print("Model:",d["model"],"Reply:",d["message"]["content"])'

如果沒有該標籤,請完成下載後重新查看清單。如果 API 無法存取,請啟動 Ollama 並查看其 Mac 伺服器記錄 ,路徑為 ~/.ollama/logs/server.log。已下載的標籤與成功的本機回覆,構成三項檢查中的第一項。

2. 啟動 Open WebUI 並持久儲存本機資料

這份 Open WebUI 快速入門指南 將帳戶、設定及聊天儲存在 /app/backend/data ,並要求使用固定的 WEBUI_SECRET_KEY。本指南使用穩定的 v0.12.3 版本 ,而非持續更新的 main 標籤。Docker 會選擇適合 Mac 架構的映像檔;下載後請記錄映像檔識別資訊。

先檢查此處使用的名稱。如果任一名稱已存在,請檢查該容器或磁碟區,確認是否屬於先前的設定。不要只是為了讓命令執行,就替換現有容器或刪除其磁碟區。

Terminal
docker ps -a --filter name=^/bc-open-webui$ 
docker volume inspect bc-open-webui-data

首次設定時,第二個命令表示磁碟區不存在是正常情況。以下步驟將產生的金鑰保存在 Mac 帳戶下的私有檔案中。請安全保留此檔案,以便重新建立容器。不要將內容提交至程式碼庫、貼出或分享。若此實例已有金鑰,請繼續使用原金鑰。

Terminal
mkdir -p "$HOME/.config/bc-open-webui"
chmod 700 "$HOME/.config/bc-open-webui"
umask 077
if [ ! -s "$HOME/.config/bc-open-webui/webui-secret" ]; then
  openssl rand -hex 32 > "$HOME/.config/bc-open-webui/webui-secret"
fi
chmod 600 "$HOME/.config/bc-open-webui/webui-secret"
export WEBUI_SECRET_KEY="$(cat "$HOME/.config/bc-open-webui/webui-secret")"
docker pull ghcr.io/open-webui/open-webui:v0.12.3
docker image inspect ghcr.io/open-webui/open-webui:v0.12.3 --format '{{json .RepoDigests}}'
docker volume create bc-open-webui-data
docker run -d --name bc-open-webui --restart unless-stopped \
  -p 127.0.0.1:3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v bc-open-webui-data:/app/backend/data \
  -e WEBUI_SECRET_KEY \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  ghcr.io/open-webui/open-webui:v0.12.3
unset WEBUI_SECRET_KEY
docker ps --filter name=^/bc-open-webui$ --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'

連接埠輸出應顯示 127.0.0.1:3000->8080/tcp。具名磁碟區可在重新建立容器時保留聊天與設定。金鑰保護工作階段連續性及應用程式加密值,因此請保留其私有副本。可存取 Docker 的人,可能從容器設定中查看環境變數;這是單一使用者的本機設定,不是共用主機的機密儲存庫。

在瀏覽器開啟 http://127.0.0.1:3000 。首次啟動時建立管理員帳戶。在頭像選單中開啟 Settings → Admin → Connections。檢查 Manage Ollama API Connections ,只保留一個啟用且指向 http://host.docker.internal:11434的連線;移除或停用不在本次檢查範圍內的供應方連線。Open WebUI 可在多個 Ollama 連線之間分配請求,因此僅有相同的下拉選單名稱並不足夠。在新聊天中選擇 qwen2.5-coder:7b ,然後詢問:「有什麼方法可以確認是本機模型回答?」確認出現非空白回覆,再重新開啟已儲存的聊天。記錄選取的模型及連線 URL。這是瀏覽器檢查;不要求特定答案。

如果頁面無法載入,請檢查 docker logs bc-open-webui 及連接埠綁定。如果模型清單是空的,請確認 Ollama 仍能回應 /api/tags、檢查已儲存的 Open WebUI 連線,並測試此 Docker Desktop 版本是否能存取 Mac 主機服務。 host.docker.internal 是 Docker Desktop 的主機位址,而 localhost 在容器內部指的是容器本身。Ollama 預設綁定至 127.0.0.1;主機到容器的轉送方式可能因設定而異。不要將失敗的連線視為成功設定,也不要把 Ollama 暴露在 0.0.0.0 上作為例行修復。繼續之前,請依安全政策解決本機網路路徑問題。排查時保留磁碟區及現有聊天。

3. 將 Continue 指向相同的 Ollama 標籤

Continue 在 Mac 的 VS Code 中執行,因此其 Ollama API 位址為 http://localhost:11434。開啟 Continue,使用聊天輸入區右上角的設定下拉選單,再按 Local Config旁的齒輪。這會開啟 ~/.continue/config.yaml; Continue 現行參考文件 使用 YAML。請備份現有設定,保留仍需要的模型或規則。新本機設定所需的完整最小內容如下:

YAML
name: Local Ollama check
version: 1.0.0
schema: v1
models:
  - name: Qwen2.5 Coder 7B local
    provider: ollama
    model: qwen2.5-coder:7b
    apiBase: http://localhost:11434
    roles:
      - chat
      - edit

若檔案已存在,請把此模型項目加入其 models: 清單,保留現有頂層設定。儲存後選擇 Local Config 及已命名的本機模型,再於 Continue Chat 提出簡短問題。確認收到內容。這可檢查擴充功能的連線,但聊天回覆不等於檔案修改。 chat 和 edit 角色啟用了此處使用的兩項操作;本流程不承諾 Agent 或自動完成功能。

建立自己擁有的測試目錄及檔案,內容使用可獨立檢查的簡單行為。命令會保留現有檔案或原始副本;任一名稱若已被使用,請先檢查或另選測試目錄:

Terminal
mkdir -p "$HOME/continue-local-check"
if [ -e "$HOME/continue-local-check/greeting.py" ] || [ -e "$HOME/continue-local-check/greeting.original.py" ]; then
  printf '%s\n' 'Scratch file already exists; inspect it or choose a new directory.'
else
  cat > "$HOME/continue-local-check/greeting.py" <<'PY'
def greeting(name):
    return "Hello, " + name

if __name__ == "__main__":
    assert greeting("Ada") == "Hello, Ada"
    print(greeting("Ada"))
PY
  if python3 "$HOME/continue-local-check/greeting.py"; then
    cp "$HOME/continue-local-check/greeting.py" "$HOME/continue-local-check/greeting.original.py"
  else
    printf '%s\n' 'Original check failed; inspect the file before requesting an edit.'
  fi
fi

原始檢查應在斷言通過後輸出 Hello, Ada 。開啟 greeting.py 至 VS Code,僅選取函式,再按 Cmd+I 使用 Continue Edit。請它加入簡短 docstring,同時維持傳回文字不變。將逐步顯示的行內 diff 與 greeting.original.py比較;對選取程式碼使用 Edit 時,可能將整個檔案納入上下文,因此僅能使用自己擁有的非敏感檔案。模型可能修改超出要求的內容。請檢查每個變更行,使用 Cmd+Opt+Y接受適當建議,或使用 Cmd+Opt+N拒絕。Continue 也提供全部接受及全部拒絕的控制項,但較小的 diff 更便於逐項審查。

接受後儲存檔案,然後執行:

Terminal
diff -u "$HOME/continue-local-check/greeting.original.py" "$HOME/continue-local-check/greeting.py" || true
python3 "$HOME/continue-local-check/greeting.py"

確認 diff 僅包含預期變更,而且原始斷言仍通過。若拒絕建議,請確認檔案與原件相同,並記錄拒絕;不要宣稱已完成修改。檔案、diff 和獨立 Python 檢查,比模型對自己工作的描述更可靠。

4. 清楚保留各項邊界

Ollama、Open WebUI 和 Continue 各有獨立設定。如果只要關閉 Ollama 雲端功能,請在執行 Ollama 伺服器之帳戶的 ~/.ollama/server.json中加入以下欄位,同時保留現有 JSON 欄位。新檔案的完整內容如下:

JSON
{
  "disable_ollama_cloud": true
}

重新啟動 Ollama 應用程式,再檢查其伺服器記錄:

Terminal
grep 'Ollama cloud disabled: true' "$HOME/.ollama/logs/server.log"

這份 Ollama FAQ 說明了此記錄行。若找不到,請先重新檢查由哪個 Mac 帳戶執行 Ollama、JSON 內容及是否重新啟動,再宣稱雲端功能已停用。此設定不檢查 Open WebUI 的其他供應方、選用線上功能或 Continue 的流量。Continue 的 離線指南 指示關閉 Allow Anonymous Telemetry、使用本機模型並重新啟動 VS Code。使用敏感資料前,請檢查每個應用程式的連線。單靠回送 URL 並不構成網路稽核。

請按實際用途檢查 Docker Desktop 授權 。個人、教育、非商業開源用途,以及符合以下條件的小型企業可免費使用: 員工少於 250 人,而且年營收低於 1,000 萬美元。大型組織和政府的專業用途需要付費訂閱。模型的 Apache 2.0 授權另行適用。磁碟空間、記憶體、下載頻寬及電力仍須考量;本指南未測量成本或效能結果。

若只需要較單純的 Ollama 終端機與 API 流程,請參閱 執行本機 Ollama 模型並檢查其聊天 API。 使用本機 Ollama 模型完成一次經過檢查的 Claude Code 修改 介紹另一種程式設計用戶端。

來源與延伸閱讀