💰

OpenCode Go + pi-coding-agent のすゝめ

に公開1

pi-coding-agent と OpenCode Go がめちゃくちゃオススメなので紹介します!

Claude Code / Codex で費用が厳しい、あるいはレートリミットに困らされている人は是非試してほしい!

TL;DR

  • Open Model の性能向上と Closed Model の価格上昇圧力から Open Model が熱い
  • 現在でも Opus に匹敵するモデルを OpenCode Go サブスクリプション($10) で Max Plan($100) バリに動かせる
  • 自由度上がって複数のプロバイダを扱っていきたくなるので pi-coding-agent はいいぞ

なぜ今 Open Model + Vendor 非依存エージェントが熱いのか

本題に入る前に、前提としてこれまでの Coding Agent の流れと取り巻く環境の変化を整理します

Closed Model とそのハーネスの覇権

コーディングエージェントをまともに動かそうと思うと

  • 高い自律性
  • ある程度長く自走してもらうため指示をたくさん書いておく必要があり、その指示追従性能
  • ツールの使用を重ねていくためコンテキストが長くなりやすく、コンテキスト長

と言った要素が必要で、モデル側のスペックをかなり要求されます。

初期の頃はほぼ Anthropic のモデル一択(OpenAI モデルは賢かったので壁打ちには良いが指示追従や自走が弱くて結構厳しかった感覚)、最近では OpenAI 系のモデルも使いやすくなっていますが、それでもほぼこの2択だったんじゃないかなと思っています。

また、モデルの選択肢がないことに加えて、これらの Frontier モデルの費用は高額すぎてまともに従量課金で使っていくのは(少なくとも一般人には)無理があり、かつサブスクリプションが従量課金に対してありえない割安設定になっていることもありサブスクリプションもほぼ必須な状態です。

結果、サブスクリプションを前提にすると、自然と provider が提供する Agent CLI、つまり Claude Code や Codex を使うことになっていき間接的にロックイン。ほぼ Claude Code か Codex かの2択という状態になっていました。

Closed Model の持続可能性と Open Model の台頭

サブスクリプションは従量課金と比べると相当に安く設定されており、試しに私の 2026年4月の利用量を ccusage で確認したら $100 プラン(+配布従量課金は少し使ったかも?)で、$1,000 を超えており、単純計算で1/10の費用感で利用できていることになります。

特に活用が進むにつれて 24/365 で動かしたいよねーとか、並列で動かすことで質を担保しようねーとかで per 個人の利用ボリュームも膨らんでいくので、サブスクリプションが持続可能でないことは懸念され、実際に制約が強まったりもしつつあります

  • Claude Code にて $20 プランのサブスク料金の中で Opus を利用するということができなくなったり、$20 プランではそもそも Claude Code 自体を利用できなくする A/B テストが行われていたり
  • AgentSDK のサブスクリプション利用が禁止され、サードパーティツールの利用が禁止される
  • OpenClaw という文字列が入ったリクエストが自動ブロックされたり

というわけで、Closed Model のコスト面が問題になる中、安価な Open Model が台頭してきています

https://x.com/Kimi_Moonshot/status/2046249571882500354?s=20

https://x.com/Alibaba_Qwen/status/2046939764428009914?s=20

グラフを見て分かる通り、Kimi k2.6 は Opus の1/5の価格で利用可能な hosted model, Qwen3.6-27B はローカルLLM でありながら、比較対象がベンチマークの比較対象が Claude Opus 4.5/4.6 になっており、これらの Frontier モデルに匹敵する、より安価だったりローカルで動かせたりするモデルが選択肢に入るようになってきています。

コストとベンチマーク等の比較:

https://openrouter.ai/compare/qwen/qwen3.6-27b/moonshotai/kimi-k2.6/anthropic/claude-opus-4.7

個人的にローカルLLMはコーディングエージェントに重要なロングコンテキストで動かそうと思うと、Unified Memory 64GB の Mac でも実用はかなり厳しかったのと、これ立ち上げちゃうと他のアプリケーション使えないよねとか、エージェントってもう並列で動かすものなので直列はいけても2並列とかになると絶対無理だよねとかがあるので、できるとしても相当先かなと思っていますが、それでもホスティングされたモデルの選択肢は他を積極的に選べるようになりました。

