ollama から pi をローンチしたよ! というメールが届きました。
pi と書いてあるので、Raspberry pi で動くようにチューニングした Version の ollama でもリリースしたのかな?と思ったのですが、全く違いました。
pi という名前の、coding agent システムでした。
特徴をAIに解説してもらいました。
PiはMario Zechnerが開発したTypeScriptベースのツールキットで、OpenClawエージェントエコシステムの基盤になっています。プラグイン拡張システムを内蔵しており、Pi自身に拡 張機能を書かせることもできます。
Claude code, Codex CLI, Gemini CLI と並ぶものです。

今回は、pi の動作確認と、local ollama による Qwen 3.5 9b でどこまでできるのかをテストしてみたいと思います。
出力トークンの上限を上げたmodel を登録する
qwen3.5:9b の出力上限を上げたバージョンを作る
cat > ~/Modelfile-qwen35-long <<'EOF'
FROM qwen3.5:9b
PARAMETER num_predict 16384
EOF
ollama create qwen3.5:9b-long -f ~/Modelfile-qwen35-long
モデルを登録する
OpenRouter の API key を export OPENROUTER_API_KEY=sk-... と、環境変数で設定するとともに、~/.pi/agent/models.json を作成し、ローカルの ollama を使用するように設定する。
{
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"models": [
{
"id": "qwen3.5:9b-long",
"name": "Qwen 3.5 9B Long (Local)",
"reasoning": false,
"input": ["text"],
"contextWindow": 32768,
"maxTokens": 16384,
"compat": {
"supportsDeveloperRole": false,
"supportsReasoningEffort": false
}
}
]
}
}
}
pi 起動

$ pi
pi v0.64.0
escape to interrupt
ctrl+c to clear
ctrl+c twice to exit
ctrl+d to exit (empty)
ctrl+z to suspend
ctrl+k to delete to end
shift+tab to cycle thinking level
ctrl+p/shift+ctrl+p to cycle models
ctrl+l to select model
ctrl+o to expand tools
ctrl+t to expand thinking
ctrl+g for external editor
/ for commands
! to run bash
!! to run bash (no context)
alt+enter to queue follow-up
alt+up to edit all queued messages
ctrl+v to paste image
drop files to attach
Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.
おはよう
The user greeted me in Japanese saying "おはよう" (Ohayou - Good morning). I should respond in a friendly manner. Since they're using Japanese, I'll
respond in Japanese as well.
おはようございます!
今日は何かお手伝いしましょうか? コードレビューやバグ修正、新しい機能の実装、あるいは単純に新規ファイル作成など、何でもお気軽にお申し付けください。
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~/pi_tetris
↑1.5k ↓91 4.9%/33k (auto) (ollama) qwen3.5:9b-long
一部文字化けしていたので、削除していますが、正常に動いています。
Claude code でもなく、Codex CLI でもなく、Gemini CLI でもない、
何か、軽量で、カスタマイズ可能な Vibecoding tool という実感が、たしかにあります。
models

Only showing models with configured API keys (see README for details)
→ google/gemini-3.1-flash-lite-preview [openrouter] ✓
qwen3.5:9b-long [ollama]
ai21/jamba-large-1.7 [openrouter]
alibaba/tongyi-deepresearch-30b-a3b [openrouter]
allenai/olmo-3.1-32b-instruct [openrouter]
amazon/nova-2-lite-v1 [openrouter]
amazon/nova-lite-v1 [openrouter]
amazon/nova-micro-v1 [openrouter]
amazon/nova-premier-v1 [openrouter]
amazon/nova-pro-v1 [openrouter]
(1/246)
Model Name: Google: Gemini 3.1 Flash Lite Preview
ということで、ollama と OpenRouter 一式が出てきます。
テトリス作成チャレンジ
qwen3.5:9b-long [ollama]
深く考えずに、生成を依頼してみました。
Local ollama の Qwen 3.5 9b です。
依頼内容
ブラウザで動作するシンプルなテトリスを作ってください。
Vanilla js で書き上げてください。
index.html, css/main.css, js/main.js の3ファイル構成
結果
index.html と css は生成に成功しましたが、どうしても js ファイルを書き出せませんでした。
考察
9b で js ファイルの生成に失敗した原因を、Claude に考察してもらいました。
9b で JS ファイルの生成に失敗した原因は、コード生成能力そのものというより、ツール呼び出しフォーマットを維持しながら長いコードを出力するマルチタスクの難しさにあると考えています。OpenRouter 版でも同様に失敗したことから、VRAM ではなくモデルサイズ自体の限界です。一方、35b-a3b(MoE)は推論時のアクティブパラメータこそ約 3B ですが、35B 分の知識容量を持つため、コーディングパターンとツール呼び出しの両方を安定して処理できたと思われます。
qwen/qwen3.5-9b [openrouter]
OpenRouter 版も試します。
メモリサイズが異なるので、うまくいくかもしれないと思いましたが、、、やはり、正常にファイルを生成できませんでした。
qwen/qwen3.5-35b-a3b [openrouter]
簡単に成功しました。

pi の自己拡張機能を試す
つづいて、自己機能拡張を試してみます。
pi の機能や特徴の調査にフォーカスしたいので、model は google/gemini-3.1-flash-lite-preview に差し替えました。
拡張機能を作らせる
/hello コマンドで挨拶する拡張機能を作ってください。
~/.pi/agent/extensions/hello.ts に保存してください。
と指示したところ、
/hello コマンドで挨拶をする拡張機能を作成しました。以下のパスに保存されています。
/home/kiyo/.pi/agent/extensions/hello.ts
もし既に pi が実行中であれば、/reload コマンドを実行して拡張機能を読み込んでください。その後、/hello または /hello [名前] で挨拶が表示されます。
/hello コマンドで挨拶をする拡張機能を作成しました。以下のパスに保存されています。
ということなので、早速
/hello きよぽん
としたところ、、、

と、出ました。
手作り Vibecoding 環境という実感があります。
ローカル LLM で使う場合、9B クラスではエージェントタスクに限界がありますが、MoE の 35b-a3b 以上なら実用的に動きます。
自分好みのコーディングエージェントを組み立てたい人には、試す価値ありです。

