Piを触ってみる

2026年7月12日

はじめに

Piを触ってみる。

環境

  • Ubuntu 22.40 LTS
  • pi v0.80.6
  • LM Studio 0.4.29

インストール

こちら に従う。

$ npm install -g --ignore-scripts @earendil-works/pi-coding-agent

セットアップ

ここ を参考にした。

~/.pi/agent/models.json

{
  "providers": {
    "lmstudio": {
      "baseUrl": "http://localhost:1234/v1",
      "api": "openai-completions",
      "apiKey": "lm-studio",
      "models": [
        {
          "id": "qwen/qwen3.6-35b-a3b",
          "name": "Qwen3.6 35B A3B"
        }
      ]
    }
  }
}

テスト

$ pi --provider lmstudio --model qwen/qwen3.6-35b-a3b -p "Hello, are you working?" 
Yes, I'm here and ready to help! What can I do for you?
$ pi --provider lmstudio --model qwen/qwen3.6-35b-a3b
...

> こんにちは

 こんにちは!何かお手伝いできることはありますか?

使ってみる

プロジェクトの概要説明をしてもらう。

$ pi
...

>  Summarize this repository and tell me how to run its checks.
...

read resource AGENTS.md (ctrl+o to expand)

 I have enough information to summarize the repository and explain how to run its checks.
 
 Repository Summary
 
 2D Truss FEM Solver — A Julia-based Finite Element Method program for analyzing 2D truss structures, using only
 Julia stdlib + DataFrames, LinearAlgebra, and DelimitedFiles (no external dependencies). 
...

Piはデフォルトだとread/write/edit/bashのツールが使える。

コンテキストファイルとしてAGENTS.mdを読み込む。~/.pi/agent/AGENTS.mdでグローバルな設定ができる…らしいのだが、Pi自身に設定を頼んだら、~/.pi/agent/SYSTEM.mdを作ってくれた(AGENTS.mdはコンテキストファイルで、SYSTEM.mdはシステムプロンプトファイルという位置づけ)。

> 日本語で対応するようにグローバルな設定をして

pi にはグローバルなシステムプロンプトを設定する仕組みがあります。~/.pi/agent/SYSTEM.md を作成するのが最も確実な方法です。

 write ~/.pi/agent/SYSTEM.md

 # 言語設定

 すべての応答は日本語で出力してください。
 ユーザーが日本語で質問している場合は、必ず日本語で回答してください。
 技術用語やコードはそのまま英語のままにしてください。
 ファイル名、コマンド、コード内のコメントは対象言語に合わせてください。
 
 以下のルールに従ってください:
 - メッセージの本文は日本語で記述する
 - コードブロック内のコメントは、日本語で記述する

終了するには/quitを実行するか、Ctrl-Dを押す。セッションは自動で保存され、直近のセッションから再開するにはpi -cとすればよい。pi -rだとセッションリストから再開するセッションを選択できる。/nameでセッション名を設定できる。

以下のようにするとシェルコマンドを実行できる。

$ !ls

/settingsで設定を変更できる。

仕様駆動開発

OpenCodeで試した2次元トラス解析コードの仕様駆動開発 について、実行してみた。OpenCodeとの比較のためにSYSTEM.mdは設定しない状態で実行。Qwen 3.6 35B A3Bを使用。

  • 「PRD.mdとSPEC.mdをもとにAGENTS.mdを作成して」
  • 「開発実行に必要なタスクリストを整理して、tasklist.mdとして書き出して。AGENTS.mdにはtasklist.mdを参照しながら作業を進めるように追記して」
  • 「タスクリストに従って作業を進めてください」

1時間程度で完了。

スキル&テンプレート化

上の手順をテンプレート化あるいはスキル化してとPiにお願いしてみたら、両方作ってくれた。

  • ~/.pi/agent/skills/prd-to-development/SKILL.md
  • ~/.pi/agent/prompts/prd-to-dev.md

以下で全手順を実行できる。

/prd-to-dev

成果物

仕様の精緻化

OpenCodeで試した仕様駆動開発は、あえて荒削りなままの仕様(しかもよく見たらちょっと間違っている)で試している。もう少し精緻化したら結果が変わるかどうか確認してみた。

> SPEC.mdの中で曖昧な部分を指摘してください

これで色々指摘してもらって、仕様書を修正。また、テストを修正と詳細化してもらい、検証問題も組み込んだ。これでやり直したら20分で完了。事前準備を綿密にやることで実行時間を減らすことができた。ただし、検証問題を組み込んだ関係で、実行方法の曖昧さ(引数を渡すのかなど)が顕在化している。

成果物

Ornith 1.0 35B

OpenCodeでお試ししたときにはまだ出てなかったモデル。Context Lengthは262144に設定。修正後の仕様を用いて35分で完了したが、ひと手間入れる必要があり、実行方法の曖昧さの部分に引っかかった可能性がある。

成果物

仕様の精緻化2

コマンドの実行方法を明記。

Ornith 1.0 9B

仕様の曖昧さをなくせば、実はもう少し小さなモデルでもいけるんじゃないかと思って試してみた。Context Lengthは131072(128x1024)に設定。大きなモデルではテスト前の実装フェーズでは苦労していなさそうだったが、小さなモデルの場合、実装フェーズですでに試行錯誤に入っているようだった(そのせいで出力トークン128k制限で1回止まった)。反力の出力やコマンドライン実行で仕様を満たしていない部分があったが、修正はすぐにできた。実行は30分程度か。使えないことはないと思う。

成果物

Glm 4.7 Flash

OpenCodeでうまくいかなかったので再度挑戦。Context Lengthは65536(64x1024)に設定。思考がループに入ったので止めて、LM StudioでClear Thinkingという設定を有効にしたら進んだが、今度は実行のループに入り込んでしまったので断念。

その他の使い方

Piをシェルの代わりに使える。たとえば、「このディレクトリ内にあるディレクトリをそれぞれ.tar.gz圧縮したい」と思ったら、「ワンライナーでやるにはどうすんだっけ」と調べなくても、そのままお願いできる。ただし、コマンド実行前に確認してくれないので、注意は必要。

ちなみに、Webに直接アクセスする方法は持たないが、curlは打てるので、実質的にはWebも見れる。ddgrがあれば検索もできる。

$ sudo apt get install ddgr
$ ddgr
ddgr (? for help) RAG

 1.  What is Retrieval-Augmented Generation (RAG) - GeeksforGeeks [www.geeksforgeeks.org]
     Retrieval-Augmented Generation (RAG) is a way to make AI answers more
     reliable by combining searching for relevant information and then
     generating a response. Instead of guessing based only on old training
     data, it first finds useful data from external sources (like documents or
     databases) and then uses it to give a better answer.

AGENTS.mdに「Web検索にはddgrを使え」と書いておく(そうしないとcurlでなんかやりだす)。

> RAGについてWebで調べて

 RAGについて調べてみたにゃ〜🐱

 RAG(Retrieval-Augmented Generation)ってなに?🤔

 外部のデータから情報を検索して、LLMの回答を強化する技術にゃ〜✨

 ### 仕組み:

 1. 検索(Retrieval) → ユーザーの質問に対して外部のドキュメントやデータベースから関連情報を取得
 2. 生成(Generation) → 取得した情報をLLMに追加して、より正確な回答を生成

 ### 良いところ👍:

 - 📚 最新の情報にも対応できる
 - 🔍 根拠に基づいた信頼性の高い回答
 - 🏢 社内データなどプライベートな知識も活用可能

 Wikipedia、AWS、Microsoft、Google Cloudなどの記事が引っかかったにゃ〜🐱💕