
Codex CLIを快適に使うためのVSCode拡張を自作した
Codex CLI便利ですよね。直感的で、開発フローに組み込みやすくて。
ただ、Macユーザーの方なら共感してもらえると思うんですが、TUIでの日本語入力、つらくないですか?
表示が崩れたり、変換中の挙動が怪しかったりして、ストレスを感じることが多々ありました。
「これをTUIのまま解決するのは骨が折れそうだな...」
そう思って公式のVSCode拡張も試したんですが、今度は「複数セッションを行き来するのが面倒」という別のストレスが。
じゃあ、自分の理想の環境を作ってしまおうと。
幸いCodex CLIには app-server という機能があり、フロントエンドを自作しやすくなっています。
今回はVibe Codingを活用して、サクッと自分好みの拡張機能を作ってみました。
コンセプト:ストレスフリーな日本語入力と、軽快なセッション管理

目指したのは、「スムーズに日本語で対話できること」。
TUIの問題(日本語入力)をVSCodeのWebViewで解決し、
公式拡張の問題(セッション切り替えの手間)を、独自のタブ管理UIで解消しました。
結果的にモダンなUIにはなりましたが、それはCodexが優秀だったからです笑
主な機能
1. 複数セッションの同時管理

公式拡張では1つのチャットセッションしか持てませんでしたが、この拡張ではタブのように複数のセッションを切り替えられます。
「機能Aの実装」について聞きながら、並行して「エラーログの調査」を別スレッドで投げるといった使い方が可能です。

また、「◯◯のバグ調査用」「設計案の壁打ち」みたいにまた、セッションに名前をつけられるので、「あの時の会話どこだっけ?」と探す手間も減ります。

2. ワークスペース利用時のディレクトリ選択
VSCodeには複数のディレクトリをひとつのWindowで開ける「マルチルートワークスペース」という機能があります。
公式拡張では、マルチルートワークスペースを開いている際、Codex起動時に「どのディレクトリで起動するか」を選べないという課題がありました。
そこで、セッション開始時に「どのディレクトリ(ルート)でCodexを起動するか」を明示的に選べるようにしました。
仕組み的な話:VSCodeとCLIの分離運用
この拡張の裏側は、実はかなりシンプルかつ堅牢に作っています。
アーキテクチャ
VSCode拡張(Frontend)の中にAIのロジックを持っているわけではありません。
codex app-server というCLIコマンドを子プロセスとして起動し、JSON-RPCで対話しています。
-
Backend (Codex CLI):
- ワークスペースごとのルートディレクトリで
codex app-serverを起動。 - ファイル読み込みやツール実行は、このプロセスが行います。
- 標準入出力(stdio)を通じて、対話内容やツール実行結果をJSON形式でやり取りします。
- ワークスペースごとのルートディレクトリで
-
Frontend (VSCode Extension):
- ユーザーの入力を受け取り、JSON-RPCリクエストとしてBackendに投げます。
- BackendからのストリーミングレスポンスをWebViewに描画します。
- 複数のセッションID(VSCode側で生成)を管理し、どのチャットがどのスレッドに紐づくかを制御します。
技術的なメリット
この「分離構成」にはいくつかメリットがあります。
- 動作が軽い: 重たい推論やファイル操作は別プロセスなので、VSCode自体の動作を阻害しません。
- CLIの進化に追従できる: Codex CLI本体がアップデートされれば、拡張側を変更しなくても新機能(新しいモデルやツールなど)が使えるようになります。
- 純正の安心感: 通信プロトコルはCodex公式のものをそのまま使っているので、挙動の食い違いが起きにくいです。
今後
とりあえずローカルでガシガシ使ってますが、今のところかなり快適です。
TUIの日本語入力問題から開放されたのが一番デカイかも。
公開していますが、まずは自分好みに育てていこうと思います。
Codex CLIユーザーで同じ悩みを持ってる方、自作拡張おすすめです。