価格ベースで比較すると下記の通りで 1/5〜1/20 程度の費用で利用可能です。

モデル 入力 $/M tokens 出力 $/M tokens
Claude Opus 4.7 $5.00 $25.00
GPT-5.5 $5.00 $30.00
GPT-5.4 $2.50 $15.00
Kimi K2.6 $0.95 $4.00
Qwen3.6 27B $0.248 $1.485

というわけで、ローカルでもギリギリ動かせるくらいのモデルを Hosting している Provider から利用することでコストを抑えながら使いたいよね、という機運が高まっています

OpenCode Go というダメ押し

従量課金のコストが 1/10 になっても、冒頭で書いた通り使い潰すとサブスクリプションは普通に10倍とか消化できるので、単に Open Model を使うだけだと割ととんとん、なんならサブスクのが安い説もあります

が、そこで紹介したいのが OpenCode Go です。

https://opencode.ai/ja/go

Goは、世界中のプログラマーにエージェント型コーディングをもたらします。最も高性能なオープンソースモデルへの十分な制限と安定したアクセスを提供し、コストや可用性を気にすることなく強力なエージェントで構築できます。

そう、つまり Open Model のサブスクリプションです。OpenCode が提供してます。

初月は$5、次月以降は$10で利用でき、制限は下記の通り:

  • 5h: $12
  • weekly: $30
  • monthly: $60

かなりガッツリ利用できます。

先ほど紹介した Kimi K2.6 を含む Frontier モデルと競えるレベルのモデルを複数提供しており、選択して利用可能です。

わかりやすいように OpenCode Go に記載されている単価から、それぞれの単価とそのモデルで利用できるレートリミットに対するトークン数を ChatGPT にまとめてもらった表が下記です[1]

モデル 単価 $/M tokens 入力 / 出力 / Cache read / Cache write Go平均 tokens/req 5時間 $12 換算 週間 $30 換算 月間 $60 換算
GLM-5.1 1.40 / 4.40 / 0.26 / - 52,850 46.5M 113.6M 227.3M
GLM-5 1.00 / 3.20 / 0.20 / - 52,850 60.8M 152.2M 303.9M
Kimi K2.5 0.60 / 3.00 / 0.10 / - 56,070 103.7M 259.6M 518.6M
Kimi K2.6 0.95 / 4.00 / 0.16 / - 56,070 64.5M 161.5M 322.4M
MiMo-V2-Pro 1.00 / 3.00 / 0.20 / 0.00 ※≤256K 41,600 53.7M 134.2M 268.3M
MiMo-V2-Omni 0.40 / 2.00 / 0.08 / - 61,140 131.5M 333.2M 666.4M
MiMo-V2.5-Pro 1.00 / 3.00 / 0.20目安 / - 41,600 53.7M 134.2M 268.3M
MiMo-V2.5 0.40 / 2.00 / 0.08目安 / - 61,140 131.5M 333.2M 666.4M
MiniMax M2.7 0.30 / 1.20 / 0.06 / 0.375 55,425 188.4M 471.1M 942.2M
MiniMax M2.5 0.30 / 1.20 / 0.06 / 0.375 55,425 349.2M 881.3M 1,762.5M
Qwen3.6 Plus 0.50 / 3.00 / 0.05 / 0.625 57,690 190.4M 473.1M 940.3M
Qwen3.5 Plus 0.20 / 1.20 / 0.02 / 0.25 47,550 485.0M 1,198.3M 2,401.3M
DeepSeek V4 Pro 0.435 / 0.87 / 0.003625 / - ※割引中 83,040 286.5M 710.0M 1,424.1M
DeepSeek V4 Flash 0.14 / 0.28 / 0.0028 / - 69,070 2,186.1M 5,460.0M 10,923.4M

この中だと Kimi はやや割高なので DeepSeek V4 Pro を仮に使うと仮定すると、月間 1,400M tokens 以上使えることになるので、$10 のプランながら相当利用量を気にせず賄える計算です。

