Pi Coding Agentのインストール(Ubuntu編)

Ubuntu
スポンサーリンク

この記事は、Geminiとの相談結果が多分に含まれています。
利用する場合は、自己責任でお願いします。

記事の内容は以下のシステムでテストされています。
Ubuntu26.04.1LTS
Intel Core Ultra5 250K Plus
メインメモリ96GB(4800MT/s)
Intel Arc A770(16GB)

以前「AIエージェントを使ってみよう(Pi Coding Agent)」の記事でもPiのインストールには触れました。
が、インストールがメインではなかったので、覚書としてインストールメインの記事を書き直します。

世の中にはエージェントツールは多数ありますが、自分はほとんど触ったことがありません。

  • VSCodeのプラグインのCline
  • DeepSeek Harness
  • Unsloth Studioのエージェントツール

使ったことがあるのはこのくらいでしょうか。

どれも便利で多機能です。
ただし、AI界隈の事はただでさえ良く理解していないのに、勝手に便利なツールが付いてくるとそれが当たり前のように考えるようになります。
理解を深めようとする時に、これが返って邪魔になることもあるんですよね。

多機能だけど、搭載してあるだけで使わないツールを勝手に読み込み、KVキャッシュを圧迫してしまうところも、貧乏人の自分には痛いところでした。
KVキャッシュは大量のVRAMを消費しますが、大容量のVRAMを搭載したグラフィックスカードは、記事を書いている現在、AI需要で非常に高価になってしまっています。

インストール方法

愚痴を言っても仕方ありません。
インストール方法にいきましょう。

#!/bin/bash

# 1. nvm(Node Version Manager)のインストール
# ※バージョン(v0.40.8)は執筆時点のものです。エラーが出る場合は公式GitHubを確認してください。
# https://github.com/nvm-sh/nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash

# パスを即時反映(.bashrcに依存せず、直接nvmを読み込むよう修正)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# 2. Node.jsのインストール(常に最新の安定版が入るオプションを使用)
nvm install --lts

# 3. Pi Coding Agentのインストール
npm install -g @earendil-works/pi-coding-agent

# 4. Piの設定ディレクトリ作成
mkdir -p ~/.pi/agent

# 5. ローカルLLM(llama.cpp)の接続設定
cat << 'EOF' > ~/.pi/agent/models.json
{
  "providers": {
    "llama-cpp": {
      "baseUrl": "http://127.0.0.1:8080/v1",
      "api": "openai-completions",
      "apiKey": "none",
      "compat": {
        "supportsDeveloperRole": false,
        "supportsReasoningEffort": false
      },
      "models": [
        {
          "id": "local_AI",
          "name": "llama.cpp Local Model",
          "contextWindow": 262144,
          "maxTokens": 32768
        }
      ]
    }
  }
}
EOF

# 6. Piコーディングの拡張機能とMCPサーバー設定(fetchのみ)
npm install -g pi-llama-cpp

cat << 'EOF' > ~/.pi/agent/config.json
{
  "plugins": [
    "pi-llama-cpp"
  ],
  "llamaCpp": {
    "serverUrl": "http://127.0.0.1:8080"
  },
  "mcpServers": {
    "fetch": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-fetch"
      ]
    }
  }
}
EOF

ちょっと補足。
インストールスクリプトは記事執筆時点の情報です。
npmのバージョンは

GitHub – nvm-sh/nvm: Node Version Manager – POSIX-compliant bash script to manage multiple active node.js versions
Node Version Manager – POSIX-compliant bash script to manage multiple active node.js versions – nvm-sh/nvm

で、確認して下さい。


{
“providers”: {
“llama-cpp”: {
“baseUrl”: “http://127.0.0.1:8080/v1“,
“api”: “openai-completions”,
“apiKey”: “none”,
“compat”: {
“supportsDeveloperRole”: false,
“supportsReasoningEffort”: false
},
“models”: [
{
“id”: “local_AI”,
“name”: “llama.cpp Local Model”,
“contextWindow”: 262144,
“maxTokens”: 32768
}
]
}
}
}

ここの、「”contextWindow”: 262144」は結構重要でして、
通常AIエージェントに自動で作業をまかせると、あっという間にコンテキストを使い果たしてしまいます。
普通は、ここでエージェントツールか推論エンジンがクラッシュしますが、
設定したコンテキストに近づくと、自動でコンテキストを要約(Compaction)して圧縮し、仕事を継続してくれます。


