どのモデルとエージェントの組み合わせが動くかはローカルLLM で AI エージェントを使う — 試験結果にある。 本書は、その結果をもとに、閉域網の PC へ持っていく配布物の中身と作り方を決める。
ネットにつながらない別の PC へ、ローカル LLM(llama.cpp)・Node.js・エージェント・試験スクリプト・モデルをまとめて運び、そこで同じ試験を流せるようにする。 現地では何もダウンロードしない。
| PC | CPU | GPU(ドライバ) | メモリ | 扱い |
|---|---|---|---|---|
| PC-A | Core i7-1355U(10 コア) | Iris Xe(32.0.101.7085) | 32 GB | 本命。メモリを 2 枚にして UHD から Iris Xe の表示に変わった |
| PC-B | Core i7-1355U(10 コア) | Iris Xe(32.0.101.7085) | 32 GB | 本命。PC-A と同じ構成 |
| PC-C | Core i7-1185G7(4 コア) | Iris Xe(30.0.101.1338、2022 年) | 16 GB | 手を加えずに試す |
| PC | 使う版 | 入力の処理(pp512) | 生成(tg64) |
|---|---|---|---|
| PC-A | Vulkan(Intel GPU) | 163 tok/s | 7.5 tok/s |
| PC-A | CPU だけ | 34 tok/s | 8.4 tok/s |
| PC-C | Vulkan(Intel GPU) | 129 tok/s | 2.4 tok/s |
| PC-C | CPU だけ | 68 tok/s | 7.0 tok/s |
| 種類 | 中身 | 作り方 |
|---|---|---|
| llama.cpp | b11320 の Vulkan 版(Intel GPU)・CPU 版・CUDA 版(NVIDIA がある PC のため) | GitHub の公式リリースを展開したフォルダをそのままコピーする。exe は同じフォルダの DLL を使うので、フォルダの中身を分けない |
| Node.js | v26.10.0 の zip 版と msi 版の両方 | zip 版はインストールも管理者の権限も要らない。msi 版は、インストールして使いたい PC のために添える |
| エージェント | Pi・OpenCode・Claude Code(npm 版と単体の claude.exe の両方) | こちらで zip 版 Node.js のフォルダの中に npm でインストールし、そのフォルダごと運ぶ。インストール時に取ってくる OS 用の実行ファイルも中に入った状態で運べる |
| モデル | gemma-4-E4B(Q4_K_M、5.0 GB)・gemma-4-E2B(Q4_K_M、3.2 GB)・Ministral-3-3B(Q4_K_M、2.0 GB)・gemma-4-12B-QAT(Q4_0、6.5 GB) | 差し替え用のテンプレートがあるもの(いまは Ministral-3-3B)は .jinja も一緒に運ぶ |
| 試験スクリプト | tools/50_run/ の sum・読み書き・ベンチの試験 | 置き場所を引数と 1 つの設定で変えられるようにしてから運ぶ(第 3 章) |
| 起動用の cmd | エージェントとモデルの組み合わせごとの cmd | 第 4 章 |
| GPU ドライバ | Intel 第 11〜14 世代向け 32.0.101.7092(gfx_win_101.7092.exe) | Intel の公式サイトから取得済み。入れるかは現地で決める |
持っていかないもの: Aider(試験で、書いたプログラムを自分では実行しなかった)・Codex(試験は利用者が流していた)。
配布物は 1 つのフォルダにまとめ、どのドライブ・どのフォルダに置いても動くようにする(Y:\ の直下でも、D:\llm\ の下でも)。
スクリプトと cmd は、自分の置き場所(%~dp0・$PSScriptRoot)から相対で全部を探す。
<配布先>\
bin\
llama.cpp-b11320-vulkan\
llama.cpp-b11320-cpu\
llama.cpp-b11320-cuda\
node\ zip 版 Node.js。中に npm で入れたエージェント
claude\ 単体の claude.exe
installers\
node-v26.10.0-x64.msi
gfx_win_101.7092.exe
drivers\ Intel GPU ドライバ
models\ .gguf(既定の置き場。設定で別の場所にもできる)
run\ 起動用の cmd(第 4 章)
tools\50_run\ 試験スクリプト・起動用の start-agent.ps1・paths.ps1
templates\ .jinja
.claude\settings.json 試験が作業フォルダに置く設定
README.html このプロジェクトの README(試験が作業フォルダにも写す)
notes\ 資料(html と画像)。元の階層のまま写すので、README からのリンクが切れない
config.cmd 場所の設定(下の表)
使い方.html 現地での手順(持っていくもの・設定・動かす順番・試験・うまく動かないとき)
work\ エージェントの作業フォルダ・空のホーム(実行時に作る)
logs\ 試験の結果(実行時に作る)
いまの試験スクリプトで、場所をリテラルで書いているのは次のとおり。
これを config.cmd の 1 か所にまとめ、現地で違う場所(例: C:\AI-models)にあるときは、そこだけを書き換えればよい形にする。
| いまの値 | 使っているところ | 設定の名前 | 配布物での既定 |
|---|---|---|---|
C:\AI-models | test-agents.ps1・test-cc-tools.ps1・test-aider-followup.ps1 の -ModelDir | LLM_MODEL_DIR | <配布先>\models |
W:/temp/llama-cp-sandbox | エージェントの作業フォルダ(3 本とも) | LLM_WORK_DIR | <配布先>\work |
W:/temp/llama-cp-agent-home | Pi・OpenCode の空のホーム(test-agents.ps1) | (LLM_WORK_DIR の下) | <配布先>\work\agent-home |
W:/temp/llama-cp-home | Claude Code の空のホーム(test-cc-tools.ps1) | (LLM_WORK_DIR の下) | <配布先>\work\cc-home |
bin/llama.cpp | llama-server の場所(-LlamaDir) | LLM_BACKEND | 自動(第 4 章) |
11434 | llama-server のポート(start-agent.ps1 と試験 3 本の -Port) | LLM_PORT | 11434(使用中なら起動前に止まる) |
tools/50_run/templates | 差し替え用のテンプレート | — | <配布先>\tools\50_run\templates(スクリプトの置き場所からの相対なので、そのまま) |
PATH の node・pi・opencode・claude | エージェントの起動 | — | cmd の中で <配布先>\bin\node を PATH の先頭に足す |
引数で渡せば、その回だけ設定より優先する(いまの -ModelDir などと同じ)。
読み込みは tools/50_run/paths.ps1 が受け持つ。root に config.cmd があればその set 行を読み、無ければ環境変数、それも無ければ開発用の PC の場所(上の表の「いまの値」)にする。
開発用の PC には config.cmd を置かないので、今までどおりの場所で動く。
<配布先>\work でよいが、開発用のこの PC で流すときは今までどおり外に置く。
ダブルクリックで、llama-server を立ててエージェントを開けるようにする。エージェントとモデルの組み合わせごとに 1 本を run\ に置く。
| cmd の名前(例) | 中身 |
|---|---|
pi-gemma-4-E4B.cmd | E4B で llama-server を立て、Pi をそれにつないで開く |
claude-gemma-4-E4B.cmd | 同じく Claude Code(npm 版)。claude-exe-… は単体の claude.exe |
opencode-gemma-4-E4B.cmd | 同じく OpenCode |
server-gemma-4-E4B.cmd | llama-server だけを立てる(エージェントを自分で開くとき) |
bench-gemma-4-E4B.cmd | Vulkan 版(Intel GPU)と CPU 版で、llama-bench の速さを測る |
list-devices.cmd | Vulkan 版から見える GPU を表示する(1 本だけ) |
モデル 4 本 × 6 種類(Pi・OpenCode・Claude Code の npm 版と単体版・サーバだけ・速さ)+ list-devices.cmd の 25 本。cmd は手で書かず、組み立てのスクリプトがモデルの一覧から生成する。中身はどれも tools\50_run\start-agent.ps1 を引数付きで呼ぶだけ。
config.cmd を読む(モデルの場所など)LLM_BACKEND が空なら、Vulkan 版の --list-devices に GPU が出れば Vulkan 版、出なければ CPU 版LLM_PORT、既定 11434)が空いているかを見る。使用中なら、使っているプログラム名を出して止める-c 65536 -np 1 -fa on -ctk q8_0 -ctv q8_0 --reasoning off、テンプレートがあれば --chat-template-file)work\ の下の空のホームに書き、そのホームでエージェントを開く(利用者のいつもの設定には触れない)Intel GPU でのオプションの確かめ(-fa・-ctk q8_0 が効くか、-ngl)は、この PC の Iris Xe では試験と同じオプションで動いた。現地でも同じ値から始める。
config.cmd の設定と引数で変えられるようにする(tools/50_run/paths.ps1)tools/50_run/start-agent.ps1 を書き、組み立てのときに組み合わせごとの cmd を生成するtools/60_release/make-offline-bundle.ps1 を書く。出力は _releases/offline/llm-bundle-yyyyMMdd(モデル込みで 20.4 GB)config.cmd のモデルの場所を書き換えて動くかを確かめる(下の表)tools/60_release/bundle/使い方.html に書き、配布物の root に入れる。手順のとおりに配布物の中で test-agents.cmd を流し、PATH を足さずに配布物の node が使われ、Vulkan 版が自動で選ばれることを確かめたlist-devices.cmd・bench-….cmd・sum の試験を流し、対話の cmd で使ってみる
配布物をプロジェクトの外へ写し(モデルは除く)、config.cmd の LLM_MODEL_DIR を開発用の PC のモデルの場所に書き換えて流した。
PATH は配布物の bin\node と Windows の最小限だけにし、この PC に入っている Node.js・エージェントを使わないようにした。
| 確かめたこと | 結果 |
|---|---|
list-devices.cmd | ✅ Intel GPU(Vulkan0)が見えた |
bench-gemma-4-E2B….cmd | ✅ 書き換えた場所からモデルを見つけ、Vulkan 版と CPU 版で測れた(この PC は NVIDIA もあるので、Vulkan 版の値は NVIDIA と合わせた速さ) |
| Pi の試験(E4B) | ✅ 日本語の確認・sum とも合格。版は配布物の pi 0.99.2・node v26.10.0 |
| Claude Code npm 版の試験(E4B) | ✅ 日本語の確認・sum とも合格 |
| Claude Code 単体版の試験(E4B) | ✅ sum 合格(bin\claude を PATH の先頭にして claude.exe を使わせた) |
| OpenCode の試験(E4B) | ✅ sum 合格 |
| 起動用の cmd(Pi・E2B) | ✅ Vulkan 版を自動で選び、サーバを立て、Pi を開き、閉じたらサーバを止めた(入力をつながなかったので Pi はすぐ終わった。対話はまだ試していない) |
| 開発用の PC での試験 | ✅ config.cmd なしで、今までの場所のまま動いた |
試験は速さを見るものではないため、サーバは CUDA 版で動かした。