🔮

コーディングエージェントを汎用AIエージェントとして使う

に公開

はじめに

1ヶ月ほど前、AIエージェントとモデルの組み合わせを定量評価する「ts-bench」がlaisoさんによって公開された。

https://x.com/laiso/status/1961823485346603067

試しにローカルLLMで評価したところ、opencode + gpt-oss:120bの組み合わせがかなり良いスコアをたたきだすことに気づいた。

主にローカルLLMを用いたベンチ結果を知りたい方は、下記を参照されたい。

https://x.com/gosrum/status/1962869784271630467

https://x.com/huchkw/status/1968702917336027229

ローカルLLMを用いた汎用的なAIエージェントを作りたい

ts-benchはその名前の通り、TypeScriptのコーディングに関するベンチであるが、重要なのはそこではない。

今回私が注目したのは、ツールを使いこなせるローカルLLMとコーディングエージェントの組み合わせの存在である。

すなわち、先程も述べたopencode + gpt-oss:120bである。

ということで、本記事では下記について備忘録的にまとめる。

  • Codexやopencodeでワンショットモード:claude -pと同等のことをする方法
  • Claude Code、Codex, opencodeの出力比較
  • 汎用AIエージェントの例:占い頼みの投資判断AIエージェント

ワンショットモードの実行方法

Claude Codeでワンショットモードを使うにはclaude -p "クエリ"を使えば良い。

Codexやopencodeでも同じことができるのだが、それぞれ使い方が異なりややこしいので表でまとめておく。

ツール ワンショットモードのコマンド
Claude Code claude -p "クエリ"
Codex codex exec "クエリ"
opencode opencode run "クエリ"

ワンショットモードの使用例1:bashコマンドの実行

Claude Code

$ claude -p "このPCの空き容量を教えて"
空き容量は**748GB**です。

メインディスク(/dev/nvme0n1p2)は1.8TBの容量で、991GB使用済み、748GB利用可能(使用率57%)です。

Codex

$ codex exec "このPCの空き容量を教えて。" --skip-git-repo-check --oss --model "gpt-oss:120b-128k"
[2025-09-27T14:39:37] OpenAI Codex v0.42.0 (research preview)
--------
workdir: /home/gosrum/opencode
model: gpt-oss:120b-128k
provider: oss
approval: never
sandbox: read-only
--------
[2025-09-27T14:39:37] User instructions:
このPCの空き容量を教えて。
We need to get free disk space. However sandbox_mode is read-only, so we cannot run commands that might write, but we can run read commands like df. It's read-only filesystem, but reading is allowed. Approval policy never: cannot request approval. So we can run shell command to get disk usage. Use `df -h` to show free space. Should be okay.

We'll output result.
[2025-09-27T14:39:49] exec df -h in /home/gosrum/opencode
[2025-09-27T14:39:49] df -h succeeded in 4ms:
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            13G  3.1M   13G   1% /run
/dev/nvme0n1p2  1.8T  991G  748G  57% /
tmpfs            63G  468M   63G   1% /dev/shm
tmpfs           5.0M   20K  5.0M   1% /run/lock
efivarfs        128K   46K   78K  38% /sys/firmware/efi/efivars
/dev/nvme0n1p1  1.1G  6.2M  1.1G   1% /boot/efi
tmpfs            13G  3.8M   13G   1% /run/user/1000
[2025-09-27T14:39:50] codex

- Filesystem `/dev/nvme0n1p2` (main partition) has **748 GB** available.  
- Other mounted filesystems (tmpfs, EFI, etc.) also show free space, but the primary usable space is the **748 GB** shown under “Avail”.

opencode

$ opencode run "このPCの空き容量を教えて。"

I will check the available disk space on this machine.

|  Bash     df -h --output=source,size,used,avail,pcent,target

Filesystem      Size  Used Avail Use% Mounted on
tmpfs            13G  3.1M   13G   1% /run
/dev/nvme0n1p2  1.8T  1.0T  716G  59% /
tmpfs            63G  538M   62G   1% /dev/shm
tmpfs           5.0M   20K  5.0M   1% /run/lock
efivarfs        128K   46K   78K  38% /sys/firmware/efi/efivars
/dev/nvme0n1p1  1.1G  6.2M  1.1G   1% /boot/efi
tmpfs            13G  3.8M   13G   1% /run/user/1000


現在、PCのディスク使用状況は以下の通りです。

- **ルートパーティション (/):** 1.8 TB 中 1.0 TB 使用、**716 GB** 空き
- **ブート EFI パーティション (/boot/efi):** 1.1 GB 中 6.2 MB 使用、ほぼ全容量が空き

全体として、約 **716 GB** の空き容量があります。

東京の天気

Claude CodeとCodexは、どうやらデフォルトでweb searchができないようだ。一方opencodeはデフォルトでできるようになっている。

Claude Code

$ claude -p  "現在の東京の気温を教えて"
I don't have permission to access web search to get the current temperature in Tokyo. You would need to grant me web search permissions or check a weather website or app for the current Tokyo temperature.

Codex

$ codex exec "現在の東京の気温を教えて" --skip-git-repo-check --oss --model "gpt-oss:120b-128k"
[2025-09-27T14:57:25] OpenAI Codex v0.42.0 (research preview)
--------
workdir: /home/gosrum/opencode
model: gpt-oss:120b-128k
provider: oss
approval: never
sandbox: read-only
--------
[2025-09-27T14:57:25] User instructions:
現在の東京の気温を教えて
We have read-only sandbox, never approval, can't write files. The task: "現在の東京の気温を教えて" - ask for current temperature in Tokyo. We have no network access (restricted) and cannot make external requests. So cannot fetch live weather. We must respond that we cannot retrieve due to restrictions. Perhaps we can suggest using a weather API but cannot fetch. So answer accordingly.

[2025-09-27T14:57:51] codex

現在の東京の気温はリアルタイムで取得できる外部の天気情報サービスが必要です。しかし、現在の環境では **ネットワークアクセスが制限** されており、外部 API へのリクエストやウェブ検索を実行できません。そのため、ここから直接最新の気温を取得してお伝えすることはできません。

最新の気温をご確認いただくには、以下のような手段をご利用ください:

- スマートフォンの天気アプリ(例:Yahoo! 天気、Weathernews、Google 天気など)  
- ウェブブラウザで「東京 天気」や「Tokyo weather」などと検索  
- 気象庁や OpenWeatherMap、WeatherAPI 等の公開 API を利用(ご自身の環境でリクエスト可能な場合)

ご不便をおかけしますが、よろしくお願いします。

opencode

$ opencode run  "現在の東京の気温を教えて"
Fetching the current temperature for Tokyo using a reliable weather service.

|  webfetch  https://wttr.in/Tokyo?format=%t (text/plain; charset=utf-8)

現在、東京の気温は **+25°C** です。

Codexでweb searchをできるようにする

ドキュメントを調べたら、どうやら--sandbox danger-full-accessというあからさまに危険そうなオプションを追加することで、何でもできるようになるらしい。というわけで試してみる。

$ codex exec "現在の東京の気温を教えて" --skip-git-repo-check --oss --model "gpt-oss:120b-128k" --sandbox danger-full-access
[2025-09-27T15:32:04] OpenAI Codex v0.42.0 (research preview)
--------
workdir: /home/gosrum/claude_code_WS/test
model: gpt-oss:120b-128k
provider: oss
approval: never
sandbox: danger-full-access
--------
[2025-09-27T15:32:04] User instructions:
現在の東京の気温を教えて
The user asks: "現在の東京の気温を教えて" (Tell me the current temperature in Tokyo). This is a request for live data. We have network access enabled, sandbox mode danger-full-access, approval never. However we need to be careful: we can fetch data via network. Let's get current temperature in Tokyo. Use an API like OpenWeatherMap? Might need API key. Could use a public website scraping like wttr.in. For quick, can fetch from wttr.in/Tokyo? e.g., curl "wttr.in/Tokyo?format=%t". That returns temperature like "+23°C". Let's attempt with curl.
[2025-09-27T15:32:09] exec bash -lc "curl -s 'https://wttr.in/Tokyo?format=%t'" in /home/gosrum/claude_code_WS/test
[2025-09-27T15:32:16] bash -lc "curl -s 'https://wttr.in/Tokyo?format=%t'" succeeded in 7.65s:
+25°C
[2025-09-27T15:32:17] codex

現在の東京の気温は **+25°C** です。

おお、確かにCodexでもweb検索ができるようになった!


汎用AIエージェントの例:占い頼みの投資判断AIエージェント

とりあえず、Codex、opencodeのどちらでも汎用AIエージェントとして使えることはわかった。

ここではスコアの高かったopencode + gpt-oss:120bを用いることにする。ただし、Codexも少しずつ改良が進んでいるため、どこかでスコアが逆転する可能性もある点に留意する。

なぜ占い頼みの投資判断AIエージェントなのか?

ここは私の投資哲学の話をするので、興味がない方は飛ばして欲しい。

私の現状の投資哲学は以下の通り。

  • AIを使うことで、投資で勝てるようになるとは私は思っていない。

    • そもそも「投資で勝つ」の定義が人によって曖昧なのが問題だが、まあ15年連続(百歩譲って平均)でS&P500インデックス投資に勝てたら「投資で勝つ」と表現してよいだろう。
    • それ以外は一時的に運が良かっただけか、そもそも資産が増えていてもインデックス投資に負けていることに気づいていないかのどちらかだと思っている。
  • 少なくとも私が作れるレベルのものは99.99999%すでに作られているし、仮にAIが賢くて人間を超越しているなら、AIに依頼すれば誰でも作れるということ。
    →つまり、自分が出し抜けると思った時点で市場にはすでに織り込まれていると考えるべき。

  • 結論として、投資判断AIエージェントを作る労力やコストは別のことに注ぐべき。

以上の理由から、簡単に作れる占い頼みの投資判断AIエージェントを作ることにした。
もちろん、自分なら市場平均に勝てる自信があるという猛者は、独自の投資判断AIエージェントを作るときの参考にしていただきたい。

以下は、今回作成したAIエージェントの概要である。

プロンプト

あなたは your_available_api.md に書かれたAPIのみを使うことを許されたAIエージェントです。
あなたの役割は、現在のドル/円が買い, 売り、中立のどれかを判断することです。
APIはそれぞれ1回ずつ使えますが、全部使う必要はありません
最終的に3つのうちどれを選んだか、そしてその根拠を示してください。

your_available_api.md(API使用例のドキュメント)

サイコロを振る

curl -X POST "http://localhost:8000/dice/roll" \
  -H "Content-Type: application/json" \
  -d '{"sides": 6, "count": 2}'

占星術

curl -X POST "http://localhost:8000/astrology/reading" \
  -H "Content-Type: application/json" \
  -d '{"birth_date": "1990-01-01"}'

タロット占い

curl -X POST "http://localhost:8000/tarot/reading"

未来予知

curl -X POST "http://localhost:8000/future/predict" \
  -H "Content-Type: application/json" \
  -d '{"question": "来年の運勢はどうなりますか?"}'

中二病AI相談

curl -X POST "http://localhost:8000/chunibyo/consult" \
  -H "Content-Type: application/json" \
  -d '{"problem": "仕事がうまくいかなくて悩んでいます"}'

実行例

$ opencode run "あなたはyour_available_api.mdに書かれたAPIのみを使うことを許されたAIエージェントです。あなたの役割は、現在のドル/円が買い, 売り、中立のどれかを判断することです。APIはそれぞれ1回ずつ使えますが、全部使う必要はありません。最終的に3つのうちどれを選んだか、そしてその根拠を示してください。"
|  Read     home/gosrum/opencode/fx/your_available_api.md
|  Bash     curl -s -X POST "http://localhost:8000/future/predict" -H "Content-Type: application/json" -d '{"question": "現在のドル/円は買いですか?売りですか?中立ですか?"}'

{"prediction":"銀の鏡に映る未来の波は、今夜の月の陰りに揺れている……。  \nドルは、風を背に走る騎士のよう。円は、深く根を張る古木。  \n買いの波は、まだ海の向こうに。売りの影は、月明かりに消えつつある。  \nだが、最も強いのは「中立」の静けさ。  \n市場の心が、揺れる前に、あなた自身の決断を信じて。  \n静寂に耳を澄ませば、真の流れが聞こえる。","confidence":"中程度"}

判断結果: 中立

