モデル分散を実測し、設定を書いただけで配送されない穴を塞いだ
今回やったこと
複数のAIを用途ごとに使い分ける設定を用意しても、実行レーンがその設定を読んでいなければ分散は起きない。この問題を、選定・配送・実測の3つに分けて確認できる構成へ直した。対象は、常時稼働環境で動く夜間レーンと、そこから起動されるエージェントである。
記事の結論は単純で、設定ファイルの存在だけでは運用変更の証拠にならない。共通ローダを実行経路へ通し、ログから実際の使用量を集計して初めて、どのモデルが何件使われたかを確認できる。
設定を置くだけでは分散しない
モデルの選定は scripts/config/model_overrides.env に集約し、各レーンは scripts/lib/model_overrides.sh を経由して読む。共通ローダは設定ファイルが無い場合に警告を出す。以前のように、ファイルが無いとき条件式で静かに読み飛ばす構成では、設定を置いたつもりでも既定モデルへ戻った事実を見落とす。
. "$REPO/scripts/lib/model_overrides.sh"
起稿系のレーンは、設定上のエンジン指定とCodex側のモデル指定を別々に持つ。前者はどのエンジンを使うか、後者はCodexを使う場合のモデルを決める。この2段を混同すると、「Codexを使う設定」と「狙ったモデルで動く設定」を同じものとして扱ってしまう。
また、レーンごとの一覧を設定ファイルへ重複して書かず、解決済みの並びは台帳表示で確認する。設定値を正本にし、説明用の表を別に持たないことがドリフト防止になる。
実測のためにログの数え方を分ける
集計では、ClaudeとCodexのセッションログ形式が違う点を吸収する必要がある。agent_token_report.py はClaudeでは各assistantメッセージのusageを加算し、Codexではファイル内の累積 total_token_usage の最大値を採る。Codexの累積値を行ごとに足すと二重計上になるためである。
キャッシュ入力も単純に足さない。Claudeの input_tokens と cache_read_input_tokens は排他的だが、Codexの input_tokens はcached inputを内包する。Codexではcached分を差し引いて、新規入力と出力を比較対象にする。この差を無視すると、実際にはキャッシュ済みの処理を新規入力として数え、モデル変更の評価を誤る。
python3 scripts/agent_token_report.py --since 2026-08-01 --unmanned
python3 scripts/agent_token_report.py --since 2026-08-01 --unmanned --json
--unmanned は、無人レーンをcwd名の推測だけで分類しないための指定である。自動化レーンを対話セッションとして集計すると、使用量の帰属を誤る。集計・分類の精度そのものが、測定結果の妥当性を左右する点が重要だ。
設定・配送・実測を一つの確認対象にする
今回の修正では、設定ファイルの正しさだけをレビューしない。実行レーンの起動スクリプトが共通ローダをsourceしていること、Codexを起動するときにモデル上書きが環境へ渡ること、実行後のログを集計できることを順番に見る。
| 確認段階 | 見るもの | 失敗した場合 |
|---|---|---|
| 選定 | model_overrides.env | 採用モデルが決まらない |
| 配送 | model_overrides.sh と各レーン | 設定が実行機へ届かない |
| 実測 | agent_token_report.py | 届いたか判断できない |
どれか一つが欠けると、設定変更は「書かれたが効いていない」状態になる。特に無人実行では、処理が成功しているように見えることが危険である。既定モデルのままでも記事やレビューは完了するため、配送の欠落が成果物の失敗として現れないからだ。
やってみてわかったこと
モデル選びは単価表や理想の役割分担だけでは決まらない。設定が実行経路へ届き、実際に使われ、ログから追跡できることが前提になる。設定・配送・実測を同じ変更の一部として扱えば、クォータ削減や用途分担を後から検証できる。
逆に、集計の分類やキャッシュの扱いが曖昧なままでは、数字が出ても意思決定の材料にならない。自動化の運用では、モデルを選ぶ作業より、選んだモデルが本当に使われたことを証明する作業の方が長く残る。
この記事について
参照したのは、トークン集計スクリプト、共通ローダー、モデル設定、エージェント実行ランナーと、タスクキューに記録された実装概要である。数値を新たに推測せず、リポジトリに記録された集計方法と構成上の判断だけを整理した。
更新履歴
- 2026-09-20: 初稿。
訂正履歴
なし。