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テキストエディタツールモード
詳細は以下に記載されています。本記事では使用感などの所感を記載します。
テキストエディタツールモードは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である程度解説されていますが、実際に動かしてみないとわからない点もありました。(ドキュメント化が追いついて無さそう)
準備
- 事前準備
-
docker
のインストール - 環境変数
OPENAI_API_KEY
の設定(埋め込みモデルを利用するため, 多分Ollamaでも出来る)
- 設定
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
の起動
-
avante-rag-service
のpull
docker pull yetone/avante-rag-service:0.0.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が開始されました。
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の利用
現状、OpenAI
かOllama
にのみ対応しているよう。
RAGサービスはavante.nvimのデフォルトツールとして定義されており、LLMへ指示した際に必要があればRAGサービスへRetrieveされます。
実際に利用してみると以下のような挙動でした。CursorのCodebaseが一番イメージが近いかもしれません。
- プロジェクトをneovimで開く
- Indexingされる(時間かかる)
- Indexing完了
- プロジェクト内容についての質問をする
- 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 |
Gemini-2.0 Flash | 1048576 | 8192 | 無料 | 無料 | |
🧪Gemini-2.5 Flash | 1048576 | 65536 | 無料 | 無料 | |
🧪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 | |
🧪gemini-embedding-exp-03-07 | 8192 | 3072 / 1536 / 768 | 無料 | ||
text-embedding-004 | 2048 | 768 | 無料 | ||
embedding-001 | 2048 | 768 | 無料 |
ポジションマップ
LLMは知能、速度、深い推論などなどそれぞれに特色が出てきています。
今後AIアプリケーションもそうですが、エージェント設計をするうえで、どれをどこで使えばいいのだろう?と迷いが出てきます。そこで偏見だらけですがポジションマップでまとめてみました。
ReasoningモデルはPlan, Designのフェーズで
Complexタスクが得意なgpt-4oなどはCodingなど
Realtimeタスクが得意なHaikuなどはAutoSuggestionなど
と勝手に分類しました。
もちろん想定するタスクによって適切なLLMは変わりますし、エージェントなど複数のLLMで連携する場合は全く当てはまらないかもしれません。
このように分類するとClineのPlan, Actモードはとても上手いなぁと感じられます。
Discussion