codecompanion.nvim
Neovim 0.11+ 原生 AI 编程助手插件,融合 Vim 键盘流哲学,支持多 LLM 后端与
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Neovim 0.11+ 原生 AI 编程助手插件,融合 Vim 键盘流哲学,支持多 LLM 后端与
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你正在深夜编码,双手不需要离开键盘,一个聊天窗口突然从右侧弹出,AI 不仅帮你补全了剩余的函数逻辑,还顺手审查了你刚才写的代码漏洞——这不是科幻,而是 CodeCompanion.nvim 正在做的事。
CodeCompanion.nvim 由德国开发者 Oli Morris 创建,最初源于他对 Claude Code 和 Copilot 等工具的思考:这些工具固然强大,但它们都需要你跳出编辑器、在终端或浏览器中交互。而他真正想要的,是一个与 Vim 操作哲学完全融合的 AI 助手——不打断键盘流,不切换窗口上下文,一切都在 Neovim 的世界内完成。
Neovim 社区长期以"纯键盘操作"为荣,任何需要鼠标点击的功能都被视为对效率的背叛。CodeCompanion.nvim 正是诞生于这种文化语境:它不是简单地把 ChatGPT 嵌入编辑器,而是让 AI 能力成为 Vim 工作流的自然延伸。无论你是习惯 :w 保存还是 :q 退出,AI 对话都可以用相同的方式触发和交互。
这个插件支持的主题标签(topics)也透露了它的野心:涵盖了 acp、agent、agent-client-protocol、claude-code、copilot、deepseek、gemini、llm 等关键词,表明它不仅仅绑定某一个 AI 提供商,而是想成为一个多后端、多协议的 AI 编程平台。
CodeCompanion.nvim 的能力远不止代码补全。它在 Neovim 中构建了一个完整的 AI 对话界面,支持以下核心交互模式:
1. 多 Adapter 架构(多 LLM 后端支持)
插件内置 HTTP Adapter 和 ACP(Agent Client Protocol)Adapter 两大类协议层,支持的 LLM 提供商包括:
这种多 Adapter 设计让用户可以同时配置多个 AI 提供商,在一个会话中自由切换——比如用 Claude 做代码审查,用 DeepSeek 做中文注释生成。
2. ACP(Agent Client Protocol)集成
ACP 是 CodeCompanion.nvim 的另一杀手级特性。通过 ACP Adapter,插件可以直接调用外部 AI Agent CLI 工具:
这意味着 Neovim 不再只是一个代码编辑器,它可以摇身一变成为 Claude Code 的前端界面——在 Vim 中发起任务,Claude Code 在后台执行,再把结果返回给 Neovim 展示。
3. MCP(Model Context Protocol)支持
CodeCompanion.nvim 内置了完整的 MCP 客户端实现(lua/codecompanion/mcp/),包括:
client.lua:MCP 客户端核心tool_bridge.lua:MCP 工具到 Neovim 的桥接层methods.lua:MCP 协议方法映射通过 MCP 协议,CodeCompanion 可以调用各种 MCP Server 提供的工具(如文件系统搜索、终端命令执行等),让 AI 的能力边界大幅扩展。
4. 内联补全(Inline Completion)
对于 Neovim 0.12+ 用户,CodeCompanion 提供了内联代码补全功能。补全以虚拟文本(virtual text)形式渲染,可以逐词或逐行接受,完美融入编辑体验。
5. Prompt Library(提示词库)
内置了丰富的预设 Prompt,覆盖代码审查、重构、生成测试用例、解释代码、生成文档等常见场景。用户也可以自定义 Prompt,形成团队统一的 AI 使用规范。
6. 文件变更 Diff 视图
AI 对代码的修改会通过 Neovim 内置 diff 机制展示,用户可以逐行审阅后决定是否采纳。
CodeCompanion.nvim 基于 Lua 语言开发,充分利用 Neovim 的 Lua API 和 Neovim 0.11+ 的新特性。以下是核心架构组件:
| 模块 | 职责 |
|---|---|
lua/codecompanion/init.lua | 主入口,注册插件命令 |
lua/codecompanion/adapters/ | HTTP/ACP 协议适配层 |
lua/codecompanion/interactions/ | Chat、Inline、Agent 等交互核心 |
lua/codecompanion/mcp/ | MCP 客户端实现 |
lua/codecompanion/prompt_library/ | 提示词管理 |
lua/codecompanion/providers/ | 各 LLM 提供商的具体 API 实现 |
lua/codecompanion/utils/ | 日志、上下文获取等工具函数 |
lua/codecompanion/config.lua | 插件配置 Schema |
plugin/codecompanion.lua | Neovim 插件加载入口 |
Dockerfile | CI 容器化测试环境 |
插件提供了 Extension 扩展机制,允许第三方开发者注册新的 Adapter 或交互策略,而无需修改核心代码。这种设计类似于 VS Code 的 Extension API,但更加轻量。
测试方面,项目使用 GitHub Actions CI 进行持续集成,测试矩阵覆盖:
代码质量工具:使用 StyLua 进行 Lua 代码格式化,使用 tree-sitter-cli 进行语法树解析辅助测试,确保代码风格统一。
安装方式(通过插件管理器,如 lazy.nvim):
-- 在 init.lua 或 plugins.lua 中
{
'olimorris/codecompanion.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'stevearc/dressing.nvim',
},
config = function()
require('codecompanion').setup({
-- your config here
})
end,
}
核心前提:必须使用 Neovim 0.11+。这是因为插件大量使用了 Neovim 0.11 引入的新 API(如虚拟文本增强、API 稳定性改进)。
配置示例:
require('codecompanion').setup({
adapters = {
anthropic = require('codecompanion.adapters').extend(
require('codecompanion.adapters.http').configure({
name = 'Anthropic',
url = 'https://api.anthropic.com/v1/messages',
headers = {
['x-api-key'] = os.getenv('ANTHROPIC_API_KEY'),
['anthropic-version'] = '2023-06-01',
},
params = {
model = 'claude-3-5-sonnet-20241022',
max_tokens = 4096,
},
})
),
},
strategies = {
chat = { adapter = 'anthropic' },
},
})
部署极其轻量:不需要 GPU,不需要 Docker,不需要服务器。只要有一台安装了 Neovim 0.11+ 的机器即可。磁盘占用约 50MB,内存占用极低。
1. 界面上手门槛
对于习惯 GUI IDE(如 VS Code)的开发者,Neovim 的键盘驱动交互模式本身就是一道门槛。CodeCompanion.nvim 虽然在 Vim 生态内已经足够易用,但对于 Vim 新手来说,仍需要花时间熟悉 :CodeCompanion 等命令体系。
2. LLM API 成本 插件本身免费,但调用各大 LLM 提供商的 API 需要付费。Claude 3.5/4 的使用成本相对较高,建议配合本地 Ollama 或 DeepSeek API 使用以降低成本。
3. 多 Adapter 配置复杂度 虽然多 Adapter 设计灵活,但配置多个 LLM 提供商需要分别设置 API Key、Endpoint、模型参数等,对非技术用户不够友好。
CodeCompanion.nvim 代表了一个重要趋势:AI 编程工具的 Vim 原生化。
此前,Copilot 和 Claude Code 等工具主要面向 VS Code、JetBrains 等 GUI 编辑器用户。而 CodeCompanion.nvim 则证明了 Vim/Neovim 用户完全可以在不牺牲键盘流效率的前提下,享有与 GUI IDE 同等甚至更优质的 AI 编程体验。
从数据来看,6628+ Stars、416 Forks、覆盖 Nightly/v0.12/v0.11 多版本的持续 CI 测试,说明这个项目已经相当成熟,且拥有活跃的社区用户。
随着 Neovim 0.12+ 的普及和 MCP 协议的推广,CodeCompanion.nvim 有望成为 Neovim 生态中最核心的 AI 编程基础设施之一。