dlants/magenta.nvim
A tool-use-focused LLM plugin for neovim.
magenta.nvim – 在 Neovim 內的 AI 增強程式設計
是什麼 – 一個 Neovim 插件,讓你可直接從編輯器與 Anthropic 的 LLM(Claude)對話。它將模型視為一個 代理:你可以下達指令、查看其完整提示、編輯其輸出,並讓插件將這些編輯回饋給模型。目標是在你熟悉的 Vim 工作流程內,實現流暢的「開發者 ↔ AI」循環。
核心理念
- 透明的代理互動 – 所有提示、工具呼叫與令牌使用情況皆可見。你可在套用變更前編輯模型建議的修改。
- 編輯描述語言(EDL) – 一種用於描述編輯(插入、取代、刪除)的微型 DSL,相比傳送原始文字差異,其令牌效率高得多。
- 作業系統層級沙箱 – 使用 Anthropic 的
sandbox-runtime(macOS 上為 Seatbelt,Linux 上為 bubblewrap)以可設定的檔案系統與網路權限執行工具命令,減少意外憑證外洩。 - Docker 子代理 – 在 Docker 容器中啟動隔離的代理,實現平行、無需監督的工作(例如在獨立分支上進行重型 linting 或程式碼產生)。
- 線程級緩衝區 – 每個對話線程皆位於獨立的 Neovim 緩衝區中,讓你像處理一般檔案一樣進行導航、跳轉列表與選擇線程。
- 宣告式 UI – 類似 React 的 VDOM 系統在緩衝區內渲染豐富 UI(可展開區段、審核對話框、提示音等)。
- 可自訂代理 – 系統提示為
~/.magenta/agents/(或.magenta/agents/)下的純 Markdown 檔案,因此你無需修改 Lua/TS 程式碼即可建立新個性。 - 智慧快取與自動壓縮 – 增量摘要機制透過準確計數令牌並在需要時壓縮歷史記錄,使長對話保持低成本。
如何使用
- 安裝插件(透過
lazy.nvim或 Neovim 內建套件管理器)並執行npm run build產生dist/magenta.mjs。 - 設定一個指向 Anthropic 模型(例如
claude-opus-4-8)的 設定檔。README 提供最小的 Luasetup呼叫範例。 - 開啟聊天側邊欄(
<leader>mt)並輸入以@開頭的指令(例如@file: src/main.rs將檔案加入上下文,@fork分支線程,@fast使用較便宜的模型)。 - 模型在緩衝區中回應;你可以編輯其建議的變更,下一個回合將你編輯的差異送回模型。
- 可選工具:Docker 子代理、沙箱控制的 shell 命令、PDF 閱讀、網路搜尋等,可透過
@指令或內建工具選單呼叫。
安裝片段
-- lazy.nvim 範例
return {
"dlants/magenta.nvim",
lazy = false,
build = "npm run build",
opts = {},
}
或使用 README 中描述的 Neovim 原生 pack 管理器。
設定亮點
- 設定檔 – 定義模型、提供者、API 金鑰環境變數,以及可選的快速/思考模型。
- 專案設定 – 每個倉儲的
.magenta/options.json可覆蓋設定檔、自動加入上下文檔案,並設定技能目錄。 - 技能 – 注入專案特定知識到代理的 Markdown 檔案。
- 沙箱政策 – 精細調整代理可接觸的檔案系統路徑或網路主機;正規表示式模式會觸發審核提示(預設阻止
git push)。 - MCP 伺服器 – 可選的遠端工具伺服器,用於擴展功能。
為何重要
- 將整個 AI 輔助工作流程保留在 Neovim 內,避免切換到外部 CLI 或 Web UI 的上下文切換。
- 提供對模型行為的細粒度控制,這在編輯器端 AI 插件中極為罕見。
- EDL DSL 降低令牌使用量,使昂貴的 Claude 模型在大型修改中更具成本效益。
- 透明 UI 與測試驅動架構使插件對貢獻者友善且易於上手。
狀態 – 活躍維護中(更新記錄至 2026 年 4 月)。主要支援 Anthropic;其他提供者目前已被移除。
進一步閱讀 – 在 Neovim 中執行 :help magenta.nvim,查看倉儲的 doc/ 檔案,以及 README 頂部連結的作者部落格文章。
相關
- 專案
- 專案
- 專案
- 專案
- 專案