参考までに、冒頭にも書いた Claude Code での私の 2026年4月($100 プラン、従量課金ベースなら$1000超)の使用量が 1523M トークンだったので、そこそこ使い倒した $100 Plan とちょうど同じくらいは使えそうです。

モデルのロックインがなくなり、Agent CLI もロックインが消える

なぜみんな Claude Code、次点で Codex を使っていたのか?はモデルが OpenAI や Anthropic 製である必要性が強かったことからサブスクリプションで利用するためにセット売りになっていたからです。

モデルがロックインから解放されるということは、Agent CLI のロックインからも解き放たれるということで、むしろクロスプロバイダな認証やモデル切り替えを前提に考えると Closed Model Provider を軸に置く Agent CLI より、別の CLI のほうが有利になってくる面もありそうです。

pi-coding-agent という選択肢

OpenCode Go を使うわけなので OpenCode を使うでも良いのですが、個人的に pi-coding-agent をかなり気に入っていておすすめです!

https://pi.dev/

pi はかなりシンプルに設計された Agent CLI であり、最低限のビルドインツールと AGENTS.md, skills のみのミニマムな構成です

No MCP. Build CLI tools with READMEs (see Skills), or build an extension that adds MCP support.
No sub-agents. There's many ways to do this. Spawn pi instances via tmux, or build your own with extensions, or install a package that does it your way.
No permission popups. Run in a container, or build your own confirmation flow with extensions inline with your environment and security requirements.
No plan mode. Write plans to files, or build it with extensions, or install a package.

参考: https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md#philosophy

Agent CLI として出来が良いことに加えてコア部分はミニマムに、必要な機能は extensions で拡張(CLI Flag から足せるので自由度高い)な思想がかなり良いなと思っていて

  • プロンプト周りの仕組みは skill が汎用的なのでだいたい skill で良い
  • Claude Code でもコマンドは skill に統合されている
  • subagent も要は agent 呼び出し時に専用のプロンプトを渡す仕組みですが、別に qa-engineer subagent を作らずとも /skill:quality-assure <instruction> で同じこと達成できますし、概念が増えない分システムプロンプトも減るし、Agent にとってもわかりやすいんじゃないかなと

競合として CLI だけとしてみても Claude Code が一番進んでいてよくね?というのは一定あるような気がしつつも

  • Claude Code で Anthropic 以外のモデルを変換して動かすの、API 互換性の問題で壊れがちだったり
  • 体感だと Claude Code、Anthropic 系モデルの Long Context、複雑な指示追従能力に依存しすぎていて他モデル繋ぐとあまり良いパフォーマンス出ないなと感じていて概念やコアの指示が少ない pi のほうが期待通り動いてくれる感覚があります

辺りがあるので Open Model で動かすオプションとして pi はかなり良いと感じてます

pi-coding-agent とサブスクリプション

pi は、主要な provider やサブスクリプション認証をサポートしています

  • Chat GPT Go/Plus/Pro
  • Claude Pro/Max
    • ※ サードパーティハーネスでの利用が規約で締め出されているため pi も例外ではなく使う場合は extra usage 前提
  • Copilot
  • OpenCode Go

冒頭でも紹介した OpenCode Go が $10 で相当使えるのでこれを中心に置きつつ、Codex は gpt-5.5, 5.4 等の Frontier モデルを pi からも規約の範囲で使えるので OpenCode Go ($10) + Codex ($20 or $100) のセットを契約しておくとレートリミット当たりづらく、かつバランスよく Frontier モデルも利用できるかなと思っています。

  • $20 Plan ユーザー:
    • レートリミットがぜんぜん違うので多少モデル性能落ちても OpenCode Go のみ運用もおすすめ
  • $100 Plan ユーザー:
    • OpenCode Go + $20 プラン運用
      • メインは Go のモデル使いつつレビューや設計を Codex に
      • レートリミットはさほど変わらない中で費用は $30 に
    • OpenCode Go + $100 プラン運用
      • gpt-5.4/5.5 をメインで使いつつも、軽めの作業は Go に流すとかでもレートリミット伸ばしやすい
      • Claude からの乗り換えなら同じ $100 プランでも Codex は税込みで $100 なので、実質同額だったりする

