56 ポイント 投稿者 spilist2 10 일 전 | 5件のコメント | WhatsAppで共有

きっかけ

  • Claude Opus 4.7 のリリースノートでは、「トークン使用量の増加」の部分が最も目立っていた。
  • 十分なトークンと時間があればできることが大幅に増えた時代になり、トークン効率も引き続き課題になっている
  • 「Claude Code と Codex で設定値を変えることでトークン効率を引き上げる方法はあるのか?」という疑問が生まれ、Claude Code の公式ドキュメント(設定/環境変数/IDE)、Codex の公式ドキュメント(設定/環境変数/MCP)、Codex のソースコードなどを分析してみると、有意義な結果が得られた
  • 普段使うインタラクティブモードだけでなく、プログラマブルな非インタラクティブモードでトークン効率/起動速度/安定性などを高める方法も多く分かった

自分の状態分析用プロンプト

前置きは抜きにして、自分のコーディングエージェント設定がどうなっているか点検したい人向けのプロンプト:

https://gist.github.com/spilist/c468cbf1ed0ffc91100f813aabdcd520/… を読んでそのまま実行して  

実際に何がトークンを食うのか

コーディングエージェントでトークンが漏れる経路は、おおむね次の3つ

  1. セッションごと、またはターンごとに自動で付加される追加テキスト
  2. 会話履歴に残った長すぎるツール呼び出し出力
  3. 検索、コネクタ、IDE 連携のような外部接続による追加呼び出し

Claude Code と Codex で上記 3 つを減らせるレバーを紹介する。(使っていない MCP サーバー/プラグインを切る、モデルや推論の強さを調整するなどの基本的な内容は省略)

  • 各設定の説明やトレードオフなどはブログに詳しく書いてある

Claude Code(最終確認バージョン: 2.1.114)

  1. includeGitInstructions: false

  2. autoConnectIde: false

  3. CLAUDE_CODE_GLOB_NO_IGNORE=false

  4. 出力上限を設定する(BASH_MAX_OUTPUT_LENGTH, CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS, MAX_MCP_OUTPUT_TOKENS)

  5. 短く単純な作業、または非対話モード向けの環境変数とフラグ

    • ENABLE_CLAUDEAI_MCP_SERVERS=false: MCP サーバーを無効化
    • CLAUDE_CODE_DISABLE_AUTO_MEMORY=1: 自動保存されたメモリが読み込まれないようにする
    • CLAUDE_CODE_DISABLE_CLAUDE_MDS=1: グローバル/プロジェクトの CLAUDE.md を無視
    • CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1: 組み込みサブエージェントおよびスキル定義をシステムプロンプトから除外
    • --tools: ネイティブツールを選択的に有効化。--tools "" ならすべて無効化。本当にモデルの知能だけを使うワーカーなら全部切ってもよく、対話的に簡単な作業をさせるときは全部切ると何もできなくなるので、"Bash,Edit,Glob,Grep,Read,Write" のように必要なものだけ有効化すればよい
    • --strict-mcp-config: CLI で明示した MCP 設定だけを使い、グローバル MCP 設定は無視。ワーカーごとに必要なコネクタだけをすっきり注入できる
    • --disable-slash-commands: /help, /clear のようなスラッシュコマンド定義がシステムプロンプトから外れる
    • --no-session-persistence: セッション保存/再開の経路を使わないため、単発実行の痕跡が残らない
    • --exclude-dynamic-system-prompt-sections: マシン/環境ごとに変わるセクションを除外し、プロンプトキャッシュの再利用率を高める
    • --system-prompt: いっそ Claude のシステムプロンプトを丸ごと置き換えることもできる
  6. attribution を空にする

Codex CLI(最終確認バージョン: 0.121.0 + 該当バージョンの Codex GitHub ソースコード)

  1. ChatGPT に接続された MCP(アプリ/コネクタ)を無効化(features.apps = false)
  2. web_search = "disabled"
  3. 出力上限を設定する(tool_output_token_limit)
  4. 非対話モードで安定して回すためのフラグ
    • --profile: 特定設定(web_search = "disabled", tool_output_token_limit = 2000 など)をまとめておき、選択して適用できる
    • --json + --output-last-message FILE : パイプラインでの解析/抽出がしやすくなり、後処理段階でのトークン再消費を減らす
    • --sandbox read-only: 読み取りだけが必要な自動化で、意図しない書き込みの試行 → 再試行ループ → トークン浪費を防ぐ
    • --skip-git-repo-check: 信頼済みディレクトリでなくても実行可能
    • --ephemeral: セッションファイルをディスクに保存しない
    • --color never: パイプ出力がすっきりする
  5. attribution を空にする

終わりに

丁寧に事実確認はしたが、もちろん間違っている部分があるかもしれません。気軽に指摘していただけるとありがたいです。

5件のコメント

 
windbug99 2 일 전

ありがとうございます。

 
dzzwe 10 일 전

良いリファレンスになる記事ですね。本文が「入ってくるトークン」のバルブを閉めるアプローチだとしたら、
私は「登録されているもの自体」が増えすぎて問題になるケースをよく経験したので、claude-slim というツールを作ってみました。

60個あるスキルのうち半分は一度も使っていないとか、プラグインのせいで CLAUDE.md が肥大化するとか、そういった状況をスキャン・分類・整理してくれる CLI です。トークンのカウントは js-tiktoken ベースで、削除するのではなく skills.disabled/ に移動するので、いつでも restore できます。

https://github.com/iops-leo/claude-slim

本文の設定と方向性がちょうど補完し合うので、併用すると良さそうです

 
spilist2 10 일 전

おお、共有ありがとうございます!

 
duse0001 10 일 전

有益な情報の共有ありがとうございます。根本的にトークン使用量そのものがかなり少なくなったのを実感しているので、Claudeでも増やしてくれるといいですね。ハーネスが動いている途中で切れてしまうので……

 
spilist2 10 일 전

ありがとうございます。Claudeはトークン消費も大きく、仕事ぶりもCodexと比べるとやや不満があるので、私は最近はCodexで作業することのほうが多いです。