sudo-tee/opencode.nvim
neovim frontend for opencode - a terminal-based AI coding agent
🤖 opencode.nvim – Opencode AI 编码助手的 Neovim 前端
这是什么
- 一个与
opencodeCLI(终端式 AI 编码助手)通信的 Neovim 插件。它在编辑器内打开一个聊天风格的 UI,自动将当前文件、选中内容、诊断信息等传递给 AI,让你无需离开 Neovim 即可请求代码建议、编辑或生成整个文件。
核心功能
| 功能 | 你能获得什么 |
|---|---|
| 聊天面板 | 持久化的对话窗口,显示对话历史,并允许你在保持编辑器聚焦于代码的同时提交提示。 |
快速缓冲区聊天 (<leader>o/) |
在可视模式下,选中文本作为上下文;在普通模式下,使用当前行。AI 的回复会直接应用到缓冲区中。 |
| 会话管理 | 会话与工作区绑定并存储在磁盘上($XDG_DATA_HOME/opencode/snapshot/...)。你可以通过快捷键切换、重命名、分叉或撤销会话。 |
| 上下文捕获 | 可选地自动包含当前文件、选中文本、诊断信息、光标邻域,甚至 Git 差异。 |
| 模型/提供者切换 | 一键命令可更改底层 LLM 模型或提供者(如 OpenAI、Anthropic),并选择模型变体。 |
| 差分与恢复工具 | 查看自上次提示以来的变更差分,逐个文件或整个会话回滚,或恢复快照。 |
| 丰富 UI | 可配置的分屏位置(右/左/当前),通过 Treesitter 渲染 Markdown,成本与 token 计数器,以及可选图标(nerdfonts 或纯文本)。 |
| 可扩展钩子 | 回调函数(如 on_file_edited、on_session_loaded)可在关键节点运行自定义 Lua 代码。 |
| 外部服务器支持 | 可指向远程 Opencode 服务器,支持可选的启动、认证和路径映射逻辑。 |
安装(以 lazy.nvim 为例)
{ "sudo-tee/opencode.nvim",
config = function()
require("opencode").setup({})
end,
dependencies = {
{ "MeanderingProgrammer/render-markdown.nvim", opts = { anti_conceal = {enabled = false}, file_types = {'markdown','opencode_output'} }, ft = {'markdown','Avante','copilot-chat','opencode_output'} },
"saghen/blink.cmp", -- 可选的补全源
"folke/snacks.nvim", -- 可选的选取器 UI
},
}
你还需要安装 Opencode CLI(opencode ≥ v0.6.3)并将其添加到 $PATH 中。
典型工作流
- 在项目目录中打开 Neovim。
- 按下
<leader>og(或你配置的键)打开 Opencode UI。 - 在输入框中输入提示——插件会自动将当前文件、选中内容和诊断信息作为上下文添加。
- AI 在输出框中回复;你可以点击文件链接(
gf)跳转到引用的代码。 - 使用差分快捷键(
<leader>od,<leader>orA等)查看或回滚更改。 - 切换会话(
<leader>os)、重命名(<leader>oR)或从历史消息分叉新分支(<leader>oT)。
配置亮点
preferred_picker/preferred_completion可让你为文件引用和补全选择最佳 UI。ui.position(right/left/current)和ui.input_position(bottom/top)控制面板位置。context.enabled开启/关闭自动上下文捕获;可微调子选项如diagnostics.warning或selection.enabled。server表可运行远程 Opencode 服务器(自定义 URL、认证、自动终止、路径映射)。prompt_guard可以是 Lua 函数,用于阻止不符合标准的提示。
适合人群
- 希望在不离开编辑器的情况下实现 AI 辅助编码循环的 Neovim 高级用户。
- 使用 Opencode CLI(或兼容的自托管服务器)并希望获得更接近 IDE 体验的团队。
- 熟悉配置 Lua 插件,希望对上下文、模型选择和会话历史拥有精细控制的用户。
注意事项
- 该插件处于早期阶段;README 警告可能存在 bug 和破坏性变更。
- 依赖外部
opencode二进制文件,而该文件本身仍在积极开发中。 - 部分功能(如快速缓冲区聊天)标记为 实验性。
以上所有细节均直接来自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目