Neovim 专用的 Goose AI 代理插件,提供无缝的编辑器内 AI 辅助编程体验,支持上下文感知、差异审查及多模型后端。
项目概述#
goose.nvim 是一款为 Neovim 提供无缝集成的 Goose AI 代理插件,允许开发者在编辑器内直接使用强大的 AI 代理进行代码编写、调试与自动化操作,无需切换窗口。
解决的问题:开发者在使用 AI 编程助手时,常需要在编辑器与浏览器或独立应用之间切换,导致工作流中断。同时,AI 往往缺乏对当前编辑器上下文(如打开的文件、诊断错误、选中代码)的深度感知。
能力边界:本插件不包含 AI 模型本身,必须依赖 Block 开发的 Goose CLI 及其配置的 LLM 提供商(如 OpenAI, Anthropic, Ollama 等)。
核心特性#
| 主题分类 | 特性名称 | 功能描述 |
|---|---|---|
| 编辑器集成 | 上下文感知 | 自动捕获当前文件、选中文本、LSP 诊断信息作为 Prompt 上下文 |
| 文件引用 | 支持 @ 符号语法,手动引用项目中的特定文件 | |
| 差异查看 | 内置 diff 视图,支持查看 AI 修改前后的对比及回滚操作 | |
| 交互模式 | Auto 模式 | 默认模式,启用完整的 Agent 能力与工具调用 |
| Chat 模式 | 禁用工具调用,仅进行文本对话,适合简单的问答或基于选中代码的讨论 | |
| 会话管理 | 持久化会话 | 会话与工作空间绑定,关闭后重开可恢复上下文 |
| UI/UX | 灵活布局 | 支持浮动窗口或分屏模式,可配置左侧/右侧/居中对齐 |
安装配置#
前置条件:
- 安装 Goose CLI:需参考 Goose 官方文档完成安装
- 配置 LLM 提供商:运行
goose configure设置 API Key 和模型
lazy.nvim 安装示例:
{
"azorng/goose.nvim",
config = function()
require("goose").setup({})
end,
dependencies = {
"nvim-lua/plenary.nvim",
"MeanderingProgrammer/render-markdown.nvim",
},
}
关键配置项:
require('goose').setup({
prefered_picker = nil, -- 'telescope', 'fzf', 'mini.pick', 'snacks'
default_global_keymaps = true,
keymap = {
global = {
toggle = '<leader>gg', -- 打开/关闭 Goose
open_input = '<leader>gi', -- 打开输入窗口
open_output = '<leader>go', -- 打开输出窗口
diff_open = '<leader>gd', -- 打开差异视图
},
window = {
submit = '<cr>', -- 提交提示
mention_file = '@', -- 引用文件
}
},
ui = {
window_type = "float", -- float|split
layout = "right", -- right|left|center
}
})
Vim 命令#
:Goose— 打开/关闭主窗口:GooseRun <prompt>— 在当前会话中运行提示:GooseRunNewSession <prompt>— 开启新会话并运行提示:GooseSelectSession— 选择历史会话:GooseDiff— 打开差异视图
支持的 LLM 提供商#
anthropic, azure, bedrock, databricks, google, groq, ollama, openai, openrouter
适用场景#
- 代码开发:在编辑器内与 AI 协作编写、修改、调试代码
- 项目构建:利用 Goose 的自动化能力从头构建完整项目
- 代码审查:通过差异查看功能审查 AI 建议的修改
- 上下文感知对话:基于当前文件和项目上下文进行智能对话