huggingface/llm.nvim

LLM powered development for Neovim

llm.nvim – Neovim 的 LLM 驅動程式碼補全

簡介

  • 這是一個 Neovim 外掛,讓您能直接在編輯器中獲得 AI 生成的程式碼建議,類似於 GitHub Copilot。
  • 它與一個名為 llm-ls 的小型語言伺服器二進位檔通訊,該伺服器會將 HTTP 請求轉發至 LLM 後端(Hugging Face Inference API、Ollama、相容 OpenAI 的伺服器或 Hugging Face Text-Generation-Inference)。

主要功能

功能 說明
幽靈文字補全 就像 Copilot 的 UI 一樣,輸入時會出現行內「幽靈」建議。
模型選擇 選擇託管在 Hugging Face、Ollama 實例、相容 OpenAI 的端點或 TGI 伺服器上的任何模型。
上下文視窗安全 外掛會裁減提示詞,確保不超過模型的 Token 限制,並使用 tokenizers 函式庫精確計算 Token。
Fill-in-the-middle (FIM) 支援 對於理解 FIM 的模型(例如 StarCoder、CodeLlama),您可以啟用前綴/中間/後綴標記。
檔案啟用/停用 使用 Glob 模式(例如 *.py, */my_project/*)設定建議啟用範圍。
自動建議切換 LLMToggleAutoSuggest 讓您在執行階段開啟或關閉即時建議串流。
手動請求 LLMSuggestion 強制執行單次補全請求。
靈活的請求主體 您在 request_body 下新增的任何 JSON 欄位都會直接傳遞給後端,因此您可以調整 temperature、top_p、max tokens 等參數。

運作方式

  1. 設定 – 外掛首次載入時會從 GitHub Releases 下載 llm-ls 二進位檔(或者您可以透過 mason.nvim 安裝)。
  2. 後端選擇 – 您告知外掛要使用哪個後端(backend = "huggingface" | "ollama" | "openai" | "tgi")。外掛會為該服務建立正確的 URL 和請求負載。
  3. 提示詞準備 – 您的目前緩衝區加上選用的 FIM 標記會被 Token 化。如果 Token 數量超過模型的 context_window,最舊的 Token 會被捨棄以符合請求限制。
  4. HTTP 請求 – HTTP POST 會發送至後端(或本機 Ollama/TGI 伺服器)。如果提供了 api_token,它會被加入為 Bearer 標頭。
  5. 回應處理 – 模型傳回的原始文字會經過清理(移除 tokens_to_clear 中的 Token)並顯示為幽靈文字。接受建議(預設為 <Tab>)會插入建議;<S-Tab> 則會關閉它。

安裝

-- 使用 lazy.nvim (推薦)
require('lazy').setup({
  {
    'huggingface/llm.nvim',
    opts = {
      -- 最小化範例設定
      backend = 'huggingface',
      model   = 'bigcode/starcoder',
    },
  },
})

您也可以使用 packer.nvimvim-plug 安裝;README 提供了確切的程式碼片段。

基本設定 (Lua)

require('llm').setup({
  api_token = nil,               -- 所選後端的 token (或透過環境變數設定)
  model     = 'bigcode/starcoder',
  backend   = 'huggingface',
  request_body = {
    parameters = {
      max_new_tokens = 60,
      temperature    = 0.2,
      top_p          = 0.95,
    },
  },
  fim = { enabled = true, prefix = '<fim_prefix>', middle = '<fim_middle>', suffix = '<fim_suffix>' },
  enable_suggestions_on_startup = true,
  enable_suggestions_on_files   = '*',
})

所有選項皆為選填;預設值記錄在 README 中(例如 StarCoder 預設值、tokenizers、去抖動時間、按鍵對應)。

適用場景

  • 您已經在 Neovim 中工作,並希望在不離開編輯器的情況下獲得 AI 輔助編碼。
  • 您偏好自託管或開源模型(Ollama、TGI),或希望使用 Hugging Face 的託管推論服務。
  • 您需要對哪些檔案獲得建議以及請求負載的外觀進行細粒度控制。

限制 / 注意事項

  • Hugging Face Inference API 免費層級有速率限制;README 建議重度使用者訂閱 PRO。
  • 外掛僅支援文字生成類型的模型;除非 API 提供相容的 /generate 端點,否則無法與聊天導向的 API 運作。
  • 上下文視窗大小受限於所選模型(例如 StarCoder 為 8k Token)。外掛會自動截斷舊的上下文,這可能會影響超大型檔案中的建議。
  • 您必須提供有效的 API token 或執行本機伺服器;否則 HTTP 請求將會失敗。

深入了解

  • 外掛的 README(您正在閱讀的來源)包含完整的選項表格與範例。
  • llm-ls 儲存庫說明了如何建置語言伺服器二進位檔以及如何手動執行它。
  • Hugging Face Inference API 文件、Ollama API 文件以及 TGI 文件已連結至各個後端說明中。

以上所有資訊均直接取自儲存庫的 README;未加入任何外部假設。

相關

  • 專案
  • 專案
  • 專案
  • 專案