在金融科技、核心防衛、醫療健康與大型企業的軟體開發流程中,保護專有程式碼與核心智慧財產權是極其嚴格的安全紅線。許多企業推行了嚴苛的「程式碼不出網」與資安稽核政策,嚴禁研發人員將內部架構、商業邏輯演算法、核心 API 介面與資料庫結構傳送至外部商用 SaaS AI 平台。然而,面對現代開發的交付壓力,工程師又迫切需要 AI 輔助編程所帶來的效率提升。
要兼顧資安合規與智慧編程,最佳實踐是在開發者的工作站或內網隔離節點上,將 Visual Studio Code 的 CodeGPT 擴充套件與 Ollama 本地大型語言模型執行環境進行串接。CodeGPT 作為 IDE 內部的程式碼生成、技術問答與行內即時補全(Autocomplete)操作介面;Ollama 則在本地承載開源程式碼模型,透過本機迴路端點(http://localhost:11434)提供推論能力。整個推論流程在本地硬體中形成閉環,徹底杜絕任何外部資料外流。
架構比較:公用雲端助理 vs. 本地 Ollama 執行
釐清雲端架構與本機部署的本質差異,有助於企業資安團隊與技術主管評估本架構的合規優勢:
| 評估面向 | 公用雲端程式碼助理(如 Copilot、SaaS API) | CodeGPT + Ollama(本地模型) |
|---|---|---|
| 資料流向 | 程式碼片段與提示詞經 HTTPS 傳送至第三方雲端叢集 | 零資料外發;所有請求僅在本機迴路(127.0.0.1)流轉 |
| 模型代管 | 雲端服務商的多租戶機房 | 開發者本地工作站或企業內部專屬算力伺服器 |
| 網路依賴 | 必須維持網際網路連線 | 支援純離線執行(Air-gapped 隔離環境) |
| 合規適配 | 需簽署繁瑣的 DPA 與隱私條款;存在審查阻礙 | 天然符合金融、核心國防與專利程式碼保密規範 |
| 硬體負擔 | 使用者本機無顯著運算壓力 | 依賴本機顯示卡記憶體(VRAM)或統一記憶體(RAM) |
| 成本架構 | 按席位每月訂閱或按 Token 流量計費 | 開源模型免費授權;成本僅取決於本地硬體資源 |
當 CodeGPT 切換為 Ollama 模式後,外掛程式發出的技術問答與自動補全請求直接傳送至本地的背景常駐服務。Ollama 將模型權重載入本地 GPU 或記憶體完成運算,再透過本機 HTTP 管道回傳編輯器,從實體網路層面徹底阻斷了敏感原始碼外流的可能。
本地程式碼模型挑選與硬體配置
模型參數量直接決定推論產出速度與程式碼品質。建議根據工作站硬體條件配置適當的模型:
- Qwen2.5-Coder(7B / 14B):當前綜合評測表現優異的多語言程式碼模型,在複雜重構、型別推導與單元測試生成上相當精準。7B 版本可在 16 GB 統一記憶體或 8 GB VRAM 的設備上流暢執行;14B 則適合配備 16 GB 以上顯存的專屬工作站。
- DeepSeek-Coder(6.7B / 1.3B):以優異的演算法邏輯與專案架構理解能力著稱,適合中階配置筆電。
- Codestral(22B):Mistral 推出的高階專業程式碼大模型,擁有優異的長上下文處理能力,適合配備 24 GB+ 顯存的 GPU 或 32 GB+ 統一記憶體 Mac 設備。
- Qwen2.5-Coder(1.5B / 3B):極低推論延遲與極小記憶體佔用,是編輯器內即時行內幽靈文字補全(Inline Ghost Text)的最佳選擇。
第一步:安裝 Ollama 並下載程式碼模型
依據您的作業系統前往 Ollama 官方網站下載安裝程式:
- macOS / Linux:依照官方指令快速安裝,或透過系統套件管理工具部署背景服務。
- Windows:執行官方安裝程式,並讓常駐服務於系統工作列啟動。
安裝完成後,於終端機確認 Ollama 背景服務正常運作:
ollama --version
接著使用 ollama pull 指令下載挑選的程式碼模型(此指令只下載模型權重,不會直接進入互動式交談,方便後續 IDE 串接):
# 下載兼顧程式碼品質與推論速度的 7B 模型
ollama pull qwen2.5-coder:7b
# (選用)下載專用於行內極速補全的輕量模型
ollama pull qwen2.5-coder:1.5b
執行以下指令確認本機模型庫已下載完畢:
ollama list
第二步:使用 Modelfile 自訂上下文長度與推論參數
程式碼分析極度依賴上下文完整度(涵蓋相關引入套件、型別定義、函式宣告與程式碼註解)。許多模型在 Ollama 中的預設上下文長度較為保守(通常為 2,048 或 4,096 tokens),在大型專案中容易遭遇文字截斷。
您可以透過編寫自訂 Modelfile 將上下文視窗擴展至 8,192 或 16,384 tokens:
- 在任意本機資料夾中建立名為
Modelfile的純文字檔案(不含副檔名):
FROM qwen2.5-coder:7b
# 將上下文長度擴展至 8192 tokens
PARAMETER num_ctx 8192
# 調低隨機度,確保程式碼語法嚴謹與邏輯收斂
PARAMETER temperature 0.2
# 微調採樣閥值
PARAMETER top_p 0.95
- 在該目錄下執行建置指令,建立客製化本地模型:
ollama create my-local-coder -f ./Modelfile
此外,亦可在啟動常駐服務前設定全域環境變數 OLLAMA_CONTEXT_LENGTH=8192。請注意,上下文視窗越大,KV Cache 所佔用的顯示卡記憶體或系統記憶體也越多。
第三步:在 VS Code 中安裝並設定 CodeGPT
- 開啟 Visual Studio Code。
- 進入擴充套件市場面板(快捷鍵
Ctrl+Shift+X,macOS 為Cmd+Shift+X)。 - 搜尋 CodeGPT(識別碼為
DanielSanMedium.dscodegpt)並點選安裝。 - 安裝完成後,點擊左側活動列中的 CodeGPT 圖示(或按
Ctrl+Shift+P輸入CodeGPT: Focus on Chat View)。 - 點擊 CodeGPT 介面上方的齒輪圖示或模型切換選單(進入 Manage my AI Models)。
- 在模型分類中切換至 Local LLMs(本地模型)。
- 在 Provider(供應商)下拉選單中選擇 Ollama。
- 確認並輸入本機伺服器端點(Server URL):
http://localhost:11434
(若 Ollama 架設在企業內網專屬 GPU 運算伺服器,請填入內網 IP,例如 http://192.168.1.120:11434)。
- 在 Model 下拉選單中選擇下載或建立的模型(如
qwen2.5-coder:7b或my-local-coder)。 - 點擊設定框外側確認儲存。CodeGPT 將自動連線至 Ollama 本地端點完成初始化。
第四步:啟用交談助手與即時程式碼補全
CodeGPT 提供側邊欄問答與編輯器行內補全兩種核心工作流:
側邊欄交談與程式碼重構
在編輯器中選取有疑問或欲最佳化的程式碼片段,右鍵觸發 CodeGPT 快捷指令,或在側邊欄直接發問:
- 自動產生高品質的單元測試。
- 剖析複雜業務邏輯與舊系統相依關係。
- 協助診斷編譯錯誤與執行時期例外堆疊。
設定行內自動補全(Autocomplete)
- 在 CodeGPT 側邊欄選單中找到 Autocomplete 選項。
- 將自動補全切換為 ON。
- 在補全模型清單中選擇本地輕量模型(如
qwen2.5-coder:1.5b或deepseek-coder:base),確保在按鍵鍵入時保有流暢的毫秒級推論體驗。 - 根據工作站硬體反應調整 Suggestion Delay(延遲觸發時間)與 Max Tokens(單次補全最大長度)。
第五步:企業級資安強化與純離線驗證
針對具備嚴格審查要求的研發單位,建議實施以下驗證措施以確保環境完全隔離:
1. 停用 VS Code 編輯器遙測
防止編輯器本身向外部微軟端點發送遙測診斷資料:
- 開啟 VS Code 設定(快捷鍵
Ctrl+,或Cmd+,)。 - 搜尋
telemetry.telemetryLevel。 - 將設定值切換為
off。
2. 限制本機迴路監聽,防止內網非授權存取
Ollama 預設僅綁定本機迴路位址 127.0.0.1:11434。在單機工作站環境下,避免將環境變數 OLLAMA_HOST 設定為 0.0.0.0,以防止同一網段的其他電腦存取或攔截請求。
3. 離線斷網驗證(Air-gapped 驗證)
- 拔除實體網路線並完全關閉工作站 Wi-Fi(或利用本機防火牆規則封鎖所有外發連線)。
- 在 VS Code 中開啟專案檔案。
- 呼叫 CodeGPT 送出重構提示,並在程式碼編輯區鍵入字元觸發自動補全。
- 檢驗推論結果是否依然正常產出。若在完全斷網狀態下依舊運作無礙,即可向企業資安部門證明 AI 輔助流程已達成真正的零外部資料外發。
常見問題排查與調校技巧
- 連線遭拒(Connection Refused):請確認 Ollama 背景程序是否正在運作。Windows 及 macOS 請檢查右下角系統匣常駐圖示;Linux 可使用
curl http://localhost:11434測試連線。 - 跨來源存取阻擋(CORS 錯誤):若 VS Code Webview 顯示跨來源請求遭封鎖,請在系統環境變數中加入
OLLAMA_ORIGINS="*",並重新啟動 Ollama 服務。 - 推論卡頓與記憶體溢出:當文字產出速度極慢時,代表模型總體積已超過獨立顯示卡記憶體,部分運算層被卸載(Offload)至 CPU 記憶體運算。請改用參數量較小的模型(如由 14B 降為 7B,或由 7B 降為 1.5B/3B),或於 Modelfile 中適度調降
num_ctx。