dlants/magenta.nvim

A tool-use-focused LLM plugin for neovim.

magenta.nvim – Neovim 内でのAI強化コーディング

何であるか – Neovim プラグインで、直接エディタから Anthropic の LLM(Claude)と会話できます。このモデルを エージェント として扱い、コマンドを送信し、完全なプロンプトを確認し、出力を編集し、その編集内容をプラグインがモデルにフィードバックします。目的は、馴染み深い Vim ワークフロー内で「開発者 ↔ AI」のスムーズなループを実現することです。

主なアイデア

  • 透過的なエージェントインタラクション – すべてのプロンプト、ツール呼び出し、トークン使用量が可視化されます。変更内容を適用する前に編集可能です。
  • Edit Description Language (EDL) – 挿入、置換、削除を記述するための小さなDSLで、生テキストのdiffよりもはるかにトークン効率が良いです。
  • OSレベルのサンドボックス – Anthropic の sandbox-runtime(macOSではSeatbelt、Linuxではbubblewrap)を使用して、ファイルシステムやネットワークアクセス権限を設定可能な状態でツールコマンドを実行し、誤った資格情報の漏洩を低減します。
  • Dockerサブエージェント – Dockerコンテナ内で隔離されたエージェントを起動し、並列かつ自律的な作業(例:別ブランチでの重いLintやコード生成)を可能にします。
  • スレッドごとのバッファ – 各会話スレッドが独自の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. モデルの返答はバッファに表示されます。提案された変更を編集でき、その編集内容のdiffは次のターンでモデルに送信されます。
  5. オプションツール:Dockerサブエージェント、サンドボックス制御されたシェルコマンド、PDF読み取り、Web検索などは、@ コマンドまたは組み込みツールメニューから呼び出されます。

インストールスニペット

-- 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やWebUIへの切り替えを回避。
  • エディタ内AIプラグインの中では稀な、モデルの行動に対する細かい制御を提供。
  • EDL DSLによりトークン使用量を削減し、大規模な変更に高価なClaudeモデルをより手頃に利用可能に。
  • 透過的なUIとテスト駆動アーキテクチャにより、貢献者にとって使いやすく親しみやすい。

状態 – 活発にメンテナンス中(2026年4月まで更新履歴あり)。主にAnthropicをサポート;他のプロバイダーは一時的に非対応。

さらに読む – Neovim内で :help magenta.nvim、リポジトリの doc/ ファイル、READMEの上部にリンクされた著者のブログ記事。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト