ローカルLLMで“Codexごっこ” — LM Studio × gpt-oss × Codex CLI 実録

LM Studio × gpt-oss × Codex CLI 実録 HowTo
LM Studio × gpt-oss × Codex CLI 実録

CLIコーディングの流行と「ローカルでもできるの?」問題

ここ最近、「ターミナルから直接AIにコードを書かせる」というスタイルがちょっとしたブームになっています。
Charmbracelet が出している Crush(旧OpenCode)や、VS Code 連携で人気の Cursor、そしてもちろん GitHub Copilot。
エディタやブラウザを介さず、CLIでAIに「ファイルを生成・修正」させる体験は、エンジニア心をくすぐります。

一方で、こうしたツールの多くは クラウドのLLM依存
「ChatGPT API」や「Anthropic Claude」など外部サービスが必須で、オフラインや閉じた環境では使えません。
でも思いませんか?

「これ、ローカルLLMでもできたら面白いんじゃない?」

GPUさえあれば Hugging Face や LM Studio でモデルを走らせられる時代です。
ならば「エディタに頼らず、ターミナルからAIに指示を飛ばし、本当にファイルを書き換えさせる」ことができるのか?

今回、その実験として LM Studio 上の gpt-oss モデル × Codex CLI を組み合わせて試してみました。
Crush も触ってはみましたが、こちらは残念ながら安定性に欠けたため、本命は「Codexごっこ」。

というわけで、本記事は「ローカル環境で Codex を再現してみた記録」です。
花火は打ち上がったのか、パドルは動いたのか――結果をどうぞ。

Codexとは何者か

「Codex」という名前を聞いて「懐かしい」と感じる方もいるかもしれません。
これはもともと OpenAIが開発した「コード特化LLM」 で、2021年に発表されました。
GitHub Copilot の初期バージョンに組み込まれていたモデルとして有名で、当時は「自然言語でコメントするとコードが出てくる」体験が大きな話題になりました。

やがて OpenAI は Codex を GPT 系の統合ラインに吸収し、現在では単独のAPIとしては提供されていません。
しかし、「CLIからAIにコードを書かせる」「ローカルファイルを直接編集させる」というスタイルは残り、オープンソースの Codex CLI として受け継がれています。

この Codex CLI の特徴は、ChatGPTのようにテキストを返すだけではなく、実際にファイルを新規作成・編集・削除するところにあります。
つまり「AIが本当に手を動かす」感覚を味わえるのです。

今回はこの Codex CLI を活用し、クラウドAPIの代わりに ローカルの gpt-oss モデル を組み合わせました。
モデルのサービングには LM Studio を利用し、ターミナルから「Codexごっこ」をしてみよう、というのが本記事の趣旨です。

今回の構成

今回の実験は、クラウド依存を避けて すべてローカル完結で進めました。
使ったのは次の3つです。

1. LM Studio

ローカルで大規模言語モデルを簡単に動かせるフロントエンド。
GUIからモデルをダウンロード・起動でき、サーバーモードを有効にすると OpenAI互換API(http://localhost:1234/v1) を提供してくれます。
→ 実際のアプリからは「ChatGPT APIっぽい」インターフェースで叩けるわけです。

2. gpt-oss

OpenAI が公開しているオープンソースモデル。
今回は gpt-oss-20b を LM Studio 経由で動かしました。
規模としては十分大きいですが、クラウドモデル(GPT-4o や Claude など)と比べるとまだ重く、RTX3060 ではかなり動作が厳しい印象でした。

3. Codex CLI

ターミナルで動くコーディングアシスタント。
ユーザーが自然言語で指示すると、対象のディレクトリ内にファイルを新規作成・編集・削除します。
ChatGPTや私(アシスタント)のように「コード片をテキストで返す」だけでなく、リアルにファイルを触るのが最大の特徴です。


接続イメージ

[ Codex CLI ]
       ↓(OpenAI API互換)
[ LM Studio サーバー ] 
       ↓
[ gpt-oss モデル ]

Codex CLI にとっては「普通の OpenAI API」を呼んでいるだけ。
バックエンドがクラウドではなくローカルの gpt-oss に差し替わっている、という構図です。

試行錯誤:Crushは失敗

実は最初から Codex CLI を使ったわけではありません。
同じく Charmbracelet が公開している Crush(旧 OpenCode)も気になり、こちらを先に試しました。

Crush は「ターミナル上で AI と対話しながらコードを書かせる」ことを売りにした新しいツールです。
見た目も Charmbracelet らしい華やかなUIで、ちょうど Codex 的な CLI コーディング体験ができるのでは?と期待していました。

ところが実際にインストールして動かすと、以下のような問題が次々と発生:

  • 設定ファイルのエンコード不具合で 起動エラー
  • プロンプトを投げても 紫文字の制御コードが乱舞
  • LM Studio 側にリクエストが飛ばず、モデルがまったく応答しない

さらに GitHub の Issue を見ても、LM Studio / Ollama と組み合わせた利用は未成熟という声が多く、実用はまだ難しそうな印象でした。

CRUSH の起動画面
起動することはするが、LM Studio へリクエストが飛ばない

そのため本記事では Crush は早々に諦め、Codex CLI に切り替えることにしました。
結果的にはこちらの方がシンプルで、ローカル LLM とも素直に繋がりました。

Codex CLIでローカル gpt-oss を動かす

気を取り直して、今度は Codex CLI を導入。
こちらは比較的シンプルで、手順も少なく済みました。

インストール

npm i -g @openai/codex
codex --version   # 例: codex-cli 0.22.0

インストールが終わったらバージョン確認:

codex --version
# 例: codex-cli 0.22.0

これが表示されればOKです。

初回起動時の挙動

最初に Codex を立ち上げると、カレントディレクトリでのファイル操作に関する確認が入ります。

> 1. Allow Codex to work in this folder without asking for approval
  2. Require approval of edits and commands

普段使う作業ディレクトリなら 1番 を選んでおくと快適ですが、安全を優先するなら 2番 で逐一確認させる運用もアリです。

ファイル操作に関する確認

Codex起動直後の画面

なんか、GeminiとかClaudeとかと比べると地味な感じ。

Codex起動直後の画面

LM Studio との接続設定

Codex CLI は OpenAI API互換 のエンドポイントを参照します。
設定ファイル(%USERPROFILE%\.codex\config.toml)に以下を記述すれば、LM Studio で立てた gpt-oss に接続できます。

model = "openai/gpt-oss-20b"
model_provider = "lmstudio"

[model_providers.lmstudio]
name = "LM Studio"
base_url = "http://localhost:1234/v1"
# 認証不要なので env_key は省略可

手作業でも編集できますが、PowerShell なら以下を一発で書き込めます。

# Codex の設定ディレクトリへ移動
cd "$env:USERPROFILE\.codex"

# 設定ファイルを一発で書き込み
@"
model = "openai/gpt-oss-20b"
model_provider = "lmstudio"

[model_providers.lmstudio]
name = "LM Studio"
base_url = "http://localhost:1234/v1"
"@ | Out-File -Encoding utf8 "$HOME\.codex\config.toml"

これで %USERPROFILE%\.codex\config.toml に必要な設定が入ります。

これで Codex 側から「ChatGPT APIを呼ぶ」つもりでアクセスすると、
実際には ローカルで動いている gpt-oss が応答してくれる、というわけです。

接続テスト

試しに以下のように入力すると──

user
Say 'Hello from gpt-oss local via config'

Codex がきちんと応答しました。

codex
Hello from gpt-oss local via config
CodexからLM Studio への接続テスト

ここまで来れば接続成功。
準備は整ったので、いよいよ実際にコードを書かせてみます。

実験:Codexにコードを書かせてみる

ここからが本題。Codex CLI に実際のコードを書かせ、本当にファイルが生成されるのかを試しました。


6-1 花火JS(成功)

まずは派手さ重視で「花火アニメーション」をお願いしました。
プロンプトはシンプルに以下だけ:

codex "Create fireworks.html with a colorful fireworks animation using JavaScript and canvas."

すると数十行の HTML+JavaScript が生成され、fireworks.html がカレントディレクトリに出現。
ブラウザで開くと黒背景にカラフルな花火が打ち上がり、華やかに弾ける──
最初の試みとしては大成功でした。

ちなみに日本語で「花火のコードを書いて」と投げても通りました。
Codex CLI 側は入力をそのままモデルに流すので、gpt-oss が理解できる言語なら日本語でも問題ありません。

gpt-oss が作った花火のアニメーション

6-2 ブロック崩しJS(未完成)

次に「遊べるもの」を狙って、ブロック崩しを作成してみました。

codex "Create breakout.html with a simple breakout game using canvas and JavaScript in about 50 lines."

生成結果は確かにゲームらしい画面が出てきました。
ボールもブロックも描画され、雰囲気はブロック崩しそのもの。

しかし、残念ながら パドルが動かない
矢印キーでもマウスでも反応せず、ゲームとしては成り立ちません。

さらに修正を依頼してみました:

codex "Modify breakout.html so the paddle follows the mouse X and responds to arrow keys. Bounce angle depends on hit position."

ところが期待通りには直らず、挙動は改善しませんでした。
どうやら Codex の「差分パッチ適用」がうまくいかず、また コンテキスト長の制約(12kに設定) によって会話が途切れてしまうケースも確認。

つまり、生成はできても修正までは難しいというのが今回の結果です。

gpt-oss が作ったブロック崩し

学びと限界

今回、Codex CLI と gpt-oss を組み合わせてローカルで試してみて、動いた喜びと同時に、限界も強く実感しました。

RTX 3060 では遅い

テスト環境は RTX 3060 でしたが、モデルサイズが大きいせいで処理は重く、応答までにかなり時間がかかりました。
実用レベルで快適に回すには、やはり RTX 5090 クラスのGPUが欲しくなるところです。

コンテキスト長はすぐに枯れる

gpt-oss は 最大128K(=131,072)トークンのコンテキストに対応(OpenAI公称)。LM Studio では“131k”として表示されます。しかし LM Studio の設定を 12k(経験則による限界) にしていたこともあり、コード生成や修正を何度か繰り返すと あっという間に上限に到達
「context overflow」で生成が中断することもありました。

クラウドAIに慣れた身体には、絶望的に狭いコンテキストです..。

→ 対策としては:

  • 履歴を切る:Codexを終了して新しい会話にする
  • diffオンリー出力を強制:全文ではなく差分だけを返させる
  • 作業を分割:大きな修正を小出しにする
  • 長コンテキスト対応モデルに切り替える:Gemma 3n や Mistral Large 32k 版をLM Studioに読み込む

といった工夫が必要です。

文字化けやUIの不安定さ

Codex CLI の出力が Windows の PowerShell 上で文字化け(ANSI制御コードのカラフルなゴミが表示される)することもありました。
Windows Terminal で UTF-8 に設定すれば改善しますが、CLIとしての安定性は「まだ荒削り」という印象です。

実用性は限定的

率直に言えば、実務で使うならクラウドのGPTやGeminiの方が圧倒的に速く安定しています。
Gemini 2.5 が「ほぼ無料」で利用できる今、ローカル LLM であえて Codex CLI を動かす意味は限られます

それでも価値はある?

ここまで見てきたように、ローカル Codex × gpt-oss には速度や安定性の面で限界があります。
実務で「とにかく速く・確実に」コードを書かせたいなら、正直 ChatGPT や Gemini、Claude などクラウドLLMの方が圧倒的に実用的です。

それでも、ローカル Codex にはクラウドにはない独自の価値がありました。

実ファイルを直接操作する体験

ChatGPT のような通常の対話AIは「コード片」を返すだけです。
一方 Codex CLI は本当にファイルを生成・修正・削除する
「100個のテスト用ファイルを作って」→実際にファイルシステムに並ぶ、この体験はローカルならではです。

オフライン・クローズド環境で使える

社内システムや研究データのように「クラウドに出せないコードベース」を相手にする場面。
ここでは ローカルで動くLLM+Codex CLI が唯一の選択肢になります。

研究・教材としての価値

Codex CLI のログは「AIがどうコードを提案し、どう直したか」の履歴そのもの。
AIエージェントの実験や、教育用教材としてのサンプルに使うには絶好です。

体験として面白い

AIが自分の手元のディレクトリで、本当にファイルをゴリゴリ改変していく
──この光景自体がエンジニアにとっては楽しい体験。
うまく動いても、動かなくても、それを含めて「遊べる」のが魅力です。

まとめ

今回、Codex CLI × LM Studio × gpt-oss という組み合わせで「ローカルでCodexごっこ」をしてみました。

結果としては:

  • 花火JS → ちゃんと動いて大成功 🎆
  • ブロック崩しJS → 一応生成されたがパドルが動かず、修正依頼も不発
  • Crush → まだ不安定で実用は難しい

と、成功と失敗の両方を体験できました。

学びとしては:

  • RTX3060では遅すぎる、実用にはハイエンドGPUが必要
  • コンテキスト長(今回は12k設定)がすぐ枯れるので工夫が要る
  • クラウドモデル(ChatGPT / Gemini / Claude)と比べると、速さ・精度・安定性で大きな差

──と、正直「実務に投入する意味は薄い」というのが本音です。

しかし一方で:

  • ローカルでファイルを直接生成・改変する体験
  • オフラインやクローズド環境で使える強み
  • 研究や教材として“AIがコードを書く挙動”を観察できる面白さ

といったクラウドにはない価値も見つかりました。


結論

「普段の開発ならクラウドLLM。遊び・研究ならローカルCodex。」

AIが勝手にファイルを作り、修正し、時にはバグらせる──
その過程を手元で体験できるのは、やはりユニークでワクワクするものでした。

参考リンク集

本文中で触れたツールやモデルへの公式リンクをまとめておきます。
気になった方はぜひ触ってみてください。