JetBrains AI Assistant では、チャットモードとして Chat と Edit を選択できます。
AI chat | AI Assistant Documentation
AI Assistant上の Edit モードの説明には「Modify Code」とあります。また、公式ドキュメントにも
use this mode when working on your code. In this mode, AI Assistant focuses on providing adjustments for the code in the current project. The required context is gathered automatically but can also be added or removed manually if needed.
と書かれています。もしかしたら多少はコーディングエージェント的な動きができるかもしれないと感じ、試してみたくなりました。
試す際、AIモデルを何にしようか考えたところ、AI Assistant ではAIモデルとしてローカルLLMも使えるようでした。
Switch to offline mode | AI Assistant Documentation
そこで、ローカルLLMで Edit モードを指定したとき、どこまでファイルの変更ができるかを試してみたことから、メモを残します。
目次
環境
- Mac mini
- M4
- メモリは32GB
- WebStorm 2025.1
- AI Assistant plugin 251.23774.42.28.6
- LM Studio 0.3.15
- ローカルLLMモデル
- Qwen3-30B-A3B-MLX-4bit
- Gemma3-12B-it-qat-GGUF
- Mellum-4b-base
環境構築
LM Studioのセットアップ
JetBrains AI Assistant でローカルLLMモデルを使う場合、次のどちらかを設定します。
Models | AI Assistant Documentation
- LM Studio
- Ollama
今までローカルLLMを使ったことがないので扱いやすいGUIがあると嬉しいのと、自分のマシンで適切にローカルLLMが動作するかの目安があると嬉しいことから、LM Studioを選択しました。
LM Studioの場合、モデルをダウンロードする際に、自分のマシンで扱うのは厳しい場合は次のような表示が出るのでわかりやすいです。
LM Studioの公式サイトからダウンロードしてインストールします。
LM Studio - Discover, download, and run local LLMs
JetBrains IDEとLM Studioの連携
次に、JetBrains IDE (WebStorm) とLM Studioを連携します。
Connect AI Assistant chat to your local LLM | AI chat | AI Assistant Documentation
まず、LM Studioの設定です。インストール直後は LM Studio の Developer タブにある Status が Stopped になっているはずです。そのトグルをクリックすると、Statusが Running になります。なお、LM Studioの設定は特に変更しないため、デフォルトのIPアドレス・ポート (http:127.0.0.1:1234)で起動することになります。
続いて、AI Assistant の設定を開き、 LM StudioのURLを設定します。あとは接続のテストをしてみて、接続できればOKです。
動作確認
今回は3つのローカルLLMモデルを使って動作確認します。それぞれ、LM Studioで動かせそうなもののうち一番良さそうなものを選択してみます。
各モデルに与える、プロンプトやREADMEについて
性能を比較しやすくするため、以前 Cline + Claude 3.7 sonnet 20250219 で作ったときのプロンプトを流用します。
Clineとともに、AmazonのURLをシンプル化するChrome拡張を作ってみた - メモ的な思考的な
AI Assistant が仕様を把握できるよう、Clineに渡した productContext.md を英語化したものを README として用意しました。詳しい内容は後述のソースコードを参照してください。
また、AI Assistantに渡すプロンプトは共通化し、以下の内容としました。やや雑かもしれませんが、これだけでどこまで作れるのか分からなかったため、今回は気にしないことにしました。
Please implement the Chrome extension based on the contents of the README.md
モデル
Qwen3
最近出た、Alibaba製のローカルLLMです。
Qwen3 の概要|npaka
Hugging Face ではいろいろなアカウントの Qwen3 があります。今回は LM Studio で動かすため、 lmstudio-community 版のものを使うことにします。
サイズとモデルについては、以下の記事を読んで気になった、 30B-A3B-MLX 系を使いたくなりました。
Qwen3はローカルLLMの世界を変えたかも - きしだのHatena
LM Studio にて確認したところ、 lmstudio-community/Qwen3-30B-A3B-MLX-4bit が動きそうでしたので、これを使うことにしました。
https://huggingface.co/lmstudio-community/Qwen3-30B-A3B-MLX-4bit
プロンプトを実行したところ、
- manifest.json
- background.js
の2ファイルができました。background.jsでは chrome.webNavigation.onBeforeNavigate.addListener を使っており、以前の Claude 3.7 Sonnet や Gemini 2.0 Flash とは異なる実装でした。
Chrome拡張として読み込ませたところエラーは発生しませんでしたが、動作しませんでした。
ソースコードはこちら。
https://github.com/thinkAmi-sandbox/amazon_url_redirector_by_local_llm-example/tree/main/qwen3-30b-a3b-mlx
2025/05/10 追記
コメントで14Bのことをお聞きしました。ありがとうございました。
試してみたところ、30Bと同じく chrome.webNavigation.onBeforeNavigate.addListener を使った実装が出ました。ファイルは manifest.json と background.js です。
Chrome拡張として読み込んだところ、次のエラーが出て動作しませんでした。
Unchecked runtime.lastError: You do not have permission to use blocking webRequest listeners. Be sure to declare the webRequestBlocking permission in your manifest. Note that webRequestBlocking is only allowed for extensions that are installed using ExtensionInstallForcelist.
こちらで手を加えれば動くのかもしれませんが、今回は作らせてみるのが目的だったので、いったんこのままにしました。
ソースコードはこちら。
https://github.com/thinkAmi-sandbox/amazon_url_redirector_by_local_llm-example/tree/main/qwen3-14b-mlx
Gemma3
こちらはGoogle製のローカルLLMです。
Gemma explained: What’s new in Gemma 3 - Google Developers Blog
同じく lmstudio-community 版を探したところ、 lmstudio-community/gemma-3-12B-it-qat-GGUF がありました。LM Studioで確認しても動きそうだったため、使うことにしました。
https://huggingface.co/lmstudio-community/gemma-3-12B-it-qat-GGUF
こちらもプロンプトを実行したところ、3ファイルができました。
- manifest.json
- background.js
- content.js
中身を見たところ、background.jsは console.log しか書いていないダミー的なスクリプトでした。また、 content.js は window.addEventListener("load", redirectAmazonURL) を使った実装でした。
こちらもChrome拡張として読み込ませたときにエラーとはならなかったものの、動作しませんでした。
Mellum
JetBrainsから出た、cloud-based code completion に特化したLLMです。
Mellum Goes Open Source: A Purpose-Built LLM for Developers, Now on Hugging Face | The JetBrains Blog
コーディング全般向けではない、かつ、サイズの小さなLLMですが、どこまでやれるか気になったため試すことにしました。こちらも Hugging Face にて公開されています。
https://huggingface.co/JetBrains/Mellum-4b-base
プロンプトを実行したところ、READMEの内容をレンスポンスしただけで止まってしまい、ファイルの作成などは行えませんでした。用途が違うので仕方ないですね。。。
おわりに
元々検証したかったAI Assistant の Edit モードについては、「ファイルを作成することもできるモード」とわかりました。ただ、まだ Beta と記載されているため、Betaが取れたときの挙動は変更になるかもしれません。
また、ファイルを作成したときは diff の表示や承認/否認を選べるなど、ややClineに近いような挙動をするということもわかりました。

現時点では、ローカルLLMは一発で動くソースコードを作成できませんでした。ただ、 manifest.json と background.js の2ファイルを作っているので、プロンプトを工夫したりすればもう少し良い結果になるかもしれません。
他に、サイズが小さく、分野へ特化したLLMを使う場合、AI Assistant では適切な出力ができないということもわかりました。
ソースコード
GitHubに上げました。
https://github.com/thinkAmi-sandbox/amazon_url_redirector_by_local_llm-example
今回のプルリクはこちら。Qwen3が作ったものは qwen3-30b-a3b-mlx に、 Gemma3が作ったものは gemma-3-12b-it-qat に、それぞれ入っています。
https://github.com/thinkAmi-sandbox/amazon_url_redirector_by_local_llm-example/pull/1
2025/05/10で追記した分のプルリクはこちら。
https://github.com/thinkAmi-sandbox/amazon_url_redirector_by_local_llm-example/pull/2
