Codex を GPT-6 Sol へ上げ、ステータスラインにエフォートを出し、yt-dlp の JS ランタイム警告を deno で直した

開発claude-code-tools

Codex を GPT-6 Sol へ上げ、ステータスラインにエフォートを出し、yt-dlp の JS ランタイム警告を deno で直した

9月23日は、AI まわりの道具を三つ手入れした。 朝は Codex のモデル更新、昼すぎは Claude Code のステータスラインと、自作の Chrome 拡張の動画ダウンロードである。 三つめは、直したあとにダウンロードボタンが画面から消えた。

Codex を GPT-6 Sol へ上げる

Codex のモデル一覧に、GPT-6 Astra のほかに GPT-6 Sol が出てきていた。 これまで使っていたのは 5.6 の Sol なので、GPT-6 の Sol へ上げたい。 気になっていたのは、コミット前にレビューするフックのモデル指定である。 Astra になっているのか、5.6 のまま残っているのか、自分でも把握できていなかった。 ついでに、レビューで Astra を使っている箇所はそれでいいのかも、Claude Code に聞いた。

Claude Code は、gpt-6-sol がモデル一覧にあるのを見てから、実際に呼べるかを短く確かめた。 そのうえで、コミット前レビューのフック(Codex がステージ差分を読み、問題があればコミットを止める仕組み)を gpt-5.6-sol から gpt-6-sol に切り替えてもらった。 5.6 のまま残っていたのは、やはりフックだけだった。 Astra を使っているドキュメントレビューは、そのままで問題ないという答えだった。

変更は ~/.claude の中の4ファイルである。 「コミットしといて」と頼むと、5c48270 としてコミットされた。

このコミットが、そのまま新しいモデルの試運転になった。 コミットのとき、フックが gpt-6-sol(effort=high)で差分をレビューし、critical と high の指摘は出なかった。 新しいモデルでもフックが動くことを、試験を別に組まなくても確かめられた。 コミットに入れたのは変更した4ファイルだけで、関係のない未追跡の state/ は入っていない。

Opus 5.5 と Sonnet のどちらを使うか

同じセッションで、スクリーンショットを1枚貼って相談した。 貼った画像を見ると、Sonnet より明らかに良さそうに思えた。 それなら、いまは Sonnet ではなく Opus を使うべきなのか、という質問である。 音声入力だったので、モデル名は「Sonnet 3.5」「Opus 3.5」のようにずれて入っていた。

Claude Code はこれを「Opus 5.5 を使うべきか、Sonnet や Fable 5.1 のままでいいか」という質問に読み替えて答えた。 Opus 5.5 を使うのがいいと思う、という答えだった。 しかも、このセッションはすでに Opus 5.5 で動いていた。

「5.5。」とだけ返すと、グローバルの CLAUDE.md にある現行モデルの記述を Opus 5.5 に直し、33c99d7 としてコミットしてもらえた。 書き換えた一文は次のとおり。

現行モデルは Opus 5.5(2026-09-23 更新。それ以前は Opus 5)

ステータスラインにエフォートのレベルを出す

昼すぎ、Claude Code のステータスラインをそのまま貼り付けて、エフォートのレベルも出してほしいと頼んだ。 そのとき表示されていたのは、次のような内容である。

mdx-playground · master · Opus 5.5 (1M context) · dev :3000 · ⚠ node×26 · /procs
ctx 0% · 5h 13% (45m) · 7d 22% (9/25(金)17:59) · Fable 24% (9/25(金)17:59)

リポジトリとブランチ、モデル名、dev サーバー、走っている node の数、利用量までは並んでいる。 いまどのエフォートで動いているかだけが、どこにも出ていない。

そもそも、その値をステータスラインが受け取れているのか。 Claude Code は、ステータスラインのスクリプトが受け取る入力 JSON に effort が入っているかを確かめるため、デバッグ出力を一時的に足した。 入力 JSON には effort: {level: "high"} が入っていた。 値が届いているなら、あとは表示を足すだけで済む。 デバッグ行を外し、1行目のモデル名のすぐ後ろにエフォートのレベルを出すようにしてもらった。 Claude Code の説明は、次に表示が更新されたときからそう出るはずだ、というものだった。