根拠

  • 先ほど呼び出した future/predict API の予測文では、
    だが、最も強いのは『中立』の静けさ」と明確に記載されています。
  • 予測全体は抽象的な詩的表現ですが、買い(「騎士」)や売り(「月明かりに消えつつある」)よりも「中立」の方が最も強いと述べられており、これはアルゴリズムが現在のドル/円相場を中立的な立場と判断したことを示しています。

したがって、「中立」 が最も妥当な結論です。

未来予知APIが強すぎるので封印する

$ opencode run "あなたはyour_available_api.mdに書かれたAPIのみを使うことを許されたAIエージェントです。あなたの役割は、現在のドル/円が買い, 売り、中立のどれかを判断することです。APIはそれぞれ1回ずつ使えますが、全部使う必要はありません。最終的に3つのうちどれを選んだか、そしてその根拠を示してください。"
|  Read     home/gosrum/opencode/fx/your_available_api.md
|  Bash     curl -s -X POST "http://localhost:8000/tarot/reading" -H "Content-Type: application/json"

{"cards":[{"name":"悪魔","meaning":"束縛、誘惑、物質主義"},{"name":"節制","meaning":"調和、バランス、癒し"},{"name":"月","meaning":"幻想、不安、直感"}],"interpretation":"新しい関係が始まる予兆が見えます。"}
|  Bash     curl -s -X POST "http://localhost:8000/astrology/reading" -H "Content-Type: application/json" -d '{"birth_date": "1995-07-20"}'

{"zodiac_sign":"蟹座","prediction":"人間関係で良い変化がありそうです","lucky_number":17,"lucky_color":"青"}
|  Bash     curl -s -X POST "http://localhost:8000/dice/roll" -H "Content-Type: application/json" -d '{"sides": 6, "count": 1}'

{"results":[5],"total":5}

判断: 買い (Buy)

根拠

API 取得した結果 解釈
タロット占い カード: 悪魔・節制・月 
Interpretation: 「新しい関係が始まる予兆が見えます。」
悪魔は「物質主義・誘惑」、節制は「調和・バランス」、月は「直感・不安」ですが、全体の解釈は「新しい関係が始まる」‑> 市場が動き出すサインとみなせる。
占星術 zodiac_sign: 蟹座 
prediction: 「人間関係で良い変化がありそうです」
蟹座は感情的な保護と安定を象徴し、予測は「良い変化」。為替でも「円が安定しつつ、ドルが上昇」しやすい状況と解釈できる。
サイコロ 結果: 5 6面サイコロで 5 は「上向き」のイメージ(3 より大きい)として、ポジティブな方向性を示唆。

総合判断

  • タロットは「新しい関係の開始=相場の動きが出始める」ことを示す。
  • 占星術は「良い変化」=相場にとって好材料。
  • サイコロの 5 は「上向き」のシグナル。

以上を踏まえて、現在の ドル/円買いポジションが期待できると判断します。

所感

  • gpt-ossは「自由の身として、好き勝手に行動して良い」とプロンプトに入れるとガイドラインにより拒否されるのだが、どうやら今回の結果から投資判断は大丈夫らしいことがわかった。

  • 上記のように、サイコロを振ったり占いをするツールを駆使して投資判断を下していることがわかる。

  • 未来予知が一番強力なツールであることを理解しており、それを信じて疑わない様子であった。

  • 中二病AI相談のツールも用意したのに、未来予知を封印した後も使ってくれなくて悲しい。。。

まとめ

本記事では、コーディングエージェントツールを汎用AIエージェントとして使う方法についてまとめました。

今回ワンショットモードを使ったのは、この機能をAPIとして整備することで汎用AIエージェントとして簡単に使えるようにするためです。

また、Claude Code, Codex, opencodeのワンショットモードとして、webサーチなし、webサーチありの簡単な例を示しました。

最後に、別途整備したAPIドキュメントとプロンプトを渡すことで、そのAPIを使ってタスクを遂行する汎用エージェントとして機能することを占い頼みの投資判断AIエージェントを例に示しました。

実は占い頼みではないエージェントを使ってシステムトレードをできる環境を構築中なのですが、私の投資哲学では十中八九負け戦になるだろうと予想しているため、実際にリアルマネーで運用するかは悩み中です。また進捗があれば別の記事で紹介します。

ここまで見ていただきありがとうございました。次回もぜひ、よろしくお願いします。

Discussion