🧠

avante.nvim v0.0.23 機能整理

に公開

avante.nvimはneovimをAI IDEにしてくれる素敵なプラグインです。

AIとのチャット、オートサジェスチョンなど基本的なアシストに加えて、これらを拡張する機能が多数実装されています。

その拡張機能が以下です。もちろん他にもありますが、まとめるのが大変なので本記事では取り上げません。

  • MCP / Tool Use
  • Cursor Planning Mode
  • Claudeテキストエディタツールモード
  • RAGサービス
  • Web検索

MCP対応 / Tool Use

mcphub.nvimと連携してMCP管理が出来るようです。本記事では特別取り上げませんが、デフォルトで利用出来るツールを下記します。

  • rag_search
  • python
  • git_diff
  • git_commit
  • list_files
  • search_files
  • search_keyword
  • read_file_toplevel_symbols
  • read_file
  • create_file
  • rename_file
  • delete_file
  • create_dir
  • rename_dir
  • delete_dir
  • bash
  • web_search
  • fetch

web_searchなど環境変数の設定が必要なものは適切に設定しないとエラーが出ます。

gitと連携出来るのでコミットメッセージの生成も可能で、そのままコミットしてくれます。

ただしコミットメッセージ生成に特化したツールと異なり、Conventional Messageに従ったフォーマットではありません。が、もしかするとMCPで対応出来るかもしれませんね。

Cursor Planning Mode

avante.nvimのソースコード内ではこれ実装されていないんですよね。README.mdに書いてあるけど、、、

実装されたら使ってみます。

Claudeテキストエディタツールモード

詳細は以下に記載されています。本記事では使用感などの所感を記載します。

Anthropic - TextEditorTool

テキストエディタツールモードはClaude-3.7-Sonnetのみ対応しており、以下の操作が可能なモデルです。

  • ファイルの閲覧: view
  • ファイルの作成: create
  • ファイルのアンドゥ: undo_edit
  • 文字列の置換: str_replace
  • 文字列の挿入: insert

これはファイル操作、コード編集のツールをLLMに持たせていることと同じに感じます。

使用感はClaude Codeがneovim内で利用できている感じです。ただavante.nvimではファイル閲覧、編集のツールはデフォルトで入っているので特別な差異は感じられませんでした。OFFでいいかなという感触です。

RAG Service

Cursorのコードベースと同じようにプロジェクト単位でIndexingして、会話時に必要に応じてRetrievingします。
これを利用するときレスポンスが英語になります(多分Indexing時に英語で保存されていて、ToolUse時のプロンプトが英語優勢になるため)。

これは立ち上げが面倒だったので手順を残します。

issue#1587である程度解説されていますが、実際に動かしてみないとわからない点もありました。(ドキュメント化が追いついて無さそう)

準備

  1. 事前準備
  • dockerのインストール
  • 環境変数OPENAI_API_KEYの設定(埋め込みモデルを利用するため, 多分Ollamaでも出来る)
  1. 設定

issue内に書いてある通りのモデルとは異なり以下のように設定。

require('avante').setup({
    rag_service = {
        enabled = true,
        provider = "openai",
        host_mount = os.getenv("HOME"),
        llm_model = "gpt-4o",
        embed_model = "text-embedding-large",
        endpoint = "https://api.openai.com/v1",
        runner = "docker",
    },
})

host_mountが最も重要らしい。この場所をdockerでマウントしてIndexingするんだとか。

これだけ見るとホームディレクトリ全体をindexingされちゃうの?と思いましたが、さすがにそんなことはありませんでした。
詳細は後述します。

avante-rag-serviceの起動

  1. avante-rag-serviceのpull
docker pull yetone/avante-rag-service:0.0.1
  1. マウント指定して実行

私の場合host_mount$HOMEにしたのでベタ打ちで/home/tkcdにしています。

docker run -v /home/tkcd --name avante-rag-service yetone/avante-rag-service:0.0.1

これで起動完了です。

RAGサービスの利用

Indexing

特に設定不要でプロジェクトをneovimで開くとプロジェクト全体のIndexingが開始されました。

rag-service starting

Indexing結果のベクターDBは$HOME/.local/share/nvim/avante/rag_service/にあります。

$ ls $HOME/.local/share/nvim/avante/rag_service/
chroma_db  leader.lock  logs  rag_config.json  sqlite

