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;未加入任何外部假设。
相关
- 项目
- 项目
- 项目
- 项目