{
“plugins”: [
“pi-llama-cpp”
],
“llamaCpp”: {
“serverUrl”: “http://127.0.0.1:8080“
},
“mcpServers”: {
“fetch”: {
“command”: “npx”,
“args”: [
“-y”,
“@modelcontextprotocol/server-fetch”
]
}
}
}

ここの部分「mcpServers」には現在何も設定していませんが、後でネット検索の追加機能を付与したりできます。
また、記事にすると思います。


使い方

Piは単体ではLLMをロードできません。
裏で推論エンジン(llama.cppやLMStudio、ollamaなど)を動かして、繋ぐことになります。

「simple-llama-studioを大幅に改変(Ubuntu編)」で紹介した推論エンジンで説明します。
まず、simple-llama-studioをサーバーモードで立ち上げます。

次に、プロジェクトにしたいフォルダを開きます。

別に空のフォルダの中をプロジェクトフォルダにしてもOKです。
その時はプロンプトで指示を出せば良いです。

ちなみにAGENTS.mdを認識しているのがわかります。
ここに何もなければ、たぶんスペルを間違っています。

以上で使い方を終わります。


以下はPiについて、Geminiにまとめてもらいました。
そのつもりで読んでください。

Piについて

Pi Coding Agent
A terminal-based coding agent

Pi coding agent(pi.dev)は、ターミナル上で動く最小限のAIコーディングエージェントです。
AIが内部で利用する基本ツールは
「読み込み(read)・書き込み(write)・編集(edit)・コマンド実行(bash)」
の4つのみで構成されています。

公式ドキュメントでも「あえて標準搭載しなかった機能(What we didn’t build)」として以下を明言しています:

  • No MCP(最初からMCPを抱え込まず、必要なら拡張機能で追加)
  • No Sub-agents(固定のサブエージェント機能は持たず、tmuxや拡張で作る)
  • No Plan Mode / No Built-in To-Dos(独自のToDo管理を持たず、Markdownファイル等で制御)
  • No Permission Popups(毎回煩わしい承認ダイアログを出さず、コンテナやルールで制御)

機能を拡張したくなったらどうするか?

Piの拡張機能(Extensions)やスキル(Skills)はTypeScriptやMarkdown等で書かれています。

「こういうコマンドや機能が欲しい」と思ったら、
Piに自身を拡張するスクリプトを書かせ、/reload コマンドを叩くだけで即座に反映できる
仕組みになっています。

ユニークな機能

履歴がGitのように枝分かれする「ツリー構造セッション」

  • 通常のチャットAIは一本道の履歴ですが、Piはセッション全体が木構造(DAG)で保存されます。
  • /tree コマンドで過去のやり直したい地点へ戻り、別のアプローチをブランチ(分岐)して試すことができます。

作業中の割り込み指示(Steering)と順番待ち(Follow-up)

  • エージェントがツールを実行して作業している最中に、Enter を押すと現在のツール実行直後に割り込んで軌道修正(Steering)させることができます。
  • Alt+Enter を押すと、現在のタスクが一段落した後のキューとして追加(Follow-up)されます。

コンテキスト管理の透明性(Context Engineering)

  • 多くのツールでは裏でどんなプロンプトが飛んでいるか見えにくいですが、Piは AGENTS.md や SYSTEM.md でプロジェクトごとの指示をストレートに制御できます。
  • トークン上限に近づいたときの会話要約(Compaction)ロジックすらも、拡張機能で差し替え可能です。

4つの動作モード

  • ターミナルの対話画面(TUI)だけでなく、スクリプトからワンショットで呼ぶ Print/JSON モード、別言語・別プロセスから操る RPC モード、ライブラリとして組み込む SDK を備えています。

最後に

今回はローカルAIを推論エンジンで動かしましたが、APIキーを取得してGemini、ChatGPT、Claudeと繋ぐこともできるようです。
自分は一度Geminiの「gemini-3.5-flash」と繋いで動かした事がありますが、ローカルAIとは段違いの速度と賢さでビビった記憶があります。

とはいえ使い始めたばかりで、まだまだ知らないこともたくさんあります。
新たにわかったことなんかあったら、追記するでしょう。

後日、ネット検索機能を追加して、普通にChatGPTみたいに(というと言い過ぎかもしれませんが)使える方法も紹介します。

今回は以上です。

コメント

タイトルとURLをコピーしました