Claude Codeのmath-proofプラグインでsoloとsiegeを使い分ける
math-proofは研究レベルの数学問題を解く公式プラグインです。1回の長い応答で進めるsoloと、数時間サブエージェントを回すsiegeの違い、導入設定、使用量の見積もり方まで扱います。
math-proofは、研究レベルの難しい数学問題を1問ずつ解かせるClaude Codeの公式プラグインです。入口は /math-proof:solo と /math-proof:siege の2つで、どちらも最後に自己完結した proof.md を書き出します。違いは時間と使用量の桁です。soloは自分のセッションで進める軽い方、siegeは数時間かけてサブエージェントを回す重い方です。
README自身が「まずsoloを試す」と書いています。この記事では、2つをどう使い分けるか、導入時に書く設定の意味、siegeの使用量をどう見積もるかを順に扱います。
soloとsiegeはどこが違うのか
先に違いを表にします。
| 観点 | /math-proof:solo | /math-proof:siege |
|---|---|---|
| 解く主体 | /math-proof:solo開いているセッションのClaude自身 | /math-proof:siegeサブエージェント(judgeとworker) |
| 進め方 | /math-proof:solo1本の長い会話。途中経過をnotes.mdに書き足す | /math-proof:siegeラウンドを繰り返し、judgeが台帳を更新 |
| かかる時間 | /math-proof:solo1ターン完結に近い | /math-proof:siege数時間 |
| 出力先 | /math-proof:solo./math-proof-solo/ | /math-proof:siege./math-proof-run/ |
| 追加要件 | /math-proof:soloなし | /math-proof:siegePATHにPython 3.7以降 |
| READMEの位置付け | /math-proof:solo軽い方。最初に試す | /math-proof:siege重い方。サブエージェント数十回以上 |
共通点は3つあります。問題文は1問だけ渡すこと。作業ファイルは実行フォルダに集めること。実行中はClaude Codeのweb系ツールが無効になること(SKILL.mdの disallowed-tools が WebSearch, WebFetch, AskUserQuestion です)。調べ物をさせる道具ではなく、手元の推論だけで詰めるための道具だとわかります。
どちらを先に回すか
solo
セッションの中で完結します。notes.mdに途中結果が残るので、出力上限で応答が切れても書いた分は失われません。
siege
judgeが問いを作り、独立したworkerが並列に答えます。台帳でPROVED・REFUTED・OPENを管理し、完全な証明が出ると別のworker2人が1行ずつ検査します。
導入と最初に書く設定
導入はプラグイン導入コマンド1行です。READMEは、Claude Code 2.1.280以降が必要としています。
/plugin install math-proof@claude-plugins-officialプラグインの入れ方全般はプラグイン完全ガイドにまとめています。
READMEはもう1つ、~/.claude/settings.json に env ブロックを足すよう求めています。ディレクトリ単位で限定したいときは、実行するディレクトリの .claude/settings.json に書きます。
{
"env": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "128000",
"CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "1",
"CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS": "14400000"
}
}3行の意味は次のとおりです。
env 3行の役割
CLAUDE_CODE_MAX_OUTPUT_TOKENS
長い応答を許すための値です。仕組みは出力トークン上限の記事で扱っています。
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS
バックグラウンドタスクを切り、サブエージェントをフォアグラウンドで動かします。siegeのSKILL.mdも「サブエージェントをバックグラウンドで走らせない」と定めており、波ごとに全workerを1つのメッセージでまとめて起動します。
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS
無言のworkerが切られるまでの猶予を4時間(14400000ミリ秒)にします。長く考えるworkerを途中で打ち切らないための値です。
READMEは、この3行が同じ設定ファイルを読む全セッションに効くと注意しています。使い終えたら削除します。ディレクトリ側の .claude/settings.json に置けば、影響をその場所に閉じ込められます。
solo: 1回の長い会話で進める
作業用に空のディレクトリを1つ用意し、問題ごとに分けます。READMEは「1問につき1ディレクトリ、同時に走らせるのは1回」と書いています。
mkdir proof-1 && cd proof-1
claude --model claude-opus-5-5 --effort high起動後、問題文をそのまま渡します。長い問題はファイルパスでも渡せます。
/math-proof:solo problem.mdSKILL.mdによると、soloが最初にやることは3つです。問題を DIR/problem.md に写す。計画を DIR/notes.md に書く。最後に自己完結した DIR/proof.md を書く。DIR の既定は ./math-proof-solo で、DIR=path を先頭に付ければ変えられます。
注目すべきはnotes.mdの扱いです。SKILL.mdは、1回の応答の出力枠には思考も含まれ、難問にはまるで足りないと説明しています。そこで「応答の早い段階で計画と今取り組む命題を書く」「中間結果が出るたびに追記する」「切れたらnotes.mdを読み直して続きから」を指示しています。書かれていない推論は消えるものとして扱う設計です。
途中で止まったら
エラー、ターミナルを閉じた、使用量の上限に当たった、Ctrl-Cで止めた。どの場合も、同じディレクトリで同じ /math-proof:solo … の行をもう一度渡します。自由な文章で「続けて」と頼むのは勧められていません。スキルの指示と権限が読み込み直されないからです。notes.mdがあれば、そこから再開します。proof.mdまで完成していれば「完了済み」と報告して終わります。
siege: ラウンドを回して証明を詰める
siegeでは、開いているセッションは数学をしません。進行役に徹し、毎ラウンド次の流れを繰り返します。
siegeの1ラウンド
- 1
judgeが問いを書く
自己完結した質問をいくつか書きます。ラウンド4より前は最大4問、ラウンド4以降は最大10問です。
- 2
workerが並列に答える
各workerは、自分に渡された質問と問題文しか見ません。毎回まっさらなサブエージェントです。
- 3
台帳を更新する
judgeが答えを読み、要約を書き直し、主張をPROVED・REFUTED・OPENに振り分けます。
- 4
完全な証明が出たら検査する
目標の完全な証明または反証が出たら、別のworker2人がそのテキストを1行ずつ検査します。両方を通ってはじめてjudgeが結論を出せます。
序盤で届かなければ、後半のラウンドでworkerの数が増えます。SKILL.mdでは、ラウンド4以降は上限が10問に上がり、workerが高effort用のものに切り替わり、そのほとんどが「証明に欠けている1つの命題」を狙います。ラウンドが尽きたあとは、judgeが proof.md を書き、workerが検査し、judgeが確定させます。proof.md にはStatus節があり、何が証明され何が未証明かを書く決まりです。
進み具合の見方
実行中は、実行フォルダの state.md に現在のラウンドが出ます。judgeがより強い命題を新しい目標に据えたときは、それまでに証明できた結果が result-so-far.md にコピーされます。途中で止めても、そこまでの成果を手に取れます。
設定の上書き
問題文の前に NAME=value を並べると、siegeの設定を変えられます。SKILL.mdが受け付ける名前は次のとおりです。
| 名前 | 既定値 | 意味 |
|---|---|---|
MAX_ROUNDS | 既定値14 | 意味ラウンド数の上限 |
MIN_ROUNDS | 既定値4 | 意味judgeが自由に結論を出せる最初のラウンド |
ESC_ROUND | 既定値4 | 意味上限が引き上がりdeep workerに切り替わるラウンド |
WAVE | 既定値4 | 意味ESC_ROUNDより前の1ラウンドの質問数 |
WAVE_DEEP | 既定値10 | 意味ESC_ROUND以降の1ラウンドの質問数 |
REFINE_STEPS | 既定値2 | 意味後処理の推敲回数 |
MAX_COMMIT | 既定値9 | 意味後処理で追加する通常の確認問 |
これらに加えて、実行フォルダを変える DIR=path も使えます。例えば MAX_ROUNDS=8 を付ければ、READMEの例のとおり8ラウンドで打ち切れます。表にない名前を大文字で書くと、スキルは設定違いとして止まります。n=3 のような数式は設定として扱われません。
siegeの使用量はどう見積もるか
READMEの説明は「サブエージェント数十回、14ラウンド全部回れば100回をはるかに超える」です。この数字は、既定値から概算で裏付けられます。
- ラウンド1〜3は最大4問で、合計12問
- ラウンド4〜14は最大10問で、11ラウンド×10問=110問
- workerだけで最大122回。ここに毎ラウンドのjudge、検査、後処理の呼び出しが加わる
上の計算は既定値から出した上限の目安で、実際の回数は途中で結論が出たかどうかで大きく変わります。MIN_ROUNDSの4ラウンドに届かなければ結論は出ませんが、証明が2人の検査を通れば、それ以降は早く終わる余地があります。
READMEが示す見積もりと上限の掛け方は、課金形態で分かれます。
課金形態別の備え
サブスクリプション
開始前に
/usageを確認します。READMEの指示です。途中で上限に当たれば止まりますが、同じ行をもう一度渡すと再開できます。APIキー
無人実行の
claude -pに--max-budget-usdを付けると、その金額に達した時点で止まります。同じコマンドをもう一度渡せば再開します。
--max-budget-usd の挙動は専用記事にあります。
無人で回すときの権限と安全性
通常の権限モードでは、ファイルの書き込みと、siegeのjudgeが実行するシェルコマンド(短いPythonの検査とファイルのコピー)に承認を求められます。READMEは、離れられるなら無人用の形を使うよう案内しています。
claude -p "/math-proof:siege problem.md" --model claude-opus-5-5 \
--effort high --dangerously-skip-permissionsただし、READMEは注意を添えています。siegeのjudgeは、モデルが書いたPythonをシェルツール経由であなたのマシンで実行します。--dangerously-skip-permissions は、使い捨てのコンテナかVMで、root以外のユーザーとして使う前提です。そうでなければ、コマンドを手で承認します。
SKILL.mdのallowed-toolsも見ておくと理解が深まります。siegeはPythonスクリプト(ledger.py)に加え、mkdir・cp・mv・cat・grep などに限って実行を許しています。soloは mkdir・cp・cmp だけです。
結果の読み方: proof.mdは自己申告
最後の落とし穴がここです。READMEは、proof.md はモデル自身の説明であり、文献から引いた結果は記憶に基づく引用だと断っています。批判的に読むよう求めています。
siegeの検査は同じモデルのworkerが行うので、外部の検証器の代わりにはなりません。Status節が「証明済み」と言っていても、重要な補題は自分の目か形式検証で確認してください。Statusに書かれた「未証明」の部分は、次の手がかりとして使えます。
math-olympiadプラグインとの違い
名前の近いプラグインに、競技数学向けのmath-olympiadプラグインがあります。こちらは「解いた本人とは別の検証者に攻撃させる」ことで誤答を減らす設計で、IMOやPutnamのような競技問題を想定しています。
math-proofのREADMEは、対象を「研究レベルの難問」としています。検証の置き方も違います。siegeは複数のworkerとjudgeで台帳を回して粘り、soloは単一のセッションで書き溜めながら進めます。どちらも、最後は自己完結した proof.md に落とします。
使い分けの目安
どちらを回すか
- Qsoloをもう試しましたか?答えがいいえのとき答えがはい
まず
/math-proof:soloを回します。READMEもsoloを先に試すよう勧めています。 - Qsoloのproof.mdに、未解決の部分が残りましたか?答えがいいえのとき答えがはい
Statusが証明済みなら、そのまま結果を読みます。siegeに回す必要はありません。
siegeを回す前に確認すること
Statusや開いたままの部分から足りない命題を絞ったうえで、/usage の残りか --max-budget-usd、python3 または python がPATHにあること、権限承認に付き合えること。
soloは問題を見極める一次試験、siegeは時間と使用量を投じて詰める本番、という役割分担で使うと無駄が出にくくなります。同じ問題をsiegeで回し直すときは、別の実行フォルダに DIR= で振り分けると、前回の結果を壊さずに済みます。
まとめ
math-proofは、同じ問題に対して軽い1本道(solo)と重い多段構成(siege)の2つの入口を用意したプラグインです。soloは書きながら考えるのでコストが読みやすく、siegeは並列workerと台帳で粘りますが、使用量は桁違いに増えます。どちらも proof.md は自己申告として読み、siegeを回す前には /usage かAPIの予算上限を決めておくと安心です。