[{"data":1,"prerenderedAt":313},["ShallowReactive",2],{"content-/codex-gpt6-sol-statusline-effort-ytdlp-deno":3,"all-pages-for-dir":290,"related-/codex-gpt6-sol-statusline-effort-ytdlp-deno":291,"og-image-/codex-gpt6-sol-statusline-effort-ytdlp-deno":312},{"id":4,"title":5,"body":6,"category":268,"concepts":269,"description":270,"extension":271,"meta":272,"navigation":273,"ogImage":269,"path":274,"project_name":275,"published":276,"publishedAt":277,"seo":278,"source":279,"stem":280,"tags":281,"todo":269,"unpublished":276,"updatedAt":269,"__hash__":289},"pages/2026-09/2026-09-23/codex-gpt6-sol-statusline-effort-ytdlp-deno.md","Codex を GPT-6 Sol へ上げ、ステータスラインにエフォートを出し、yt-dlp の JS ランタイム警告を deno で直した",{"type":7,"value":8,"toc":254},"minimark",[9,13,17,22,25,37,48,58,63,66,69,80,86,89,92,102,105,112,129,133,136,142,145,148,161,165,172,179,186,189,192,195,198,201,205,212,229,232,238],[10,11,5],"h1",{"id":12},"codex-を-gpt-6-sol-へ上げステータスラインにエフォートを出しyt-dlp-の-js-ランタイム警告を-deno-で直した",[14,15,16],"p",{},"9月23日は、AI まわりの道具を三つ手入れした。\n朝は Codex のモデル更新、昼すぎは Claude Code のステータスラインと、自作の Chrome 拡張の動画ダウンロードである。\n三つめは、直したあとにダウンロードボタンが画面から消えた。",[18,19,21],"h2",{"id":20},"codex-を-gpt-6-sol-へ上げる","Codex を GPT-6 Sol へ上げる",[14,23,24],{},"Codex のモデル一覧に、GPT-6 Astra のほかに GPT-6 Sol が出てきていた。\nこれまで使っていたのは 5.6 の Sol なので、GPT-6 の Sol へ上げたい。\n気になっていたのは、コミット前にレビューするフックのモデル指定である。\nAstra になっているのか、5.6 のまま残っているのか、自分でも把握できていなかった。\nついでに、レビューで Astra を使っている箇所はそれでいいのかも、Claude Code に聞いた。",[14,26,27,28,32,33,36],{},"Claude Code は、gpt-6-sol がモデル一覧にあるのを見てから、実際に呼べるかを短く確かめた。\nそのうえで、コミット前レビューのフック（Codex がステージ差分を読み、問題があればコミットを止める仕組み）を ",[29,30,31],"code",{},"gpt-5.6-sol"," から ",[29,34,35],{},"gpt-6-sol"," に切り替えてもらった。\n5.6 のまま残っていたのは、やはりフックだけだった。\nAstra を使っているドキュメントレビューは、そのままで問題ないという答えだった。",[14,38,39,40,43,44,47],{},"変更は ",[29,41,42],{},"~/.claude"," の中の4ファイルである。\n「コミットしといて」と頼むと、",[29,45,46],{},"5c48270"," としてコミットされた。",[14,49,50,51,53,54,57],{},"このコミットが、そのまま新しいモデルの試運転になった。\nコミットのとき、フックが ",[29,52,35],{},"（effort=high）で差分をレビューし、critical と high の指摘は出なかった。\n新しいモデルでもフックが動くことを、試験を別に組まなくても確かめられた。\nコミットに入れたのは変更した4ファイルだけで、関係のない未追跡の ",[29,55,56],{},"state/"," は入っていない。",[59,60,62],"h3",{"id":61},"opus-55-と-sonnet-のどちらを使うか","Opus 5.5 と Sonnet のどちらを使うか",[14,64,65],{},"同じセッションで、スクリーンショットを1枚貼って相談した。\n貼った画像を見ると、Sonnet より明らかに良さそうに思えた。\nそれなら、いまは Sonnet ではなく Opus を使うべきなのか、という質問である。\n音声入力だったので、モデル名は「Sonnet 3.5」「Opus 3.5」のようにずれて入っていた。",[14,67,68],{},"Claude Code はこれを「Opus 5.5 を使うべきか、Sonnet や Fable 5.1 のままでいいか」という質問に読み替えて答えた。\nOpus 5.5 を使うのがいいと思う、という答えだった。\nしかも、このセッションはすでに Opus 5.5 で動いていた。",[14,70,71,72,75,76,79],{},"「5.5。」とだけ返すと、グローバルの ",[29,73,74],{},"CLAUDE.md"," にある現行モデルの記述を Opus 5.5 に直し、",[29,77,78],{},"33c99d7"," としてコミットしてもらえた。\n書き換えた一文は次のとおり。",[81,82,83],"blockquote",{},[14,84,85],{},"現行モデルは Opus 5.5（2026-09-23 更新。それ以前は Opus 5）",[18,87,88],{"id":88},"ステータスラインにエフォートのレベルを出す",[14,90,91],{},"昼すぎ、Claude Code のステータスラインをそのまま貼り付けて、エフォートのレベルも出してほしいと頼んだ。\nそのとき表示されていたのは、次のような内容である。",[93,94,99],"pre",{"className":95,"code":97,"language":98},[96],"language-text","mdx-playground · master · Opus 5.5 (1M context) · dev :3000 · ⚠ node×26 · /procs\nctx 0% · 5h 13% (45m) · 7d 22% (9/25(金)17:59) · Fable 24% (9/25(金)17:59)\n","text",[29,100,97],{"__ignoreMap":101},"",[14,103,104],{},"リポジトリとブランチ、モデル名、dev サーバー、走っている node の数、利用量までは並んでいる。\nいまどのエフォートで動いているかだけが、どこにも出ていない。",[14,106,107,108,111],{},"そもそも、その値をステータスラインが受け取れているのか。\nClaude Code は、ステータスラインのスクリプトが受け取る入力 JSON に effort が入っているかを確かめるため、デバッグ出力を一時的に足した。\n入力 JSON には ",[29,109,110],{},"effort: {level: \"high\"}"," が入っていた。\n値が届いているなら、あとは表示を足すだけで済む。\nデバッグ行を外し、1行目のモデル名のすぐ後ろにエフォートのレベルを出すようにしてもらった。\nClaude Code の説明は、次に表示が更新されたときからそう出るはずだ、というものだった。",[14,113,114,115,117,118,121,122,125,126,128],{},"「コミットしといてください」と頼むと、",[29,116,42],{}," リポジトリに ",[29,119,120],{},"statusline.py"," の変更だけがコミットされた（",[29,123,124],{},"f57e91d","）。\npush はしていない。\n1回目のコミットは、コミット前の Codex レビューで止まった。\n朝に ",[29,127,35],{}," へ切り替えたばかりのフックが、昼には自分のコミットを止める側に回っていた。",[18,130,132],{"id":131},"yt-dlp-のjavascript-ランタイムが無い警告","yt-dlp の「JavaScript ランタイムが無い」警告",[14,134,135],{},"自作の Chrome 拡張は、X 用のほかに YouTube 用も作っている。\nその YouTube 用の拡張で動画をダウンロードしようとしたら、次のエラーが返ってきた（動画 ID は伏せた）。",[93,137,140],{"className":138,"code":139,"language":98},[96],"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.\nERROR: [youtube] \u003C動画ID>: This video is not available\n",[29,141,139],{"__ignoreMap":101},[14,143,144],{},"警告が1件とエラーが1件である。\n何が起きているのか分からず、そのまま Claude Code に貼って「これ何ですか？」と聞いた。",[14,146,147],{},"Claude Code は、JS ランタイムの原因を先に特定してから、「動画が利用できない」エラーの切り分けに進んだ。\n原因は、拡張のコードではなかった。\nyt-dlp が、YouTube の JavaScript チャレンジを解けていなかったのである。\n同じ動画で条件を変えて試してもらうと、チャレンジを解ける状態にしたときは取得できた。\n動画も公開中だった。",[14,149,150,151,160],{},"警告の中で案内されていたのは、yt-dlp の ",[152,153,159],"a",{"href":154,"target":155,"rel":156},"https://github.com/yt-dlp/yt-dlp/wiki/EJS","_blank",[157,158],"noopener","noreferrer","EJS に関する wiki"," で、JS ランタイムの入れ方が書いてある。",[59,162,164],{"id":163},"deno-を上げてnative-host-から絶対パスで渡す","deno を上げて、native host から絶対パスで渡す",[14,166,167,168,171],{},"直し方は、自分で決めた。\ndeno を上げたうえで、native host から絶対パスで指定する。\n警告の文面にも、既定で有効なのは deno だけとあり、",[29,169,170],{},"RUNTIME[:PATH]"," の形でパスまで渡せることが示されている。",[14,173,174,175,178],{},"Claude Code が調べると、YouTube 用の拡張は ",[29,176,177],{},"chrome-extension-youtube"," という別のリポジトリにあった。\nそちらの native host を確認し、deno を 2.9.7 に更新してもらった。\n次に、native host が組み立てるのと同じコマンドで、実際にダウンロードできるかを確かめさせた。",[14,180,181,182,185],{},"同じ動画で、警告もエラーも出ずに mp4 を保存できた。\nnative host が deno を絶対パスで yt-dlp に渡す形にした変更は、",[29,183,184],{},"5071d28"," としてコミットした。\nCodex のレビューで、critical と high の指摘は出なかった。",[59,187,188],{"id":188},"ダウンロードボタンが消えた件",[14,190,191],{},"拡張の再読み込みはしていないが、今回は再読み込みしなくても新しいコードで動く、という説明を受けた。\nところが画面を見ると、ダウンロードボタンが無くなっていた。",[14,193,194],{},"Claude Code は、新しいタブでもボタンが出ないことを確かめ、chrome://extensions で拡張そのものが有効になっているかを調べた。\nchrome-extension-reload スキルでリロードを試みたが、接続がタイムアウトした。\nChrome 側の許可ダイアログが間に合わなかったらしく、もう1回だけ試した。",[14,196,197],{},"ボタンが消えたのは、Claude Code の検証作業が原因だった。\n原因になったフォルダはすでに削除したが、拡張の再読み込みは自動ではできなかったので、手で押してほしいという報告である。\n手でリロードすると、うまくいった。",[14,199,200],{},"再読み込みは要らないと言われた直後に、理由は別とはいえ、結局は再読み込みを押すことになった。",[59,202,204],{"id":203},"readme-と-mac-側の手順","README と Mac 側の手順",[14,206,207,208,211],{},"直ったところで、該当の拡張のディレクトリにドキュメントを残すよう頼んだ。\nREADME にはもともと「セットアップ」「うまく動かないとき」「経緯」の節があり、そこへ今回の2件を追記してもらった。\n追記は ",[29,209,210],{},"c52ab73"," としてコミットした。\nCodex のレビューは、ドキュメントの追記だけで動作を壊す問題はないという結果で、critical と high の指摘は出なかった。",[14,213,214,215,217,218,220,221,224,225,228],{},"push してよいと伝えると、",[29,216,184],{}," と ",[29,219,210],{}," の2コミットが origin/master に反映された。\n最後に一つ、注意を受けた。\nMac 側で使うときは、",[29,222,223],{},"git pull"," だけでは足りない。\ndeno の更新と ",[29,226,227],{},"yt-dlp-ejs"," の導入が別に要り、その手順は README の「セットアップ」節に書いてある。",[18,230,231],{"id":231},"振り返り",[14,233,234,235,237],{},"三つとも、手を入れる前に一度確かめる手順を挟んでいた。\nCodex は ",[29,236,35],{}," が実際に呼べるかを確かめ、ステータスラインは入力 JSON に effort が入っているかを見て、yt-dlp は同じ動画で条件を変えて試した。",[239,240,241,245],"ul",{},[242,243,244],"li",{},"Codex のモデル指定は、コミット前のフックとドキュメントレビューで別々に持っていた。更新が漏れていたのは、フックのほうだけだった",[242,246,247,248,250,251,253],{},"2台運用では、",[29,249,223],{}," で揃うのはリポジトリの中身までである。deno や ",[29,252,227],{}," のように手元へ入れたものは、Mac 側で別に入れる必要がある",{"title":101,"searchDepth":255,"depth":255,"links":256},2,[257,261,262,267],{"id":20,"depth":255,"text":21,"children":258},[259],{"id":61,"depth":260,"text":62},3,{"id":88,"depth":255,"text":88},{"id":131,"depth":255,"text":132,"children":263},[264,265,266],{"id":163,"depth":260,"text":164},{"id":188,"depth":260,"text":188},{"id":203,"depth":260,"text":204},{"id":231,"depth":255,"text":231},"dev",null,"Codex のコミットレビュー用フックだけ 5.6 のまま残っていたのを GPT-6 Sol へ上げ、Claude Code のステータスラインにエフォートのレベルを足した。自作の YouTube 用 Chrome 拡張では、yt-dlp の「JavaScript ランタイムが無い」警告を deno 2.9.7 と絶対パス指定で解消した。","md",{},true,"/codex-gpt6-sol-statusline-effort-ytdlp-deno","claude-code-tools",false,"2026-09-23T00:00:00.000Z",{"title":5,"description":270},"make-diary","2026-09/2026-09-23/codex-gpt6-sol-statusline-effort-ytdlp-deno",[282,283,284,285,286,287,288],"Claude Code","Codex","yt-dlp","deno","Chrome拡張","ステータスライン","日記","Pqni_2jBh6N7H_FqbaQ3BedD_YEQX5mP4pMbHbHUMhg",[],[292,296,300,304,308],{"title":293,"path":294,"publishedAt":295},"2026年9月5日の開発日記 - ひと月遅れで届く開示を追う仕組みと、記事1本ごとに走っていた10万字の連鎖","/2026-09-05-diary","2026-09-05T00:00:00.000Z",{"title":297,"path":298,"publishedAt":299},"2026年9月15日の開発日記 - 「終わっているはず」を確かめて回った日","/2026-09-15-diary","2026-09-15T00:00:00.000Z",{"title":301,"path":302,"publishedAt":303},"2026年9月14日の開発日記 - 学習ゲートを畳み、Codexレビューに置き換えた日","/2026-09-14-diary","2026-09-14T00:00:00.000Z",{"title":305,"path":306,"publishedAt":307},"2026年9月3日の開発日記 - 止まったセッションを二度拾い直した日","/2026-09-03-diary","2026-09-03T00:00:00.000Z",{"title":309,"path":310,"publishedAt":311},"2026年9月1日の開発日記 - 図解と帳票を並べ直し、検索順位の測り方を変えた","/2026-09-01-diary","2026-09-01T00:00:00.000Z","https://log.eurekapu.com/og/blog/codex-gpt6-sol-statusline-effort-ytdlp-deno.png?v=2026-09-23T00%3A00%3A00.000Z&title=Codex%20%E3%82%92%20GPT-6%20Sol%20%E3%81%B8%E4%B8%8A%E3%81%92%E3%80%81%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AB%E3%82%A8%E3%83%95%E3%82%A9%E3%83%BC%E3%83%88%E3%82%92%E5%87%BA%E3%81%97%E3%80%81yt-dlp%20%E3%81%AE%20JS%20%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E8%AD%A6%E5%91%8A%E3%82%92%20deno%20%E3%81%A7%E7%9B%B4%E3%81%97%E3%81%9F&author=Kei%20Komatsu&sig=99b994301173d56c",1790216068437]