テック技報最新号へ →
AIコーディング

エージェントが書くファイルを pre-commit フックで「5,000トークン以内」に抑える

ステージされたファイルのうちエージェントが書いたものだけを対象に、バイト数 ÷ 4 で概算したトークン数が上限を超えたらコミットを止め、分割方法をエラーメッセージで指示する。

@mattpocockuk · 投稿 2026-10-18
#ai-coding#hooks#pre-commit#コンテキスト#プロンプト

巨大ファイルはエージェントが読むたびにコンテキストを食い、編集の精度も落ちる。ルールに「小さく分けて」と書くより、コミット時に機械的に止めるほうが確実に守られる(Claude Code: 「〜したら〜して」はルールではなく hooks(settings.json)に書く と同じ考え方)。

手順

エージェントにそのまま頼めるプロンプト(@mattpocockuk の「今日のプロンプト」を日本語化):

text
5,000トークンを超えるファイルを防ぐ pre-commit フックを作って。
トークン数 = バイト数 / 4 で概算する。
ステージされたファイルだけを対象にする。
lockfile やコード生成物など、エージェントが書いていないファイルは除外する。
エラーメッセージには、ファイルをどう分割すればよいかの具体的な指示を入れる。

作られたフックで確認すること:

  1. 対象は git diff --cached --name-only --diff-filter=ACM のようにステージ済みだけになっているか
  2. 除外リスト(*.lock、package-lock.json、生成ディレクトリ、スナップショットなど)が入っているか
  3. エラー文が「どこで切るか」(責務ごと、型定義と実装を分ける、テストを分ける等)を示しているか。エージェントはこの文を読んで自分で直す

注意点

  • バイト ÷ 4 は英語寄りの概算。日本語のコメントや文字列が多いファイルは実際のトークン数が多めに出ることがある。上限は運用しながら調整する
  • 既存の巨大ファイルが一斉に引っかかる場合は、まず新規・変更ファイルだけに適用し、既存分は別タスクで分割する

出典

X の元の投稿を開く