Claude Codeの使用量超過を2回やらかした話
はじめに
claude codeで開発を進めるようになって今回2回目の使用量制限になりました。
後から振り返ると当たり前だなと思いましたが、備忘録としてなぜそうなったかと今後の対策を考えました。
ただしMCPとかskillとかヘビーに使っているユーザー対象ではなく、初心者である私が今のところ扱ってる範囲での話です。
あくまで個人の感覚なのでご了承ください。
事例1: base64とclaude codeの仕様
base64は画像やファイル等をアルファベット、数字、記号だけにエンコードする方式です。
主にWeb開発やメールの添付ファイルのように、少ない容量しか保持できない通信プロトコル(例: MIME)でテキスト変換して小分けに送ることで、大きな容量を持つファイルを送ることができます。
ちょっと話が逸れますがデータは基本0と1で出来ています。分かりやすい例で言えばモールス信号のトン・ツーです。通信ケーブルには光や電気の技術が用いられますが、1秒間に数百億みたいな速度でオンオフしてデータを通信しています。ただしそれでも0か1かでしかデータを送っていないため画像データをそのままドンとは送れないわけです。そこでbase64のように文字列変換するとさらに0,1に変換できるため通信ケーブルにデータを飛ばせるようになるわけです。
この前提知識を持った上でここから本編です。
私はClaudeにとあることを依頼しました。
私「身内向けにHowTo記事を作りたいのでDiscordで配布できる形にhtml形式でデータを配布したい」
AI「画像データについては画像サーバーが無いならbase64に変換して表示する方式にしますね」
私「お、ええやん。サーバー準備しなくていいし。後はまあ軽微な修正依頼を2回くらいすれば完成だね」プロンプトポチポチ
私「あれ…なんか時間かかるな。サーバー混んでたりするんかな?」
AI「(-ω-)zzz」
私「えっ」
軽微な修正依頼なのにやたら時間かかるなって思ったら5時間使用量を超過していました。これがclaudeと契約して2日目の出来事でした。あくまで予想ではありますがこんなことが起こったはずです。
- claude codeは仕様上、続けてプロンプトを打つと以前の会話を読み直した上でプロンプトを遂行する
- htmlファイルがdiff管理をしていない1枚ファイルだったため、修正の度にbase64を含む全ての行を参照していた
- 文字の羅列であるbase64も全て律儀に読んだClaudeは頭を使いすぎて疲れて寝ちゃった
今考えると当たり前のことなのですが当時は初めてAI課金してその実力の高さに舞い上がっちゃったのが原因でしたね。お恥ずかしい限りです。
事例2: Opusの使いすぎと同一チャットの連続使用
事例1と違ってこっちは単純な話でPro版を契約してる中だと、Opusは複雑なタスクに割り振り基本的にSonnetで行うべきです。
ただこの時は後は寝るだけだしお試しにどこまでOpusで使えるかなと、1つのミニアプリをステップ形式で実装したらどのタイミングで使用量超過するかなと思って調査しました。
作ったのはcloudflareの静的ページ + HonoでDiscordのbotを作り、とあるAPIを叩いてその結果をDiscordのチャット欄に出力するという単純な機能を持ったミニアプリでした。
結果としては上に書いた1機能は出力できましたが最終的には使用量超過を起こしました。
ただこの時、同一チャット内で実装を進めてしまっており/btwや/clearを適切に使わなかったためすぐに限界が来たのだと思いました。
使用量超過を起こさない個人でできる対策
- 複雑なタスク以外では基本Sonnet
- Opusは要所要所で意図的に使う
- 曖昧なプロンプトは設計も曖昧なのでまずは明確なプロンプトを打てるように設計し直す
- どの部分を編集したか分かるようにgit管理をする
- 同一チャット内で調べ物とかタスクに関わらないのは/btwで一時チャットする
- 1タスクの粒度を少なくして1タスクが終わったら/clearする。そのためにCLAUDE.mdやREADME.mdはミニアプリでもしっかり作る
まとめ
今のところはこんな感じです。将来的にMCPサーバーとかskillとかAgentとかゴリゴリに使う時は他の色んな対策を試すので、その中で効果的だなと思ったものはまたピックアップしたいです。
その時は多分新しい記事を作るかな。
そんな感じで。