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 等參數。 |
運作方式
- 設定 – 外掛首次載入時會從 GitHub Releases 下載
llm-ls二進位檔(或者您可以透過mason.nvim安裝)。 - 後端選擇 – 您告知外掛要使用哪個後端(
backend = "huggingface" | "ollama" | "openai" | "tgi")。外掛會為該服務建立正確的 URL 和請求負載。 - 提示詞準備 – 您的目前緩衝區加上選用的 FIM 標記會被 Token 化。如果 Token 數量超過模型的
context_window,最舊的 Token 會被捨棄以符合請求限制。 - HTTP 請求 – HTTP POST 會發送至後端(或本機 Ollama/TGI 伺服器)。如果提供了
api_token,它會被加入為Bearer標頭。 - 回應處理 – 模型傳回的原始文字會經過清理(移除
tokens_to_clear中的 Token)並顯示為幽靈文字。接受建議(預設為<Tab>)會插入建議;<S-Tab>則會關閉它。
安裝
-- 使用 lazy.nvim (推薦)
require('lazy').setup({
{
'huggingface/llm.nvim',
opts = {
-- 最小化範例設定
backend = 'huggingface',
model = 'bigcode/starcoder',
},
},
})
您也可以使用 packer.nvim 或 vim-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;未加入任何外部假設。
相關
- 專案
- 專案
- 專案
- 專案