sudo-tee/opencode.nvim

neovim frontend for opencode - a terminal-based AI coding agent

🤖 opencode.nvim – Opencode AI 编码助手的 Neovim 前端

这是什么

  • 一个与 opencode CLI(终端式 AI 编码助手)通信的 Neovim 插件。它在编辑器内打开一个聊天风格的 UI,自动将当前文件、选中内容、诊断信息等传递给 AI,让你无需离开 Neovim 即可请求代码建议、编辑或生成整个文件。

核心功能

功能 你能获得什么
聊天面板 持久化的对话窗口,显示对话历史,并允许你在保持编辑器聚焦于代码的同时提交提示。
快速缓冲区聊天 (<leader>o/) 在可视模式下,选中文本作为上下文;在普通模式下,使用当前行。AI 的回复会直接应用到缓冲区中。
会话管理 会话与工作区绑定并存储在磁盘上($XDG_DATA_HOME/opencode/snapshot/...)。你可以通过快捷键切换、重命名、分叉或撤销会话。
上下文捕获 可选地自动包含当前文件、选中文本、诊断信息、光标邻域,甚至 Git 差异。
模型/提供者切换 一键命令可更改底层 LLM 模型或提供者(如 OpenAI、Anthropic),并选择模型变体。
差分与恢复工具 查看自上次提示以来的变更差分,逐个文件或整个会话回滚,或恢复快照。
丰富 UI 可配置的分屏位置(右/左/当前),通过 Treesitter 渲染 Markdown,成本与 token 计数器,以及可选图标(nerdfonts 或纯文本)。
可扩展钩子 回调函数(如 on_file_editedon_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 CLIopencode ≥ v0.6.3)并将其添加到 $PATH 中。

典型工作流

  1. 在项目目录中打开 Neovim。
  2. 按下 <leader>og(或你配置的键)打开 Opencode UI。
  3. 在输入框中输入提示——插件会自动将当前文件、选中内容和诊断信息作为上下文添加。
  4. AI 在输出框中回复;你可以点击文件链接(gf)跳转到引用的代码。
  5. 使用差分快捷键(<leader>od, <leader>orA 等)查看或回滚更改。
  6. 切换会话(<leader>os)、重命名(<leader>oR)或从历史消息分叉新分支(<leader>oT)。

配置亮点

  • preferred_picker / preferred_completion 可让你为文件引用和补全选择最佳 UI。
  • ui.positionright/left/current)和 ui.input_positionbottom/top)控制面板位置。
  • context.enabled 开启/关闭自动上下文捕获;可微调子选项如 diagnostics.warningselection.enabled
  • server 表可运行远程 Opencode 服务器(自定义 URL、认证、自动终止、路径映射)。
  • prompt_guard 可以是 Lua 函数,用于阻止不符合标准的提示。

适合人群

  • 希望在不离开编辑器的情况下实现 AI 辅助编码循环的 Neovim 高级用户。
  • 使用 Opencode CLI(或兼容的自托管服务器)并希望获得更接近 IDE 体验的团队。
  • 熟悉配置 Lua 插件,希望对上下文、模型选择和会话历史拥有精细控制的用户。

注意事项

  • 该插件处于早期阶段;README 警告可能存在 bug 和破坏性变更。
  • 依赖外部 opencode 二进制文件,而该文件本身仍在积极开发中。
  • 部分功能(如快速缓冲区聊天)标记为 实验性

以上所有细节均直接来自仓库的 README;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目