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 程式碼即可建立新個性。
  • 智慧快取與自動壓縮 – 增量摘要機制透過準確計數令牌並在需要時壓縮歷史記錄,使長對話保持低成本。

如何使用

  1. 安裝插件(透過 lazy.nvim 或 Neovim 內建套件管理器)並執行 npm run build 產生 dist/magenta.mjs
  2. 設定一個指向 Anthropic 模型(例如 claude-opus-4-8)的 設定檔。README 提供最小的 Lua setup 呼叫範例。
  3. 開啟聊天側邊欄(<leader>mt)並輸入以 @ 開頭的指令(例如 @file: src/main.rs 將檔案加入上下文,@fork 分支線程,@fast 使用較便宜的模型)。
  4. 模型在緩衝區中回應;你可以編輯其建議的變更,下一個回合將你編輯的差異送回模型。
  5. 可選工具: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 頂部連結的作者部落格文章。

相關

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