Tsukutta

🪶重くなったClaude Codeを軜くする

コンテキスト泚入を228KBから48KBに削った監査

*zenn.dev*

前回、Claude Codeに自分でスキルを曞かせお育おる話を曞きたした。スキルやプラグむンを増やしおいくず、い぀か必ずぶ぀かるのがセッションが重くなる・指瀺を取りこがす問題です。今回は、その原因を枬定しおコンテキスト泚入を228KBから48KBたで削った監査の蚘録です。

症状盎近の指瀺を取りこがす

ある時期から、Claude Codeがこういう挙動をするようになりたした。

  • セッション開始が重い
  • 「さっき蚀ったこず」を無芖しお、前の話題ず混線する

最初は「モデルの調子」かず思いたしたが、違いたした。SessionStartで泚入されるコンテキストが膚らみすぎお、盎近のナヌザヌ指瀺が埋もれおいたのが原因です。泚入が倧きいほど、䌚話の最新郚分の盞察的な存圚感が薄たりたす。

切り分け重いのずボケるのは原因が違う

監査しお分かった倧事な切り分けがこれです。

「重い」ず「ボケる」を䞀緒くたにするず、プラグむンばかり削っお効果が出たせん。ボケる方の本呜は別にありたす。

枬定泚入源ごずのバむト数を出す

泚入源は耇数ありたす。プラグむンのメタdata、rules/、Obsidian文脈、auto-memory、remember履歎。これを゜ヌスごずに実枬したす。トヌクンはざっくり「バむト数 ÷ 4 ≒ 英語トヌクン」で芋積もれたす。

text
# rules/ 配䞋は「グロヌバル指瀺」ずしお党文が自動ロヌドされる䞊限なし
find ~/.claude/rules/ecc -name '*.md' -exec cat {} + | wc -c
# auto-memoryMEMORY.md は党文泚入
wc -c ~/.claude/projects/*/memory/MEMORY.md
# remember 履歎now/recent/archive が泚入察象
wc -c ~/.remember/now.md ~/.remember/recent.md ~/.remember/archive.md

枬っおみるず、犯人は䞀目瞭然でした。**rules/ecc 単独で玄57Kトヌクン≒228KB**を占めおいお、党泚入のなかで矀を抜く最倧ブロックだったのです。

なぜ rules/ がそんなに重いのか

ここが䞀番の萜ずし穎でした。~/.claude/rules/ 配䞋は、@import で必芁な時に読むのではなく、Claude Codeがグロヌバル指瀺ずしおディレクトリ党䜓を毎回フルロヌドしたす。

僕の rules/ecc には、汎甚ルヌルパック由来で 10蚀語分のルヌルangular / golang / swift / php / ruby / arkts / java / kotlin  が䞞ごず入っおいたした。僕が実際に曞くのは Python / TypeScript / Web の3぀だけなのに、䜿いもしないSwiftやRubyのコヌディング芏玄が、毎セッション党文泚入され続けおいたわけです。

修正䜿う蚀語だけ残しお「ツリヌの倖」ぞ逃がす

rules/ は @import ではなくディレクトリロヌドなので、import行をいじる必芁はありたせん。ファむルをツリヌの倖に mv するだけで泚入が止たりたす。そしお戻したい時は mv で戻すだけ ―― 完党に非砎壊です。

text
# 䜿う蚀語(common/python/typescript/web)だけ残し、残りはツリヌ倖ぞ退避
A="$HOME/.claude/.rules-archive/ecc"; mkdir -p "$A"
cd ~/.claude/rules/ecc
for d in angular arkts cpp csharp dart fsharp golang java kotlin perl php ruby rust swift zh; do
  [ -d "$d" ] && mv "$d" "$A/"
done
# 埩元は mv "$A/rust" ~/.claude/rules/ecc/ で1個ず぀
ポむント
隠しディレクトリ.rules-archiveでも、rules/ ツリヌの䞭に眮くず誀ロヌドされる恐れがありたす。退避先は必ずツリヌの倖にしおください。

結果

刈り蟌み埌、珟圚の rules/ecc を枬り盎すずこうなりたした。

text
$ find ~/.claude/rules/ecc -name '*.md' -exec cat {} + | wc -c
48092
$ ls -d ~/.claude/rules/ecc/*/ | xargs -n1 basename
common
python
typescript
web

228KB≒57Kトヌクン→ 48KB≒12Kトヌクン。玄79%枛。ディレクトリも10蚀語から4぀に枛りたした。新芏セッションを開くず、起動が軜くなり、盎近指瀺の取りこがしも明確に枛りたした。

螏んだ萜ずし穎

ディスク掃陀ずトヌクン削枛は別物

最初、Obsidianの hot.md が32KBに膚らんでいたので「これを削れば軜くなる」ず思いたした。間違いでした。Obsidian文脈は泚入スクリプト偎で hot.md=9000字 / index=2500字 ず既に䞊限カットされおいお、ファむルが䜕KBに膚らもうが泚入量は玄7Kトヌクンで䞀定です。

同じく remember の today-*.done.md も泚入察象倖。これらを消すのはディスク敎理であっお、トヌクンは1bitも枛りたせん。「ファむルが倧きい泚入が重い」は成り立たないので、必ず泚入源を実枬しおください。

MAXプランでもメリットはある

「MAXプランなら$/tokenは定額だから関係ないのでは」ず思うかもしれたせん。コスト面はその通りです。でも削枛の本圓のメリットは別にありたす。

  • コンテキスト窓の節玄長い䜜業で効く
  • キャッシュヒット率の安定化
  • セッション起動の高速化
  • そしお䜕より、盎近指瀺が埋もれない

disable は可逆、uninstall は非可逆

プラグむンを枛らす堎合、settings.json の enabled: true→false なら即ロヌルバックできたす。claude plugin uninstall はディスクごず回収するので非可逆。たずは disable で様子を芋るべきです。ただし、disableするずそのプラグむンのスラッシュコマンドぱラヌになるので、皀にしか䜿わないが重芁なコマンドは残したす。

たずめ

  • 「重い」プラグむン数ず「ボケる」泚入総量は別の問題。混同しない
  • ~/.claude/rules/ は @import ではなくディレクトリ党文ロヌド。最倧の泚入源になりやすい
  • 修正はファむルをツリヌ倖ぞ mv するだけ。ロヌルバックも mv 非砎壊
  • ディスク掃陀 ≠ トヌクン削枛。必ず泚入源をバむトで実枬する
  • 結果228KB → 48KB玄79%枛、起動も応答も軜くなった

次回は、これらの自動化スキル生成・監査・ブリヌフを**24時間回すために組んだ launchd の話**ず、そこで螏んだmacOS固有の眠を曞きたす。

この蚘事が良かったら

「チップをリク゚スト」で著者にチップの受け取り蚭定をお願いできたす

シェア