脱SuperClaude。でも良いとこ真似て、PJ特化したサブエージェントを作ってみるの巻
多分同じ悩みの人いるよね
- ClaudeCodeのコンテキストウィンドウちっちゃい🥹
- SuperClaude、高機能だけど使いこなせていなそう😩
- サブエージェント、カスタムスラッシュコマンド、あればいいけど作るの面倒そう👎
きっかけとモチベーション
Claude Code Sonnet4.5を今使用していますが、最近悩みがあります。
それは何かというと、
コンテキストがデフォルトで圧迫されすぎているということです🤯🤯🤯
調べたところ、1Mのコンテキストウィンドウが使えるモデルがあるじゃないか!
(/modelと打っても自分は出てきませんでした。)
それじゃ仕方ないと思い、実際に中身を見てみると、
50%以上がデフォルトで埋まってしまっています。
これでも不要なMCPをdisableにしたあとなので、その前は60%前後...
Auto Compactの確保枠の仕組みが入ったのと、MCPの設定もありますが、
見た感じSuperClaudeスーパークローの事前定義ファイルが非常に多いことが分かります👀
知った当時は
「なんと!こんな色々できて導入も簡単じゃないか!」ということで脳死で入れていました。
最近使っていたものはSuperClaudeを使うと確かに少し頭が良くなったような気がしますが、
そもそも既存だと汎用的なスクリプトが書かれている
つまり無駄なコンテキスト圧迫があること。
結局難しいタスクとかは特定のファイルを読み込ませて、直接それを参照してもらう方が
うまいこと出力してくれたりというシーンが多くなってきました😅
かと言ってイチからカスタムサブエージェントとか作るのちょっと面倒だな
と思ってました。
...と思ってたのですが。
それであれば、SuperClaudeインスパイアのサブエージェントと
カスタムコマンドをAIに指示して作らせてしまおう。
汎用的な定義ファイルでコンテキストを圧迫する
SuperClaudeをデトックスしてしまえばいいのでは?
と思い立ったのが、今回の記事のきっかけです。
もちろん、定義ファイル以外の仕組みで色々効率化されたSuperClaudeを使えなくなるのは
なにかデメリットはあるかもしれませんが、今は何より、
「コンテキストに余裕があるぜ...😈」
な状態を作ることがAI駆動開発のメンタル維持には大事かなと思ったので、チャレンジです。
もし入ってない人は以下の方の記事などを読んで一回インストールしてからやるといいかなと。
目指すゴール
以下を満たすものを作ることが前提です。
- タスクの種別(フロント?バックエンド?テスト?)ごとに呼び出すエージェントを分離してコンテキストを節約
- serenaなどを適切に参照するようにして、参照時のオーバーフェッチ抑制
- Superclaudeと同じ使い心地(カスタムコマンドなど)
- /contextsで初期に表示されるコンテキストの削減 (最重要)
やったこと
- 呼び出す必要のないMCPの個別制御
- これは/mcpから個別に制御可能
- 仕様書を元に、Superclaudeと同じようなサブエージェントとカスタムコマンド生成
- githubにフォーマット置いときます。
- これをコピーして、以下のように打ち込めば、最低限のSuperClaudeインスパイアサブエージェントは作れます。
/sc:implement .claude/HOW_TO_CREATE_PROJECT_SPECIFIC_SUPERCLAUDE.mdの中に書かれていることを実行して欲しいので、実装計画を立ててください。
- 必要があればカスタムしてください。
- コンテキスト節約のためのカスタムコマンド内の記載追加
- githubにフォーマット置いときます。
- これをコピーして、以下のように打ち込めば、さっき作ったagents配下のファイルに追記されます。
/sc:implement .claude/HOW_TO_CREATE_PROJECT_SPECIFIC_CONTEXT.mdの中に書かれていることを実行して欲しいので、実装計画を立ててください。
- 必要があればカスタムしてください。
- 特に参照ドキュメントの部分は自分がdoc/配下に管理しているので、ここは各々の適切なドキュメントを参照させてください
- 全体的に英語表記に(日本語よりcontext量を抑えられる)
- e.g.
CLAUDE.mdを英語表記に変換してください
- e.g.
どこまで削減できたか?
🚀 約13%の削減!
実際の性能やコンテキストがどこまで長持ちするか、
SuperClaudeを削除する前後で、いくつかタスクを依頼して検証してみました。
1回目は大雑把に
/sc:analyze このプロジェクトのパフォーマンス改善ができる箇所があるか調査
というコマンドで実行してみました。
(新しい方は/cc:analyze で同じ内容を入力)
2回目にもう少し詳細をってことで
/sc:analyze 別観点でこのプロジェクトのパフォーマンス改善ができる箇所があるか調査
を依頼。
3回目に同じのを実行したら、どちらも前回までのレポートを見ろみたいになったので
4回目は
/sc:analyze doc/配下のルール逸脱しているファイルがないか調査
と依頼してみました。
5回目は800行くらいあるファイルがあったので、
/sc:improve src/features/reserves/components/reserve_form.tsx
が巨大なファイルになっているため適切な粒度に分割するようにリファクタリングしたいです。
と丸投げ依頼してみました。
最適化前の方
1回目
2回目
4回目(ほとんど調査していない)
105%ってw
5回目(新しいセッションでの再開を促される)
ここで「いいから続けて」と入力したら
「Compacting conversation…」
タスク完遂後のコンテキストは以下
最適化後の方
1回目
2回目
4回目(調査しっかりした)
5回目(修正方法の調査までは可能)
実装を進めた3/8あたりで
「Compacting conversation…」が走る。
タスク完遂後のコンテキストは以下
結果的に
すごい大雑把な依頼だと1.5往復分くらいは余裕ができた。
多分、細かいタスク依頼ならもう少し余裕がありそう。
やはりSuperClaudeのコンテキスト圧縮の機能があるからか、
少しmessageのtokenは少なくなっている?みたいですが、
ただ、全体の容量はやはり減った分余裕がありますね。
顕著と言えるほどではなさそうです。
内容によっては普通に圧迫してきます。
出力された内容は、観点は異なりますが、いずれも改善が必要な出力を出していたり、
タスク完遂時にエラーなく終えてくれたので、結論、SuperClaudeに依存しなくても、
- CLAUDE.mdの整備
- SuperClaudeの中身を参照して以下のものを作らせる
- サブエージェント
- カスタムコマンド
- serenaとかMCPを適切に設定しておく
をしておけば、デトックス前後でアウトプットはそこまで違和感感じなそうでした。
あと、実現したいこと
コンテキストが100%を超えた時点で、一旦作業を中断して、compactが走る前に
引継書として、handover_report.mdをタスクファイル形式で生成する。
再開後にhandover_report.mdがある場合はそれを参照する。
みたいなことができれば、auto-compact二ヒヤヒヤしなくていいのにな。
と思っています。
引き続き開拓してみます。
Discussion