RAGの利用

現状、OpenAIOllamaにのみ対応しているよう。

RAGサービスはavante.nvimのデフォルトツールとして定義されており、LLMへ指示した際に必要があればRAGサービスへRetrieveされます。

実際に利用してみると以下のような挙動でした。CursorのCodebaseが一番イメージが近いかもしれません。

  1. プロジェクトをneovimで開く
  2. Indexingされる(時間かかる)
  3. Indexing完了
  4. プロジェクト内容についての質問をする
  5. RAG-Searchが適切な場合はRAGを利用した回答を行う. ファイルを直接見たほうが早いと判断した場合はread_file(view)を行う.

ただし注意事項があります。

Claude-3.7-Sonnetでの利用

  • テキストエディタツールモードを有効にする(enable_claude_text_editor_tool_mode = true)とview, str_replaceなどのツールを優先的に利用してしまう
  • テキストエディタツールモードを無効にすれば「RAGを使ってこのプロジェクトを解説して」と明示的にRAGの利用を指示すると、RAGを利用する傾向が高くなる(それでもviewを使い始めることもある)

テキストエディタツールモードは都度ファイルを読むのでコストと時間が掛かります。ただし指示に対して柔軟性が高いです。

リーディングメインではRAGを利用したほうが早いし安いです。

ガッツリコーディングさせる場合はテキストエディタツールが適しています。

OpenAIでの利用

  • GPT-4o, GPT-4.1はわりとRAGを利用してくれる
  • o3-mini, o4-miniではそもそもあまりツールを利用しない(なんで?)

Web検索

これは特筆しませんが、記事を書くときなど非常に便利そうだなと思います。

というか調べ物しながら作業する系であればとても有用ですね。

主要モデル比較

あまりにもモデルが増えているので一度整理したく以下の表を作成しました。

どのモデルがどのように適しているかを偏見を含めてまとめています。

Completion Model

Vendor Model ContextWindow MaxOutputToken Input Output
OpenAI gpt-4o 128000 16384 $2.5 $10.0
OpenAI gpt-4o-mini 128000 16384 $0.15 $0.6
OpenAI gpt-4.1 1047576 32768 $2.0 $8.0
OpenAI gpt-4.1-mini 1047576 32768 $0.4 $1.6
OpenAI 🔄 o1 200000 100000 $15.0 $60.0
OpenAI 🔄 o1-pro 200000 100000 $150.0 $600.0
OpenAI 🔄 o3 200000 100000 $10.0 $40.0
OpenAI 🔄 o3-mini 200000 100000 $1.1 $4.4
OpenAI 🔄 o4-mini 200000 100000 $1.1 $4.4
Anthropic Haiku-3.5 200000 8192 $0.80 $4.0
Anthropic Sonnet-3.5 200000 8192 $3.0 $15.0
Anthropic 🔄 Sonnet-3.7 200000 8192 $3.0 $15.0
Google Gemini-2.0 Flash 1048576 8192 無料 無料
Google 🧪Gemini-2.5 Flash 1048576 65536 無料 無料
Google 🧪Gemini-2.5 Pro 1048576 65536 無料 無料

Embedding Model

Vendor Model MaxInputToken Dimension Cost Description
OpenAI text-emebedding-3-small 8192 1536 / 512 $0.02
OpenAI text-emebedding-3-large 8192 3072 / 1024 / 256 $0.13
Google 🧪gemini-embedding-exp-03-07 8192 3072 / 1536 / 768 無料
Google text-embedding-004 2048 768 無料
Google embedding-001 2048 768 無料

ポジションマップ

LLMは知能、速度、深い推論などなどそれぞれに特色が出てきています。

今後AIアプリケーションもそうですが、エージェント設計をするうえで、どれをどこで使えばいいのだろう?と迷いが出てきます。そこで偏見だらけですがポジションマップでまとめてみました。

positionmap

ReasoningモデルはPlan, Designのフェーズで
Complexタスクが得意なgpt-4oなどはCodingなど
Realtimeタスクが得意なHaikuなどはAutoSuggestionなど

と勝手に分類しました。

もちろん想定するタスクによって適切なLLMは変わりますし、エージェントなど複数のLLMで連携する場合は全く当てはまらないかもしれません。

このように分類するとClineのPlan, Actモードはとても上手いなぁと感じられます。

GitHubで編集を提案

Discussion