官方信息
| 项目名称 | codecompanion.nvim |
| 仓库地址 | https://github.com/olimorris/codecompanion.nvim |
| 官方网站 | https://codecompanion.olimorris.dev/ |
| 最新更新时间 | 2026-10-26(最新 Release v20.0.1,2026-10-17) |
| 项目定位 | Neovim 里的"AI Coding, Vim Style"——集 Copilot Chat、Zed AI 聊天、CLI Agent(Claude Code/Codex)于一体的智能编程助手,支持 Anthropic、DeepSeek、Gemini、GitHub Copilot、Ollama 等众多适配器 |
项目背景
用过 VS Code 的 Copilot Chat 或 Zed 的 AI 面板的人,都习惯了"侧边栏里和大模型对话、让它直接改你工程里的文件"。CodeCompanion.nvim 做的就是把这套体验原汁原味搬进 Neovim,而且坚持 "Vim Style"——不绑鼠标、一切键位可定制、diff 用 Neovim 原生窗口渲染。
它由资深 Neovim 插件作者 olimorris 维护,目前 GitHub 上已有近 7k Star。和单纯做"补全"的插件不同,CodeCompanion 是一个完整的 Agent 工作台:你可以在聊天缓冲区里让模型读文件、跑命令、搜索网页、写代码、给出 diff,然后你按 g2 接受、g3 拒绝,整个流程和 Cursor 类似,但全程在终端里完成。
它最被称道的一点是适配器(Adapter)生态:默认走 GitHub Copilot,但你可以一键切到 Anthropic、OpenAI、Gemini、DeepSeek、Mistral、OpenRouter,甚至接本地 Ollama;更进一步,它还能把 Claude Code、Codex、Gemini CLI、opencode 这些"命令行 Agent"当成后端,直接在 Neovim 里驱动它们干活。
核心特性
- Copilot Chat 式聊天:
:CodeCompanionChat打开聊天缓冲区,支持#{buffer}、#{diagnostics}、#{selection}、#{terminal}等编辑器上下文注入。 - Agent 工具调用:用
@{files}让模型读写文件,用@{agent}让它自主跑命令,工具执行前需你审批(g1 总是允许 / g2 本次允许 / g3 拒绝)。 - 内联编辑:选中代码后
:'<,'>CodeCompanion Use early returns,模型原地改写选区并出 diff。 - 代码评审:
:CodeCompanionCodeReview逐文件、逐 hunk 展示所有改动,可逐条接受/回退/评论。 - Prompt 库:内置
/explain、/fix、/lsp、/commit等斜杠命令,也可自定义。 - 多适配器:Anthropic、OpenAI、Gemini、DeepSeek、Mistral、OpenRouter、Ollama、OpenAI 兼容网关;以及 Claude Code、Codex 等 CLI Agent。
- 生态扩展:支持 render-markdown.nvim 渲染 Markdown、img-clip.nvim 贴截图、mcphub.nvim 接 MCP。
环境要求
- Neovim:0.12 或更高版本(注意:要求较新,旧版 Nvim 无法运行)。
- 依赖:plenary.nvim、
curl。 - 可选:Tree-sitter
yaml解析器(Prompt 库/skills 用)、file命令(图片 MIME 检测)、ripgrep(grep_search 工具)、sqlite3(读 Copilot token)。 - API Key:至少一个服务商的 Key(Anthropic / DeepSeek / Gemini 等),或已登录 copilot.lua。
详细部署步骤
第一步:升级 Neovim 到 0.12+
CodeCompanion 对 Neovim 版本要求较高,先确认:
nvim --version # 第一行必须 >= v0.12.0Ubuntu 22.04 自带版本偏旧,可用官方 AppImage 或源码安装:
# 方式一:下载 AppImage
mkdir -p ~/apps && cd ~/apps
wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage
chmod +x nvim-linux-x86_64.appimage
./nvim-linux-x86_64.appimage --version
# 方式二:用 snap/ppa(如系统支持)
# sudo add-apt-repository ppa:neovim-ppa/unstable && sudo apt update && sudo apt install neovim第二步:安装插件(pin 版本,避免 breaking changes)
lazy.nvim 用户新建 ~/.config/nvim/lua/plugins/codecompanion.lua:
return {
"olimorris/codecompanion.nvim",
version = "^20.0.0", -- 重要:pin 到大版本,避免上游 breaking change
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
},
opts = {
-- 见第三步
},
}保存后重启 Nvim,执行 :Lazy sync。然后运行健康检查:
:checkhealth codecompanion按提示补齐缺失依赖(如 :TSInstall yaml)。
第三步:配置适配器(Adapter)
默认适配器是 GitHub Copilot。如果你没有 Copilot,需要自己指定。下面给两种常见配置。
方案 A:用 DeepSeek(国内友好,便宜)
export DEEPSEEK_API_KEY="sk-xxxxxxxx"require("codecompanion").setup({
strategies = {
chat = {
adapter = "deepseek", -- 或 "anthropic" / "openai" / "gemini"
},
inline = {
adapter = "deepseek",
},
},
})方案 B:用本地 Ollama
ollama pull qwen3:8brequire("codecompanion").setup({
strategies = {
chat = {
adapter = {
name = "ollama",
model = "qwen3:8b",
},
},
inline = {
adapter = {
name = "ollama",
model = "qwen3:8b",
},
},
},
})方案 C:接入任意 OpenAI 兼容网关
require("codecompanion").setup({
strategies = {
chat = {
adapter = require("codecompanion.adapters").extend("openai_compatible", {
env = {
api_key = "CUSTOM_API_KEY",
url = "https://your-gateway.example.com/v1",
},
schema = { model = { default = "your-model-name" } },
}),
},
},
})第四步:配置键位(作者推荐)
CodeCompanion 默认不设置任何全局键位,把下面这段加到你的 init.lua:
vim.keymap.set({ "n", "v" }, "<C-a>", "<cmd>CodeCompanionActions<cr>", { noremap = true, silent = true })
vim.keymap.set({ "n", "v" }, "<LocalLeader>a", "<cmd>CodeCompanionChat Toggle<cr>", { noremap = true, silent = true })
vim.keymap.set("v", "ga", "<cmd>CodeCompanionChat Add<cr>", { noremap = true, silent = true })
-- 命令行里把 cc 展开成 CodeCompanion
vim.cmd([[cab cc CodeCompanion]])第五步:启动验证
重启 Nvim,打开一个项目里的代码文件,执行:
:CodeCompanionChat右侧(或新 split)会打开聊天缓冲区。在输入框里输入:
What does the code in #{buffer} do?按 <CR>(普通模式)或 <C-s>(插入模式)发送。让模型改代码则输入:
@{files} Add a docstring to each function in #{buffer}模型会生成 diff,按 g2 接受、g3 拒绝。最后用 :CodeCompanionCodeReview 统一过一遍所有改动。
常见坑与解决办法
- 启动报错 / 功能异常:90% 是 Neovim 版本低于 0.12。先
nvim --version确认。 - 401 / 没反应:API Key 没读到。确认
DEEPSEEK_API_KEY等环境变量已 export 并重启 Nvim。 - 聊天里 Markdown 不渲染:装 render-markdown.nvim 或 markview.nvim,并把
codecompanion加进其 ft 列表。 - plenary 兼容问题:官方提示若 pin 了插件版本,要把 plenary.nvim 留在 master 分支(见 issue #377)。
- 工具审批太频繁:信任后按
gty进入自动批准模式。
使用方法示例
典型工作流:在一个陌生的 Lua 文件里按 <LocalLeader>a 唤出聊天,输入 #{buffer} 请逐段解释这段代码;选中一个写得啰嗦的函数按 ga 加入聊天,再说"用 early return 重写它";模型给出 diff 后按 g2 接受;最后 :CodeCompanion /commit 让它帮你写提交信息。
常见问题 FAQ
Q1:它和 Copilot 补全插件冲突吗?
A:不冲突。CodeCompanion 做聊天/Agent,补全交给 minuet、llm.nvim 这类插件即可。
Q2:可以只用来聊天、不让它改文件吗?
A:可以。不添加 @{files} 工具时,模型只能对话,无法触碰磁盘。
Q3:支持接 Claude Code 吗?
A:支持。把 adapter 设为 claude_code,需先装好 Claude Code 并配置 ACP token。
Q4:收费吗?
A:插件本身 GPL 开源免费,你只需承担所选 LLM 服务商的 API 费用。