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 警告可能存在錯誤與破壞性變更。
- 依賴外部
opencode二進位檔,而該檔本身仍在積極開發中。 - 部分功能(如快速緩衝區聊天)標記為 實驗性。
以上所有細節均直接來自倉儲的 README;未推斷任何額外功能。
相關
- 專案
- 專案
- 專案
- 專案
- 專案