-- 必需插件
use 'nvim-lua/plenary.nvim'
use 'MunifTanjim/nui.nvim'
use 'MeanderingProgrammer/render-markdown.nvim'
-- 可选依赖项
use 'hrsh7th/nvim-cmp'
use 'nvim-tree/nvim-web-devicons' -- 或使用 'echasnovski/mini.icons'
use 'HakonHarnes/img-clip.nvim'
use 'zbirenbaum/copilot.lua'
-- Avante.nvim 带有构建过程
use {
'yetone/avante.nvim',
branch = 'main',
run = 'make',
config = function()
require('avante').setup()
end
}
return {
{
'nvim-neo-tree/neo-tree.nvim',
config = function()
require('neo-tree').setup({
filesystem = {
commands = {
avante_add_files = function(state)
local node = state.tree:get_node()
local filepath = node:get_id()
local relative_path = require('avante.utils').relative_path(filepath)
local sidebar = require('avante').get()
local open = sidebar:is_open()
-- 确保 avante 侧边栏已打开
if not open then
require('avante.api').ask()
sidebar = require('avante').get()
end
sidebar.file_selector:add_selected_file(relative_path)
-- 删除 neo tree 缓冲区
if not open then
sidebar.file_selector:remove_selected_file('neo-tree filesystem [1]')
end
end,
},
window = {
mappings = {
['oa'] = 'avante_add_files',
},
},
},
})
end,
},
}
命令
命令
描述
示例
:AvanteAsk [question] [position]
询问 AI 关于您的代码的问题。可选的 position 设置窗口位置和 ask 启用/禁用直接询问模式
avante.nvim
avante.nvim 是一个 Neovim 插件,旨在模拟 Cursor AI IDE 的行为。它为用户提供 AI 驱动的代码建议,并能够轻松地将这些建议直接应用到源文件中。
View in English
https://github.com/user-attachments/assets/510e6270-b6cf-459d-9a2f-15b397d1fe53
https://github.com/user-attachments/assets/86140bfd-08b4-483d-a887-1b701d9e37dd
赞助 ❤️
如果您喜欢这个项目,请考虑在 Patreon 上支持我,因为这有助于我继续维护和改进它:
赞助我
功能
安装
如果您希望从源代码构建二进制文件,则需要
cargo。否则,将使用curl和tar从 GitHub 获取预构建的二进制文件。lazy.nvim (推荐)
vim-plug
mini.deps
Packer
Home Manager
Nixvim
Lua
默认设置配置
请参见 config.lua#L9 以获取完整配置
默认配置
Blink.cmp 用户
对于 blink cmp 用户(nvim-cmp 替代品),请查看以下配置说明 这是通过使用 blink.compat 模拟 nvim-cmp 实现的 或者您可以使用 Kaiser-Yang/blink-cmp-avante。
Lua
要创建自定义选择器,您可以指定一个自定义函数来启动选择器以选择项目,并将选定的项目传递给
on_select回调。选择 native 以外的选择器,默认情况下目前存在问题 对于 lazyvim 用户,请从网站复制 blink.cmp 的完整配置或扩展选项
对于其他用户,只需添加自定义提供者
可用的补全项
Avante.nvim 提供了多个可以与 blink.cmp 集成的补全项:
提及功能 (
@触发器)提及功能允许您快速引用特定功能或将文件添加到聊天上下文:
@codebase- 启用项目上下文和仓库映射@diagnostics- 启用诊断信息@file- 打开文件选择器以将文件添加到聊天上下文@quickfix- 将快速修复列表中的文件添加到聊天上下文@buffers- 将打开的缓冲区添加到聊天上下文斜杠命令 (
/触发器)内置斜杠命令用于常见操作:
/help- 显示可用命令的帮助信息/init- 基于当前项目初始化 AGENTS.md/clear- 清除聊天历史/new- 开始新聊天/compact- 压缩历史消息以节省令牌/lines <start>-<end> <question>- 询问特定行的问题/commit- 为更改生成提交消息快捷方式 (
#触发器)快捷方式提供对预定义提示模板的快速访问。您可以在配置中自定义这些:
当您在输入中键入
#refactor时,它将自动替换为相应的提示文本。配置示例
以下是包含所有 Avante 源的完整 blink.cmp 配置示例:
用法
鉴于其早期阶段,
avante.nvim目前支持以下基本功能::AvanteAsk命令查询 AI 关于代码的问题。注意:该插件仍在积极开发中,其功能和界面可能会发生重大变化。随着项目的发展,预计会有一些粗糙的边缘和不稳定性。
键绑定
以下键绑定可用于
avante.nvim:Neotree 快捷方式
在 neotree 侧边栏中,您还可以添加新的键盘快捷方式,以快速将
file/folder添加到Avante Selected Files。Neotree 配置
命令
:AvanteAsk [question] [position]position设置窗口位置和ask启用/禁用直接询问模式:AvanteAsk position=right Refactor this code here:AvanteBuild:AvanteChatask=false:AvanteClear:AvanteEdit:AvanteFocus:AvanteRefresh:AvanteStop:AvanteSwitchProvider:AvanteShowRepoMap:AvanteToggle:AvanteModels高亮组
Config.highlights.diff.currentConfig.highlights.diff.incomingAvanteConflictCurrent的阴影AvanteConflictIncoming的阴影有关更多信息,请参见 highlights.lua
Ollama
ollama 是 avante.nvim 的一流提供者。要开始使用它,您需要在配置中设置
provider = "ollama",并将ollama中的model字段设置为您想要使用的模型。Ollama 默认是禁用的,您需要为其is_env_set方法提供一个实现来正确地启用它。例如:自定义提供者
Avante 提供了一组默认提供者,但用户也可以创建自己的提供者。
有关更多信息,请参见 自定义提供者
Cursor 规划模式
因为 avante.nvim 一直使用 Aider 的方法进行规划应用,但其提示对模型要求很高,需要像 claude-3.5-sonnet 或 gpt-4o 这样的模型才能正常工作。
因此,我采用了 Cursor 的方法来实现规划应用。有关实现的详细信息,请参阅 cursor-planning-mode.md
RAG 服务
Avante 提供了一个 RAG 服务,这是一个用于获取 AI 生成代码所需上下文的工具。默认情况下,它未启用。您可以通过以下方式启用它:
RAG 服务可以单独设置llm模型和嵌入模型。在
llm和embed配置块中,您可以设置以下字段:provider: 模型提供者(例如 “openai”, “ollama”, “dashscope”以及”openrouter”)endpoint: API 端点api_key: API 密钥的环境变量名称model: 模型名称extra: 额外的配置选项有关不同模型提供商的详细配置,你可以在这里查看。
此外,RAG 服务还依赖于 Docker!(对于 macOS 用户,推荐使用 OrbStack 作为 Docker 的替代品)。
host_mount是将挂载到容器的路径,默认是主目录。挂载是 RAG 服务访问主机机器中文件所必需的。用户可以决定是否要挂载整个/目录、仅项目目录或主目录。如果您计划使用 avante 和 RAG 事件处理存储在主目录之外的项目,您需要将host_mount设置为文件系统的根目录。挂载将是只读的。
更改 rag_service 配置后,您需要手动删除 rag_service 容器以确保使用新配置:
docker rm -fv avante-rag-serviceWeb 搜索引擎
Avante 的工具包括一些 Web 搜索引擎,目前支持:
默认是 Tavily,可以通过配置
Config.web_search_engine.provider进行更改:提供者所需的环境变量:
TAVILY_API_KEYSERPAPI_API_KEYGOOGLE_SEARCH_API_KEY作为 API 密钥GOOGLE_SEARCH_ENGINE_ID作为 搜索引擎 IDKAGI_API_KEY作为 API 令牌BRAVE_API_KEY作为 API 密钥SEARXNG_API_URL作为 API URL禁用工具
Avante 默认启用工具,但某些 LLM 模型不支持工具。您可以通过为提供者设置
disable_tools = true来禁用工具。例如:如果您想禁止某些工具以避免其使用(例如 Claude 3.7 过度使用 python 工具),您可以仅禁用特定工具
工具列表
自定义工具
Avante 允许您定义自定义工具,AI 可以在代码生成和分析期间使用这些工具。这些工具可以执行 shell 命令、运行脚本或执行您需要的任何自定义逻辑。
示例:Go 测试运行器
以下是一个运行 Go 单元测试的自定义工具示例:
MCP
现在您可以通过
mcphub.nvim为 Avante 集成 MCP 功能。有关详细文档,请参阅 mcphub.nvimClaude 文本编辑器工具模式
Avante 利用 Claude 文本编辑器工具 提供更优雅的代码编辑体验。您现在可以通过在
behaviour配置中将enable_claude_text_editor_tool_mode设置为true来启用此功能:自定义提示
默认情况下,
avante.nvim提供三种不同的模式进行交互:planning、editing和suggesting,每种模式都有三种不同的提示。planning:与侧边栏上的require("avante").toggle()一起使用editing:与选定代码块上的require("avante").edit()一起使用suggesting:与 Tab 流上的require("avante").get_suggestion():suggest()一起使用。cursor-planning:与 Tab 流上的require("avante").toggle()一起使用,但仅在启用 cursor 规划模式时。用户可以通过
Config.system_prompt或Config.override_prompt_dir自定义系统提示。Config.system_prompt允许您设置全局系统提示。我们建议根据您的需要在自定义 Autocmds 中调用此方法:Config.override_prompt_dir允许您指定一个目录,其中包含您自己的自定义提示模板,这将覆盖内置模板。如果您想在 Neovim 配置之外维护一组自定义提示,这将非常有用。它可以是一个表示目录路径的字符串,也可以是一个返回表示目录路径的字符串的函数。如果希望为每种模式自定义提示,
avante.nvim将根据给定缓冲区的项目根目录检查是否包含以下模式:*.{mode}.avanterules。根目录层次结构的规则:
您还可以使用
rules选项为您的avanterules文件配置自定义目录:加载优先级如下:
rules.project_dirrules.global_dir自定义提示的示例文件夹结构
如果您有以下结构:
typescript.planning.avanterules将用于planning模式snippets.editing.avanterules将用于editing模式suggesting.avanterules将用于suggesting模式。集成
Avante.nvim 可以通过其扩展模块与其他插件协同工作。下面是一个将 Avante 与 nvim-tree 集成的示例,允许你直接从 NvimTree UI 中选择或取消选择文件:
TODOs
@codebase与整个项目聊天)路线图
贡献
欢迎为 avante.nvim 做出贡献!如果您有兴趣提供帮助,请随时提交拉取请求或打开问题。在贡献之前,请确保您的代码已经过彻底测试。
有关更多配方和技巧,请参见 wiki。
致谢
我们要向以下开源项目的贡献者表示衷心的感谢,他们的代码为 avante.nvim 的开发提供了宝贵的灵感和参考:
这些项目的源代码的高质量和独创性在我们的开发过程中提供了极大的帮助。我们向这些项目的作者和贡献者表示诚挚的感谢和敬意。正是开源社区的无私奉献推动了像 avante.nvim 这样的项目向前发展。
商业赞助商
Meshy AI
BabelTower API
许可证
avante.nvim 根据 Apache 2.0 许可证授权。有关更多详细信息,请参阅 LICENSE 文件。
Star 历史