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 警告可能存在錯誤與破壞性變更。
  • 依賴外部 opencode 二進位檔,而該檔本身仍在積極開發中。
  • 部分功能(如快速緩衝區聊天)標記為 實驗性

以上所有細節均直接來自倉儲的 README;未推斷任何額外功能。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案