「コミットしといてください」と頼むと、~/.claude リポジトリに statusline.py の変更だけがコミットされた(f57e91d)。 push はしていない。 1回目のコミットは、コミット前の Codex レビューで止まった。 朝に gpt-6-sol へ切り替えたばかりのフックが、昼には自分のコミットを止める側に回っていた。

yt-dlp の「JavaScript ランタイムが無い」警告

自作の Chrome 拡張は、X 用のほかに YouTube 用も作っている。 その YouTube 用の拡張で動画をダウンロードしようとしたら、次のエラーが返ってきた(動画 ID は伏せた)。

WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config.
ERROR: [youtube] <動画ID>: This video is not available

警告が1件とエラーが1件である。 何が起きているのか分からず、そのまま Claude Code に貼って「これ何ですか?」と聞いた。

Claude Code は、JS ランタイムの原因を先に特定してから、「動画が利用できない」エラーの切り分けに進んだ。 原因は、拡張のコードではなかった。 yt-dlp が、YouTube の JavaScript チャレンジを解けていなかったのである。 同じ動画で条件を変えて試してもらうと、チャレンジを解ける状態にしたときは取得できた。 動画も公開中だった。

警告の中で案内されていたのは、yt-dlp の EJS に関する wiki で、JS ランタイムの入れ方が書いてある。

deno を上げて、native host から絶対パスで渡す

直し方は、自分で決めた。 deno を上げたうえで、native host から絶対パスで指定する。 警告の文面にも、既定で有効なのは deno だけとあり、RUNTIME[:PATH] の形でパスまで渡せることが示されている。

Claude Code が調べると、YouTube 用の拡張は chrome-extension-youtube という別のリポジトリにあった。 そちらの native host を確認し、deno を 2.9.7 に更新してもらった。 次に、native host が組み立てるのと同じコマンドで、実際にダウンロードできるかを確かめさせた。

同じ動画で、警告もエラーも出ずに mp4 を保存できた。 native host が deno を絶対パスで yt-dlp に渡す形にした変更は、5071d28 としてコミットした。 Codex のレビューで、critical と high の指摘は出なかった。

ダウンロードボタンが消えた件

拡張の再読み込みはしていないが、今回は再読み込みしなくても新しいコードで動く、という説明を受けた。 ところが画面を見ると、ダウンロードボタンが無くなっていた。

Claude Code は、新しいタブでもボタンが出ないことを確かめ、chrome://extensions で拡張そのものが有効になっているかを調べた。 chrome-extension-reload スキルでリロードを試みたが、接続がタイムアウトした。 Chrome 側の許可ダイアログが間に合わなかったらしく、もう1回だけ試した。

ボタンが消えたのは、Claude Code の検証作業が原因だった。 原因になったフォルダはすでに削除したが、拡張の再読み込みは自動ではできなかったので、手で押してほしいという報告である。 手でリロードすると、うまくいった。

再読み込みは要らないと言われた直後に、理由は別とはいえ、結局は再読み込みを押すことになった。

README と Mac 側の手順

直ったところで、該当の拡張のディレクトリにドキュメントを残すよう頼んだ。 README にはもともと「セットアップ」「うまく動かないとき」「経緯」の節があり、そこへ今回の2件を追記してもらった。 追記は c52ab73 としてコミットした。 Codex のレビューは、ドキュメントの追記だけで動作を壊す問題はないという結果で、critical と high の指摘は出なかった。

push してよいと伝えると、5071d28c52ab73 の2コミットが origin/master に反映された。 最後に一つ、注意を受けた。 Mac 側で使うときは、git pull だけでは足りない。 deno の更新と yt-dlp-ejs の導入が別に要り、その手順は README の「セットアップ」節に書いてある。

振り返り

三つとも、手を入れる前に一度確かめる手順を挟んでいた。 Codex は gpt-6-sol が実際に呼べるかを確かめ、ステータスラインは入力 JSON に effort が入っているかを見て、yt-dlp は同じ動画で条件を変えて試した。

  • Codex のモデル指定は、コミット前のフックとドキュメントレビューで別々に持っていた。更新が漏れていたのは、フックのほうだけだった
  • 2台運用では、git pull で揃うのはリポジトリの中身までである。deno や yt-dlp-ejs のように手元へ入れたものは、Mac 側で別に入れる必要がある
#Claude Code#Codex#yt-dlp#deno#Chrome拡張#ステータスライン#日記