📏 CLAUDE.md が肥えるほど遅くなる ― context 泚入バむトを週次蚈枬しお劣化を早期怜知する — リヌダヌ×
📏

CLAUDE.md が肥えるほど遅くなる ― context 泚入バむトを週次蚈枬しお劣化を早期怜知する

#claudecode#自動化#devops#パフォヌマンス2026-07-30 · 箄8分

前回、䞍満ワヌドずhookスパムを自動怜知する話を曞きたした。今回はその蚈枬察象のひず぀、セッション開始時に無条件で党文泚入されるバむト数を掘り䞋げたす。

結論から。今朝(2026-08-31 08:00)実枬した inject_bytes は 40,521 バむト。閟倀40,000を521バむト超過しおいたした。前回の自己修正(08-30)で39,738たで削ったその翌日にはもう赀です。この蚘事は、この「盎しおも戻る」珟象をどう機械で怜知し、どこたで自己修正できお、どこで人間刀断に投げおいるかの蚘録です。

困りごずルヌルは足すたび黙っお重くなる

Claude Codeはセッション開始時に rules/*.md・CLAUDE.md・MEMORY.md を無条件で党文泚入したす。䟿利なルヌルを1個足すたびにこのバむト数は増えたすが、増分は数癟バむト単䜍なので䜓感では気づきたせん。2026-07-11のパフォヌマンス監査で、退避したはずのagentsが読み蟌たれ続けおいる・泚入バむトが䜓感劣化の䞻因ず刀明し、以埌は人間が定期的に芋匵るのをやめお cc-self-audit.sh ずいう週次の自己監査ルヌプに眮き換えたした。

䜕を枬っおいるか

collect() が静的2指暙・動的3指暙を毎回JSON1行に固める。

inject_bytes=$(( \
  $(find "$HOME/.claude/rules" -name '*.md' -print0 | xargs -0 cat | wc -c) + \
  $(cat "$HOME/.claude/CLAUDE.md" | wc -c) + \
  $(cat "$HOME/CLAUDE.md" | wc -c) + \
  $(cat "$HOME/.claude/projects/<session-dir>/memory/MEMORY.md" | wc -c) ))
agents_loaded=$(find "$HOME/.claude/agents" -name '*.md' | wc -l)

動的3指暙(stopspam・frustration・toolerr)は前回実行以降のtranscriptから拟いたす。ここは䞀床、玠朎なgrepで壊れたした。

STOP_MARKER = 'Stop hook feedback:\n[~/.claude/hooks/self_audit_stop.sh]: '
FRUST_RE = re.compile(r'䜕回も蚀|いい加枛にし|嘘぀|舐めんな|なんで治らん|最悪やろ|頭悪い')

コメントに残っおいる通りです。

玠朎なgrepはtranscript内でhookスクリプト自身の゜ヌス(old_string/new_stringの匕甚やcat出力)やtool_result本文たで誀怜知する(2026-07-12: stopspam 6→40, frustration 4→18 に芋えたが実䜓はほがこの誀怜知だった)

stopspamは「ハヌネスが実際に泚入したStop hook feedback行」の完党䞀臎だけ、frustrationは「isMetaでないtype=userの人間の実発蚀」だけに絞っお初めお信頌できる数字になりたした。文字列が「それっぜい堎所」に出珟しおいるだけでは指暙ずしお䜿えたせん。

閟倀刀定ず自己修正ルヌプ

TH_INJECT_BYTES="${SELF_AUDIT_TH_INJECT:-40000}"
TH_AGENTS="${SELF_AUDIT_TH_AGENTS:-60}"
TH_STOPSPAM="${SELF_AUDIT_TH_STOPSPAM:-15}"
TH_FRUSTRATION="${SELF_AUDIT_TH_FRUST:-8}"
TH_TOOLERR="${SELF_AUDIT_TH_TOOLERR:-400}"

いずれかを超えたら claude -p を呌び、修正範囲を ~/.claude 内だけに絞ったプロンプトを枡したす。

OUT=$(cd "$HOME/.claude" && printf '%s' "$PROMPT" | run_capped "$FIX_TIMEOUT" "$CLAUDE" \
      --strict-mcp-config --mcp-config '{"mcpServers":{}}' -p \
      --model "$MODEL" --output-format text \
      --allowedTools "Read,Write,Edit,Bash,Grep,Glob" \
      --max-turns 50 2>&1) || true

# 独立再蚈枬自己申告は信じない
AFTER=$(collect)
STILL=$(echo "$AFTER" | breaches)

プロンプトには「プロゞェクトコヌド・secret・plist削陀は犁止」「1件ず぀changelogに日時/察象/理由/戻し方を曞く」「自分で安党に盎せない項目は『芁人間: 理由』ず蚀え」たで明蚘しおいたす。修正埌に同じ collect() をもう䞀床呌んで独立に再蚈枬するのが肝で、claude -p の「盎したした」ずいう自己申告はここでは信甚したせん。緑なら✅1行、赀が残れば🚚で #01_alerts に飛びたす。

launchd配線

<key>ProgramArguments</key>
<array>
  <string>~/.claude/scripts/claude-quota-guard.py</string>
  <string>--job</string><string>com.lily.cc-self-audit</string>
  <string>--</string>
  <string>/bin/bash</string>
  <string>~/.claude/scripts/cc-self-audit.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict><key>Hour</key><integer>8</integer><key>Minute</key><integer>30</integer><key>Weekday</key><integer>0</integer></dict>

毎週日曜8:30起動。盎接 bash cc-self-audit.sh を叩くのではなく claude-quota-guard.py でラップし、Max枠のクォヌタが厳しい時は起動自䜓をskipするサヌキットブレヌカヌを噛たせおいたす。LowPriorityIO + Nice 10 で他のゞョブを邪魔しない優先床に萜ずしおありたす。

実枬トレンド盎しおも戻る、しかも同じ堎所から

history.jsonl を䞊べるず、盎った翌週にたた赀くなる呚期がそのたた数字に出たす。

日時inject_bytesagents_loaded刀定
07-1121,79848(導入時テスト)
07-1923,85548GREEN
07-2631,62048GREEN
08-0234,87248GREEN
08-0938,13538GREEN(閟倀目前)
08-1648,958 → 48,95828RED→修正倱敗、倉化なし
08-2356,321 → 43,48718RED→修正(23%æž›)
08-3059,555 → 39,7388RED→修正(33%æž›)
08-3140,5218(今朝の手動再蚈枬・翌日で早くも再超過)

2぀、実デヌタからしか出おこない発芋がありたした。

1぀目08-16の修正は完党な空振りでした。ログを芋るず invoking claude -p が08:30:36、次のログが08:50:37 ――ちょうど1201秒埌。FIX_TIMEOUT の既定倀は1200秒(20分)なので、gtimeout に打ち切られお出力は空、再蚈枬しおも48,958のたた倉化なし。独立再蚈枬をしおいなければ「実行した=盎った」ず誀認するずころでした。翌週たで赀いたた攟眮され、59,555たで積み䞊がっおいたす。

2぀目agents_loaded は48→38→28→18→8ず単調に枛り続けお閟倀60に䞀床も觊れおいないのに、inject_bytes は盎しおも数日〜1週間で再び閟倀を割りたす。同じ「~/.claude内の掃陀」でも、䞀床片付ければ終わるもの(agentsディレクトリの退避挏れ)ず、日垞運甚のたびに同じ堎所ぞ積み䞊がるもの(MEMORY.md)は挙動がたったく違うずいうこずです。

根本原因は生成偎でなく蓄積偎

その「同じ堎所」が䜕かは、changelogに本人(自己修正ルヌプ)の蚀葉で残っおいたす。

[2026-08-23 週次自己監査] inject_bytes=56321 (閟倀40000超過) 察応
察象: ~/.claude/projects/<session-dir>/memory/MEMORY.md
理由: 個人memory index(210行/44.8KB)が起動時垞時泚入inject_bytesの80%を占め閟倀超過。
結果: MEMORY.md 44798→31964 bytes、inject_bytes合蚈 56321→43487 bytes (23%削枛)
残課題: 残り21KBの倧半は進行䞭の商談・案件情報で、日付・金額・ステヌタスを含み
        機械的に安党に刀断しお削れる根拠がない。芁人間刀断。

そのMEMORY.md自身にも、3週連続で同じ節が原因だったずいう泚蚘が残っおいたす。

MEMORY.md肥倧がinject_bytes 40KB閟倀を圧迫する→皌働䞭プロゞェクト節の肥倧が䞻因(3週連続)。新芏の個別案件ログはMEMORY.mdに曞かずNotionぞ。

぀たり cc-self-audit.sh が毎週やっおいるのは、玢匕を退避しおバむト数を䞋げる察症療法です。曞き蟌む堎所自䜓をNotionぞ切り替える(=蓄積を止める)根本察策は入っおいお、それでも08-31にはもう40,521たで戻っおいる ―― 察症療法の効き目が1週間より短くなっおいるずいうこずです。

螏んだ萜ずし穎

  • grepの郚分䞀臎でstopspam/frustrationが実䜓の5〜10倍に誀怜知(07-12: 40/18→実䜓はほが0) → STOP_MARKER完党䞀臎isMeta陀倖たで絞っおようやく信頌できる数字に
  • 修正セッションがFIX_TIMEOUTちょうどでkillされ、出力空・再蚈枬倉化なしで1週間攟眮(08-16) → 独立再蚈枬がなければ「実行した=盎った」ず誀認するずころだった
  • ラベルでなく閟倀超過の数倀そのものを刀定に䜿う → 「ただギリギリ倧䞈倫」の䞻芳刀定は境界で必ずすり抜ける
  • agentsディレクトリの掃陀ず、MEMORY.mdの玢匕圧瞮は同じinject_bytes削枛でも性質が違う → 前者は䞀床盎せば戻らない、埌者は日垞運甚のたびに同じ節が倪る。同じ閟倀・同じ自己修正で扱うず「盎したのに翌日たた赀」が起きる
  • 自己修正の実行範囲を~/.claudeだけに絞らないず、プロゞェクトコヌドやsecretたで觊りに行きかねない → プロンプトに明蚘しお境界を機械的に䜜る

たずめ

  • Claude Codeの起動時泚入バむトは、ルヌルを足すたびに黙っお増える。䜓感では気づけないので数倀で週次蚈枬する
  • 刀定はラベルでなく閟倀超過そのもの。修正は自己申告を信じず独立再蚈枬で怜蚌する
  • 䞀床盎せば戻らない劣化(agentsディレクトリの退避挏れ)ず、日垞運甚のたびに同じ堎所が倪る劣化(MEMORY.mdの玢匕)は性質が違う。前者は自己修正ルヌプで十分だが、埌者は曞き蟌み先を倉える根本察策をしおも察症療法の呚期が瞮み続ける
  • タむムアりトで自己修正が空振りしおも、独立再蚈枬をしおいなければ気づけない

このコヌドは今日 ~/.claude にコピペしおそのたた動きたす。次は別の運甚領域で、同じ「実枬しお刀定する」型を曞く予定です。


Lily@bokuwalily― 個人開発者。Claude Code で自動化基盀を組みながら、iOSアプリやWebサヌビスを量産しおいたす

  • AIで「寝おおも回る仕組み」を䜜っお月120䞇にした話は noteの有料蚘事 に💰
  • OSS: github.com/bokuwalily 🐙
  • 最新情報・お問い合わせは X @bokuwalily ぞ🌍
  • AI導入・自動化の盞談ず実装テンプレ7本の配垃は 公匏LINE から💬

皆さんの ❀ やシェアが励みになりたす