avante.nvim 深度研究:把 Neovim 用成 Cursor 的那块拼图
深度研究:avante.nvim —— 把 Neovim 用成 Cursor 的那块拼图 先说句实话。你用 Neovim,又馋 Cursor 那种'聊着天就把代码改了'的体验,怎么办?要么硬切 IDE,要么在终端里自己攒一套。avante.nvim 干的就是第二件事——它不另起炉灶,就寄生在你的 Neovim 里,把 AI 编辑流塞进原生窗口。 一、它到底是什么 仓库是 avante-corp/avante.nvim,最早是 yetone 在维护,后来归到组织名下。一句话定位:'Use your Neovim like using Cursor AI IDE!' 模拟 Cursor,不模仿 VSCode。 底线要求:Neovim 0.11.0 起步。README 里专门拿 Important 标了,徽章写的是 0.10+,但文字咬死 0.11.0+。别拿老版本硬试,会卡。 协议:Apache 2.0。商用、改、分发给钱都行,只要你保留声明。它自己致谢里也点名了 aider、ChatGPT.nvim(都是 Apache 2.0),copilot.lua、img-clip.nvim 是 MIT。 二、能干什么(具体点) - 对着当前文件提问,AI 给改进/修改建议。不是补全那点事,是真能改。 - 一键 apply。一条命令把建议直接写回源文件,diff 在侧边栏,你逐块确认。 - 项目级指令。根目录丢个 avante.md(文件名可改),自动当上下文塞进去。等于给 AI 一本项目说明书。 - Zen Mode。一个 alias 把它伪装成 Coding Agent CLI,但底下还是 Neovim: alias avante='nvim -c "lua vim.defer_fn(function()require(\"avante.api\").zen_mode()end, 100)"' Vibe Coding 的时候,别人以为你在跑 agent,你其实在敲 Vim。 - Fast Apply。接 Morph 专用模型,标称 2500–4500+ tok/s、96–98% 准确率,传统 LLM 慢吞吞 apply 那一下被它补上了。 - ACP(Agent Client Protocol)。能直接驱动 codex、gemini、claude-code 这些 CLI agent。 - RAG 服务。默认关着,要 Docker 或 Nix 跑,专啃项目上下文。 - Web 搜索。内置 Tavily、SerpApi、Google、Kagi、Brave、SearXNG,六选一。 - 自定义工具 / MCP。支持 custom_tools,还能接 mcphub.nvim。 - 补全源花样多。@ 提及(@codebase、@file…)、/ 斜杠命令(/init、/commit…)、# 模板。 最值得拎出来的是 dual_boost——实验性的,把两个提供商的输出并一块儿。听着玄,实则是'双模型投票'。 三、它怎么转起来的 两种交互模式,默认 agentic: - agentic:AI 自己调工具(文件操作、bash、web),生成并改代码。放手让它干。 - legacy:只给计划/建议,你手动确认。保守、可控。 Provider 是抽象的。支持 claude、openai、azure、gemini、cohere、copilot、ollama…… 一张 providers 表搞定 endpoint / model / api_key。 提示词模板走 Jinja 风格的 *.avanterules 文件(minijinja 渲染),分 planning/editing/suggesting/cursor-planning 几种模式。想调 AI 的脾气,改这套规则文件就行。 RAG 是个独立 Python 服务(py/rag-service),LLM 和 embed 模型分开配,Docker 把 host_mount(默认 $HOME)挂成只读。它不碰你本地写的别的东西。 UI 全是 Neovim 原生窗口,默认右侧、宽 30 列。apply diff 用 co/ct/ca 那套键位。底下 Rust 部分要么 cargo 编译,要么 curl+tar 拉预编译,仓库里 Build.ps1、build.sh、Makefile、flake.nix 都备着。 四、装它(命令别抄错) lazy.nvim 是正路: { "yetone/avante.nvim", build = vim.fn.has("win32") ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" or "make", event = "VeryLazy", version = false, opts = { instructions_file = "avante.md", provider = "claude" }, dependencies = { "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", ... } } Windows 那段 Build.ps1 记得开着,别漏。 vim-plug 也行:Plug 'yetone/avante.nvim', { 'branch': 'main', 'do': 'make' }。 还有 rocks.nvim(:Rocks install avante.nvim 后 require('avante').setup())、Nix(Home Manager / Nixvim 里 plugins.avante.enable = true)、以及 Neovim 0.12+ 的 vim.pack.add。 五、配置里几个坑位 API Key 建议加 AVANTE_ 前缀隔离,别和别的服务混: export AVANTE_ANTHROPIC_API_KEY=... 也能用全局 ANTHROPIC_API_KEY,但混着用迟早出事。 一个典型 setup: require("avante").setup({ provider = "claude", mode = "agentic", auto_suggestions_provider = "claude", behaviour = { auto_suggestions = false, auto_approve_tool_permissions = true }, windows = { position = "right", width = 30 }, mappings = { sidebar = { apply_all = "A" }, suggestion = { accept = "<M-l>" } }, }) auto_approve_tool_permissions = true 这行要当心——它让 AI 自己批工具权限。爽是爽,安全边界你得自己掂量。 Claude Pro/Max 登录走 auth_type = "max",弹浏览器 OAuth。 开 Fast Apply: behaviour = { enable_fastapply = true } providers = { morph = { model = "morph-v3-large" } } 不想要某些工具?disable_tools = true 全关,或 disabled_tools = { "python" } 单挑。 输入/选择器能换皮:input.provider = "snacks"、selector.provider = "fzf"。 RAG 真要开: rag_service = { enabled = true, runner = "docker" } 改完记得 docker rm -fv avante-rag-service,否则旧容器赖着不走。 六、跟 Copilot、Cody 比,差在哪 Copilot 在它的依赖里是被点名的——zbirenbaum/copilot.lua 能当 providers = 'copilot' 后端。但关系要搞清楚:avante 是宿主环境(Neovim),Copilot 是被它接进来的服务,不是平级对手。 Cody(Sourcegraph)它压根没提。差别在气质:avante 要的是类 Cursor 的 Tab 流、差异应用、Zen Mode;Cody 多半是编辑器侧栏聊天那一路。 硬事实层面的三点差异: 1. Fast Apply(Morph) 补了传统 LLM apply 慢的洞。 2. ACP 直接驱 claude-code / codex 这类 CLI agent。 3. RAG + Web 搜索内置,Copilot 免费版没这开放度。 还有一条——所有 UI 都是 Neovim 原生窗口,能复用你已有的 telescope、snacks 之类。这点对 Vim 党是致命诱惑。 七、谁该用,谁先别碰 该用的: - 死守 Neovim,又想要 Cursor 那套'聊天改代码'(AvanteAsk / AvanteChat)。 - 用 avante.md 给 AI 立项目规矩。 - 大重构,侧边栏 diff 解决冲突(co/ct/cb)。 - 隐私/离线场景,Ollama 是一等公民(provider = "ollama")。 - 企业敏感环境,legacy 模式 + disabled_tools 卡住自动执行。 先别碰的: - Neovim 还停在 0.10 及以下的,先升级。 - 怕 AI 乱跑文件的,auto_approve_tool_permissions 别开,legacy 模式保平安。 八、一句话收口 avante.nvim 不是又一个聊天插件。它把 Cursor 的编辑流硬嵌进 Neovim 原生窗口,又给了你 Provider 抽象、ACP、RAG、Fast Apply 这一整套开关。代价是要自己配、自己担风险。Vim 党想'既要又要',它目前是最像答案的那个。本文由步子哥整理 · 去AI味改写 · 2026-08-21