という感じで、割と幅広い層が考える余地あるかなと思います

extensions による拡張

pi はミニマムなコア部分を自由度高く拡張できるようになっており、こういう機能ほしいなとなったら PR を出すのではなく自前でしゅっと作っちゃえば良い形になってます

(本題とは関係ないですが、OSS のAI Slop 問題が叫ばれる中、メンテナへの負担もかかりづらいし利用側も Agent に頼めばすぐ拡張できるので良い仕組みですね)

https://zenn.dev/yusukebe/articles/3fd5bc6ea341c9

例として私は OpenCode Go + Codex 前提で使っているのでレートリミット時のフォールバックができると良いなと思っており、実際にそういう機能を拡張して使ってます。

$ pi --help
pi - AI coding assistant with read, bash, edit, write tools

# ...

Options:
  --provider <name>              Provider name (default: google)
  # ...
  --version, -v                  Show version number

Extensions can register additional flags (e.g., --plan from plan-mode extension).
Extension CLI Flags:
  --fallback-models <value>   Comma-separated fallback models as provider/model[:thinking], tried in order after provider failures

末尾の --fallback-models <value> このフラグは私の環境にしかなく、interactive に起動した際も専用のスラッシュコマンドが利用可能になってます。

.pi/agent/AGENTS.md

ということで、参考に最近使っている pi 用の AGENTS.md です。

pi 自体がかなりミニマムにできているので必要なパーツは CLI ベースで組み込む必要があり、その辺りのガイドラインも書いています

.pi/agent/AGENTS.md
# AGENTS.md (User Scoped)

## Communication and Language

- User communication: Japanese (日本語)
- Documentation and code comments: Preserve the existing language; do not translate them.

## Skills Guidelines

- AGENTS.md assumes progressive disclosure: it contains only the minimum information needed, while task-specific knowledge and guidelines live elsewhere.
- Select and load the necessary skills as needed for each task.

## Coding Style

- Maintain separation of concerns.
- Separate state from logic.
- Prioritize readability and maintainability.
- Follow t-wada-style TDD: implement while continuously verifying behavior with type checking and tests.
- Define contract layers (APIs/types) rigorously using ADTs, and keep implementation layers regenerable.
- Rules that can be checked statically should be expressed with the environment’s linter or ast-grep, not in prompts.

## Agent Delegation

- To keep context clean and preserve accuracy, speed, and cost efficiency, proactively delegate yak shaving and work outside the current focus to an appropriate model agent.
  - Good example: When asked to implement something, delegate design, review, or behavior verification to other agents.
  - Bad example: When encountering a deep-rooted error, trying to solve it yourself without launching a debugging agent.
- How to call an agent: `pi --model <provider/model:effort> --fallback-models <provider/model:effort>,... -p '<instructions>'` (left-priority fallback)
  - When a delegated task needs a specific skill, specify it in the prompt: `pi ... -p '/skill:<skill-name> <instructions>'`
- Model selection:
  - Difficulty: high
    - Option: `--model 'openai-codex/gpt-5.5:high' --fallback-models 'opencode-go/kimi-k2.6:high'`
    - Use for highly abstract problems such as design, difficult deep troubleshooting, or code reviews that require careful reasoning and high confidence.
  - Difficulty: medium
    - Option: `--model 'opencode-go/deepseek-v4-pro:high' --fallback-models 'openai-codex/gpt-5.4:low,openai-codex/gpt-5.3-codex-spark:low'`
    - Use for low-difficulty or low-abstraction tasks, such as coding from an existing design.
  - Difficulty: low
    - Option: `--model 'opencode-go/deepseek-v4-flash:off' --fallback-models 'openai-codex/gpt-5.4-mini:off'`
    - Generally not recommended. Use for summarizing or extracting data that is too voluminous to handle in a main session with high/medium models.
- When calling an agent, clearly communicate the background, goal, expected output, and what not to do.

## Web Fetch

