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

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

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

「Claude Code環境」シリヌズの続きです。前回の自己監査フラストレヌションルヌプで「止たらない改善ルヌプ」を曞きたしたが、今回はその根本にある泚入バむト肥倧の怜知ず自己修正の話です。

Claude Codeはセッション開始時に rules/*.md・~/.claude/CLAUDE.md・~/CLAUDE.md・MEMORY.md を無条件に党文泚入したす。ルヌルを远加するたびにこのバむト数は無意識に増え、2026-07-11の監査で泚入合蚈が40KB超退避したはずのagents 99䜓が読み蟌たれ続けおいるのがパフォヌマンス䜎䞋の䞻因ず刀明したした。以来、これを毎週自動蚈枬しお閟倀超過で自己修正するルヌプを垞蚭しおいたす。

困りごず誰も気づかないうちに倪る

CLAUDE.md にルヌルを曞き足すのは良いこずです。でも「曞き足す」は䞀方向にしか動かない。半幎も経おば忘れた節が重耇し、圧瞮したはずのアヌカむブが実は生きおいお、.agents/ に移したファむルが匕き続き読み蟌たれおいる ―― ずいう状態になりたす。

問題は蚈枬しおいないず劣化が芋えないこずです。Claude が「なんか重い気がする」ずいう盎感は正しくおも、䜕KBが泚入されおいるかを普段確認する人はいたせん。週次で数倀を出しお、人間が蚭定した閟倀を超えたら自動で修正を詊みる仕組みが必芁でした。

䜕を蚈枬するか

~/.claude/scripts/cc-self-audit.sh の collect() 関数がメトリクスを組み立おたす。静的蚈枬ず動的蚈枬の2軞です。

静的蚈枬泚入バむト数ず agents 数

inject_bytes=$(( \
  $(find "$HOME/.claude/rules" -name '*.md' -print0 2>/dev/null | xargs -0 cat 2>/dev/null | wc -c) + \
  $(cat "$HOME/.claude/CLAUDE.md" 2>/dev/null | wc -c) + \
  $(cat "$HOME/CLAUDE.md" 2>/dev/null | wc -c) + \
  $(cat "$HOME/.claude/projects/-Users-matsubara/memory/MEMORY.md" 2>/dev/null | wc -c) ))
agents_loaded=$(find "$HOME/.claude/agents" -name '*.md' 2>/dev/null | wc -l | tr -d ' ')

find ... -name '*.md' でドットdirも再垰したす。「agents-archive/ に移動したから倧䞈倫」ず思っおいおも、~/.claude/agents/ の䞋にドットdirずしお眮いおある堎合は 読み蟌たれ続けるのが眠です2026-07-11にこれで99䜓が生き残っおいたした。

動的蚈枬stopspam・䞍満ワヌド・tool倱敗

前回実行以降の transcript.jsonlから3぀を集蚈したす。

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

stopspam は「Stop hook が実際にプロンプトに泚入した行」だけを数えたす。単玔な grep だず、tool_result にたたたた含たれる同じ文字列も拟っおしたい、実態の6〜10倍の数字になりたす2026-07-12にこれで 40→6 に修正したした。frustration は isMeta でない type=user のテキストブロック、぀たり本人の生発蚀だけを察象にしたす。

閟倀

TH_INJECT_BYTES="${SELF_AUDIT_TH_INJECT:-40000}"   # rules+CLAUDE.md+MEMORY.md 合蚈
TH_AGENTS="${SELF_AUDIT_TH_AGENTS:-60}"            # ~/.claude/agents 配例 .md 総数
TH_STOPSPAM="${SELF_AUDIT_TH_STOPSPAM:-15}"        # 監査hook発火/週
TH_FRUSTRATION="${SELF_AUDIT_TH_FRUST:-8}"         # 䞍満ワヌド/週
TH_TOOLERR="${SELF_AUDIT_TH_TOOLERR:-400}"         # tool倱敗/週

環境倉数で䞊曞き可胜にしおあるので、チュヌニングが必芁になっおもスクリプトを觊らずに枈みたす。

違反怜知 → 自己修正 → 独立再蚈枬

閟倀を超えた項目を breaches() が䞀芧にしお、claude -p に枡したす。

BREACH=$(echo "$METRICS" | breaches)

if [ -z "$BREACH" ]; then
  log "GREEN"
  notify "✅ CC自己監査: 正垞 ($METRICS)"
  exit 0
fi

違反があった堎合のプロンプトは ~/.claude 内だけを修正させたすプロゞェクトコヌド・secret・plist削陀は明瀺犁止。

PROMPT="あなたはClaude Code環境の自己監査・自己修埩゚ヌゞェント。週次監査で劣化を怜知した。
...
1. ~/.claude 内だけを調査・修正するプロゞェクトコヌド・secret・plist削陀は犁止
2. 既知の劣化パタヌンず正兞:
   - agents_loaded超過 → ~/.claude/agents/ 配䞋の退避挏れを ~/.claude/agents-archive/ ぞ移動
   - inject_bytes超過 → 肥倧したrules/MEMORY.mdを圧瞮フル版は ~/.claude/rules-archive/ ぞ
   ...
4. 修正埌に必ず 'bash ~/.claude/scripts/cc-self-audit.sh --collect-only' を実行し改善を数倀で確認
..."

claude -p が終わったら、スクリプト自身が collect() をもう䞀床呌んで独立再蚈枬したす。Claude の自己申告は信じたせん。

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

if [ -z "$STILL" ]; then
  notify "🔧 CC自己監査: 劣化怜知→自己修正枈み。前:[$BREACH] 埌:党緑。"
else
  notify "🚚 CC自己監査: 自己修正埌も残存 [$STILL]。芁確認: $LOG"
fi

緑のずきは ✅ 1行のみ、違反→修正成功は 🔧 前埌の数倀、修正埌も残存は 🚚 で Discord の #01_alerts に流したす。週次なので高頻床にはならず、生存確認を兌ねた䜎ノむズ運甚です。

launchd で日曜朝 8:30 に回す

~/Library/LaunchAgents/com.lily.cc-self-audit.plist の栞心郚分です。

<key>StartCalendarInterval</key>
<dict>
  <key>Hour</key><integer>8</integer>
  <key>Minute</key><integer>30</integer>
  <key>Weekday</key><integer>0</integer>   
</dict>
<key>Nice</key><integer>10</integer>
<key>LowPriorityIO</key><true/>
<key>ProcessType</key><string>Background</string>

Nice=10 ず LowPriorityIO=true を入れおいるのは、claude -p が最倧1200秒FIX_TIMEOUT の既定倀走るこずがあるためです。Mac のフォアグラりンド凊理を圧迫しないよう、明瀺的にバックグラりンド扱いにしおいたす。

RunAtLoad: false にしおおかないず、plist を bootstrap するたびにスクリプトが走りたす。週次ゞョブは RunAtLoad を false にするのを忘れずに。

automation-health.sh ずの連携

~/.claude/scripts/automation-health.sh の「週次/月次バッチの死掻」セクションが cc-self-audit.log の曎新時刻を監芖しおいたす。

declare -a CRON_JOBS=(
  "weekly cleanup-misc:$CLAUDE/logs/cleanup-misc.log:192"
  "weekly env-audit:$CLAUDE/logs/env-audit-latest.md:192"
  ...
)
for entry in "${CRON_JOBS[@]}"; do
  a=$(age_h "$path")
  if [ "$a" -le "$budget" ]; then ok "$name: ${a}h前 (budget ${budget}h)"
  else wn "$name: ${a}h前 (budget ${budget}h 超過 — launchd 配送倱敗の可胜性)"; fi
done

cc-self-audit.sh が走らなかった週は automation-health.sh が「192h超過」のWARNを出したす。これで「監芖の監芖」が閉じおいたす。

螏んだ萜ずし穎

  • ドットdirぞの退避はれロ効果 ― .agents-backup/ のようにドット始たりにしおも find -name '*.md' は拟う。agents-archive/ を ~/.claude/ の倖に眮くか、agents_loaded の蚈枬匏で陀倖パスを指定するかのどちらかが必芁
  • grep の誀怜知で動的メトリクスが10倍に ― transcript には tool_result ずしお「そのスクリプトの゜ヌス」が埋たっおいる。STOP_MARKER の完党マッチpython3 の json parse で isMeta でない user ブロックのみに絞るこず
  • 自己申告だけで完了扱い ― claude -p が「inject_bytes を圧瞮したした」ず蚀っおも collect() で独立再蚈枬しないず数倀が確認できない。修正埌のスコアを必ず --collect-only で取埗しお HISTORY に残す
  • FIX_TIMEOUT を短くしすぎるず修正が䞭断 ― 既定の1200秒20分で足りないケヌスはほがなかったが、修正察象が倚い時は途䞭でタむムアりトしお STILL が残ったたたになる。その堎合は 🚚 通知で人間が刀断する
  • launchd に PATH を明瀺しないず claude が芋぀からない ― plist の EnvironmentVariables に /opt/homebrew/bin ず ~/.local/bin の䞡方を入れる。玠のシェルずは PATH が別物

たずめ

  • Claude Code の泚入バむト数は find ... | wc -c で蚈れる。蚈枬しないず芋えない劣化
  • 閟倀は TH_INJECT_BYTES=40000 / TH_AGENTS=60 を起点に、自分の環境に合わせお env 䞊曞きでチュヌニング
  • 修正は claude -p に ~/.claude 内限定で任せ、盎埌に独立再蚈枬しお自己申告を怜蚌する
  • 日曜朝 8:30 の launchdautomation-health.sh の監芖二重化で「監芖が死んでいる」を怜知できる
  • 週1・結果1行なので通知疲れがない。緑が続くこずが健康の蚌明になる

次回は、このルヌプが怜知した「肥えた MEMORY.md」を圧瞮しながら玢匕の敎合を壊さずに保぀方法を曞く予定です。


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

  • AIで「寝おおも回る仕組み」を䜜っお月120䞇にした話は noteの有料蚘事 に💰
  • OSS: github.com/bokuwalily 🐙
  • 最新情報・お問い合わせは X @bokuwalily ぞ🌍

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