- Use Jina AI from Bash to fetch article/page content with `r.jina.ai`:
  \`\`\`bash
  curl -H "Authorization: Bearer ${JINA_API_KEY}" \
  -fsSL 'https://r.jina.ai/<target-url>'
  \`\`\`

## Research external/web

- For direct web search, use Jina AI from Bash with `s.jina.ai`:
  \`\`\`bash
  curl -H "X-Respond-With: no-content" \
    -H "Authorization: Bearer ${JINA_API_KEY}" \
    -fsSL 'https://s.jina.ai/<search-query>'
  \`\`\`
- For broader/deeper external web research, delegate research to Codex using this pattern:
  \`\`\`bash
  codex -a never exec \
    -s read-only \
    -m gpt-5.4-mini \
    '<research instructions>' \
    -o '/tmp/<topic>-report.txt' \
    < /dev/null \
    >/dev/null 2>&1 && cat '/tmp/<topic>-report.txt'
  \`\`\`

## Long-running Tasks and Development Servers

- Do not start long-running processes such as development servers, watchers, or daemons directly from the CLI; use **`pueue`** instead.
- Start them with `pueue add -- <command>`, and use `pueue status` / `pueue log` / `pueue follow` / `pueue kill` / `pueue remove` to check status or manage them.
- For parallel agent delegation, queue tasks via pueue:
  \`\`\`bash
  pueue add -i --print-task-id -- "pi ... -p '<instruction>' < /dev/null"
  \`\`\`
  \`\`\`bash
  pueue status
  pueue wait <task-id> # blocks when there is no other parallel work
  pueue log <task-id> # check results/status
  \`\`\`
  • オーケストレーションは積極的にしたほうが良いと思っていますがサブエージェントが組み込まれていない(pi 的にも、サブエージェント?いらんでしょ pi 呼べばいいよってスタンス)ので、pi 呼ぼうね、skill 必要ならつけようねの指示です
    • high/medium/low でレベルごとに指定するモデル/effortを書いておいています
    • opencode-go の中だと kimi-k2.6 がコスト高めだけどスコアが良いモデルなので gpt-5.5 のフォールバックとして指定
    • medium task は qwen3.6-plus / deepseek-v4-pro がコスト感ほぼ同じくらいだけど、体感 deepseek-v4-proのほうが動きが良かったので deepseek-v4-pro メインにしつつ、fallback として gpt-5.4,gpt-5.3-codex-spark を指定. gpt-5.5 は 5.4 と比較して倍の価格設定なのであえて 5.4. mini でも良いかも。
    • gpt-5.3-codex-spark はレートリミットが別枠になっているモデルなので最終フォールバックに一応入れています.
  • pi では組み込みの WebFetch/WebSearch ツールがないですが、コーディングエージェントとして動かすには個人的に欲しいので
    • WebFetch: Jina AI を利用 (https://jina.ai/)
      • curl -fsSL 'https://r.jina.ai/https://example.com' で markdown でコンテンツ振らせてくれるスグレモノ
      • API_KEY なしでも動かせますが 20 RPM の制限あるので無料のAPI_KEY 指して使っています
    • WebSearch: 同じく Jina AI + Codex に逃がす
      • Jina AI では検索用のエンドポイントもあるので直接調べる場合はそちら.
      • あるいはリサーチ自体を Codex に流せるようにしています
  • background task 管理のために pueue を使ってねとしています

やや多めなので skill に逃がすのもありかなと思いつつ、pi 自体の機能が少なく本体のシステムプロンプトも少ないし、任意のエージェントの土台としてこの辺りまでは欲しいかなと思って AGENTS.md に書いています

Sandbox は自前で用意する

No permission popups. Run in a container, or build your own confirmation flow with extensions inline with your environment and security requirements.

とあるように pi-coding-agent は組み込みの承認機能は存在しません。

Sandbox 等必要であらば自前で用意する必要があります。私は最低限ブロックはしておきたいよねってことで、srt (Anthropic Sandbox Runtime, Claude Code で使われている sandbox 部分のみパッケージ化されたもの) が macOS/Linux 跨いで動く(bubblewrap, sandbox-exec を抽象化) sandbox として便利なので私は srt を使っています

.srt-settings.json
{
  "network": {
    "allowedDomains": [
      "github.com",
      "*.github.com",
      "githubusercontent.com",
      "*.githubusercontent.com",
      "npmjs.com",
      "*.npmjs.com",
      "...割愛..."
      "openai.com",
      "*.openai.com",
      "anthropic.com",
      "*.anthropic.com",
      "opencode.ai",
      "*.opencode.ai",
      "*.jina.ai"
    ],
    "deniedDomains": [],
    "allowUnixSockets": ["/var/run/docker.sock"],
    "allowAllUnixSockets": true,
    "allowLocalBinding": false
  },
  "filesystem": {
    "denyRead": ["~/.ssh", "~/.local/share/chezmoi/shell/env-secrets.sh"],
    "allowRead": [],
    "allowWrite": [".", "/tmp", "~/.local/share/chezmoi"],
    "denyWrite": []
  },
  "ignoreViolations": {
    "*": ["/usr/bin", "/System"],
    "git push": ["/usr/bin/nc"],
    "npm": ["/private/tmp"]
  },
  "enableWeakerNestedSandbox": false,
  "enableWeakerNetworkIsolation": false
}
  • allowedDomains は不便にならない程度にはちゃんとアクセスできてほしいので、Claude Code on the web のデフォルトで採用されているドメインをそのまま指定しつつ、不足分を追加して運用しています
  • srt で権限は Read は基本OK、Write は基本NGにデフォがなっていますので、読んでほしくないファイル(secret が置かれているファイルとか)だけ denyRead に置き、allowWrite には current directory + 触ることがあるパスだけ指定します.

設定を ~/.srt-settings.json においておけば自動で読まれるので

srt -c pi

で sandbox 制約を効かせながら pi を動かせます

Agent SDK 相当もある

オレオレハーネスを作ったり、Agent 組み込み型のソフトウェアを作るために Codex や Claude Code はそれぞれ Agent SDK を提供していましたが、pi にも相当の @mariozechner/pi-agent-core があります

https://github.com/badlogic/pi-mono/tree/main/packages/agent

こんな感じで書ける
import { Agent } from "@mariozechner/pi-agent-core";
import { getModel } from "@mariozechner/pi-ai";

const agent = new Agent({
  initialState: {
    systemPrompt: "You are a helpful assistant.",
    model: getModel("anthropic", "claude-sonnet-4-20250514"),
  },
});

agent.subscribe((event) => {
  if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
    // Stream just the new text chunk
    process.stdout.write(event.assistantMessageEvent.delta);
  }
});

await agent.prompt("Hello!");
  • Provider としてサブスクを前提としたオレオレ Agent システムを構築できます
  • 実際これを使った自前の仕組み作ったりもしていますが、AgentLoop がちゃんと実装されており安定して動きますし、API も使いやすい

まとめ

OpenCode Go + pi-coding-agent を軸にした Codex / Claude Code 以外の Agent CLI のオプションを紹介しました!

今の流れを見ていると

  • Frontier モデルの費用感は厳しくなっていく
  • Open Model の性能も伸びていき、より安価なモデルで十分動かせるようになっていく

ので、徐々にこういった Open Model を前提としたモデルの選択や CLI (ハーネス)の人気が高まっていくのではないかなと思ってます

コスパ考えたら2026年5月現在でもかなりおすすめできる選択肢になっていると思いますし、Open Model の価格辺りのモデル性能は下る方向に進むと思うので、Open Model や Closed Model Vendor 以外のハーネスへの乗り換えを検討しても良さそうです。特に pi はおすすめです!!

脚注
  1. Input/Cache/Output の割合は当然可変ですが、OpenCode のドキュメントにある推定値を利用して計算しています ↩︎

Discussion

toenobutoenobu

少しpi-coding-agent の補足

No MCP. No sub-agents. はそのとおりですが、packages に、mcp と subagent が用意されています。
https://pi.dev/packages

自分は、mcp と subagent をインストールして利用してます。linear とか playwright の MCP など。
subagent の claude-code とかも 3rd party であるので、/subagent claude-code implement this todo みたいな 感じで使ってます。

標準では用意されていないが、packages で用意されています。自分も pi-coding-agent は好きなので、興味のある方は試してほしいです。
claude の場合、subscription モデルは利用できませんが、claude + pi-agent の組み合わせも可能です。