auto-review-loop-minimax について
MiniMax-M3を使い、外部レビュー、修正の実装、再レビューを繰り返して研究を改善するスキルです。肯定的な評価、または最大4ラウンドで終了し、中断した処理を再開できます。
主な機能
- 01レビューと修正の反復
- 02MiniMax-M3による外部評価
- 03スコアと判定による終了
- 04ラウンド記録と状態復元
- 05実験と結果の追跡
活用シーン
- 01投稿前の研究内容の改善
- 02査読指摘に基づく修正の実装
- 03中断したレビューサイクルの再開
MCP 対応
利用可能な場合は MiniMax MCP ツールで外部レビューを実行し、curl による MiniMax API 呼び出しにも切り替えられます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill auto-review-loop-minimaxインストール後、Claude Code で/auto-review-loop-minimaxを入力して読み込まれたか確認します。
詳細
自動レビュー・ループ(MiniMax 版):自律的な研究改善
🔒 このスキルを
/loop、/schedule、またはCronCreateでラップしないでください。
/auto-review-loopと同様に、すでに内部でループ(レビュー → 修正 → 再レビュー)し、各ラウンドの前ラウンドの要約を次のレビュー用プロンプトに渡しています(バックエンドはスレッドを共有せず、ラウンドごとに状態を保持しない API 呼び出しです)。外部タイマーを使うと、実行のたびに最初からやり直し、蓄積したコンテキストが失われ、成果物の変更ではなく実時間を基準に判定が実行されます。新しいシグナルはゼロなのに、トークンコストは全額かかります。判定ではなく、判定に先立つ外部の待機をスケジュールしてください。詳しくはshared-references/external-cadence.mdを参照してください。
外部レビュアーが肯定的な評価を出すか、MAX_ROUNDS に達するまで、自律的に反復します:レビュー → 修正を実装 → 再レビュー。
コンテキスト:$ARGUMENTS
定数
- MAX_ROUNDS = 4
- POSITIVE_THRESHOLD:スコア >= 6/10 かつ verdict ∈ {"ready", "almost"} — 以下の実際の STOP CONDITION と一致するよう、両方を満たす必要があります。verdict の語彙は {"ready", "almost", "not ready"} です。(以前の記述では
orが使われ、古い verdict の一覧が記載されていましたが、AND形式が正です。) - REVIEW_DOC:
review-stage/AUTO_REVIEW.md(累積ログ)(旧プロジェクトでは./AUTO_REVIEW.mdにフォールバックします) - REVIEWER_MODEL =
MiniMax-M3— MiniMax API 経由で使用するモデル
API の設定
このスキルでは、外部レビューに MiniMax API を使用します。次の 2 つの方法がサポートされています。
方法 1:MCP ツール(優先)
mcp__minimax-chat__minimax_chat が利用可能な場合は、これを使用します:
mcp__minimax-chat__minimax_chat:
prompt: |
[Review prompt content]
model: "MiniMax-M3"
system: "You are a senior machine learning researcher..."
方法 2:curl(フォールバック)
MCP が利用できない場合は、curl を直接使用します:
curl -s "https://api.minimax.io/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MINIMAX_API_KEY" \
-d '{
"model": "MiniMax-M3",
"messages": [
{"role": "system", "content": "You are a senior ML researcher..."},
{"role": "user", "content": "[Review prompt]"}
],
"max_tokens": 4096
}'
API キー:~/.claude/settings.json の env.MINIMAX_API_KEY、または環境変数から読み取ります。
Codex MCP ではなく MiniMax を使う理由:Codex CLI は OpenAI の Responses API(/v1/responses)を使用しており、サードパーティープロバイダーには対応していません。参照先:https://github.com/openai/codex/discussions/7782
状態の永続化(コンパクト化からの復旧)
長時間実行するループでは、コンテキストウィンドウの上限に達し、自動的にコンパクト化されることがあります。この場合に備えて、各ラウンドの後に状態を review-stage/REVIEW_STATE.json に保存します:
{
"round": 2,
"status": "in_progress",
"last_score": 5.0,
"last_verdict": "not ready",
"pending_experiments": ["screen_name_1"],
"timestamp": "2026-03-13T21:00:00"
}
各 Phase E の終了時(ラウンドの記録後)にこのファイルを書き込みます。毎回上書きしてください。必要なのは最新の状態だけです。
完了時(肯定的な評価を得た場合、または最大ラウンド数に達した場合)は、今後の呼び出しで完了済みのループを誤って再開しないよう、"status": "completed" を設定します。
ワークフロー
初期化
review-stage/REVIEW_STATE.jsonの有無を確認します(見つからない場合は旧パスの./REVIEW_STATE.jsonにフォールバックします)。- どちらのパスにも存在しない場合:新規開始(通常のケース)
- 存在し、
statusが"completed"の場合:新規開始(前回のループは正常に終了しています) - 存在し、
statusが"in_progress"で、timestampが 24 時間より前の場合:新規開始(中断または放棄された実行の古い状態です。ファイルを削除して最初から開始します) - 存在し、
statusが"in_progress"で、timestampが 24 時間以内の場合:再開- 状態ファイルを読み取り、
round、last_score、pending_experimentsを復元します review-stage/AUTO_REVIEW.mdを読み取り、前のラウンドの完全なコンテキストを復元します(./AUTO_REVIEW.mdにフォールバックします)pending_experimentsが空でない場合は、完了しているか確認します(例:画面セッションを確認します)- 次のラウンドから再開します(round = 保存された round + 1)
- 次のように記録します:"コンテキストのコンパクト化から復旧しました。Round N から再開します。"
- 状態ファイルを読み取り、
- プロジェクトの説明文書、メモリファイル、過去のレビュー文書を読みます
- 最近の実験結果を読みます(出力ディレクトリやログを確認します)
- 過去のレビューから、現在の弱点と未完了の TODO を特定します
- ラウンドカウンターを 1 に初期化します(状態ファイルから復旧した場合を除きます)
- ヘッダーとタイムスタンプを含めて
review-stage/AUTO_REVIEW.mdを作成または更新します
ループ(MAX_ROUNDS まで繰り返す)
フェーズ A:レビュー
外部レビュアーに包括的なコンテキストを送信します。
まず MCP が利用可能か確認してください。次に適切な方法を使用します。
MCP が利用可能な場合(優先):
Use mcp__minimax-chat__minimax_chat tool with:
- system: "You are a senior machine learning researcher serving as a reviewer for top-tier conferences like NeurIPS, ICML, and ICLR. Provide rigorous, constructive feedback."
- prompt: [Full review prompt with context]
- model: "MiniMax-M3"
MCP が利用できない場合(フォールバック):
curl -s "https://api.minimax.io/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MINIMAX_API_KEY" \
-d '{
"model": "MiniMax-M3",
"messages": [
{
"role": "system",
"content": "You are a senior machine learning researcher serving as a reviewer for top-tier conferences like NeurIPS, ICML, and ICLR. Provide rigorous, constructive feedback."
},
{
"role": "user",
"content": "[Round N/MAX_ROUNDS of autonomous review loop]\n\n[Full research context: claims, methods, results, known weaknesses]\n[Changes since last round, if any]\n[For round 2+: Summary of previous review feedback and what was addressed]\n\nPlease act as a senior ML reviewer (NeurIPS/ICML level).\n\n1. Score this work 1-10 for a top venue\n2. List remaining critical weaknesses (ranked by severity)\n3. For each weakness, specify the MINIMUM fix (experiment, analysis, or reframing)\n4. State clearly: is this READY for submission? Yes/No/Almost\n\nBe brutally honest. If the work is ready, say so clearly."
}
],
"max_tokens": 4096
}'
注意:各ラウンドは独立した API 呼び出しです。ラウンド 2 以降では、過去のレビューと変更の要約をプロンプト自体に含めてください。
フェーズ B:評価の解析
重要: 外部レビュアーからの完全な生の応答をそのまま保存してください(フェーズ E で使うため、変数に格納します)。破棄したり要約したりしないでください。生のテキストが一次記録です。
次に、構造化フィールドを抽出します。
- スコア(数値、1〜10)
- 判定(「ready」/「almost」/「not ready」)
- 対応項目(修正内容の優先順位付きリスト)
停止条件:スコアが 6 以上、かつ判定が {"ready", "almost"} に含まれる場合(一致するのは完全一致のみ。「not ready」は対象外です)、ループを停止し、最終状態を記録します。
フェーズ C:修正の実施(停止しない場合)
各対応項目について(優先度の高い順に):
- コードの変更:実験スクリプト、モデルコード、解析スクリプトを作成・変更します
- 実験の実行:SSH と screen/tmux を使用して GPU サーバーにデプロイします
- 解析:評価を実行し、結果を収集して、図表を更新します
- ドキュメント:プロジェクトのメモとレビュー文書を更新します
優先順位のルール:
- 過剰な計算リソースを必要とする修正はスキップし、手動でのフォローアップ事項として記録します
- 利用できない外部データやモデルを必要とする修正はスキップします
- どちらでも懸念に対応できる場合は、新しい実験よりも再解釈や解析を優先します
- 指標の追加は必ず実施します(低コストで効果が大きいため)
フェーズ D:結果を待つ
実験を開始した場合:
- リモートセッションを監視し、完了を確認します
- 出力ファイルとログから結果を収集します
フェーズ E:ラウンドの記録
review-stage/AUTO_REVIEW.md に追記します。
## Round N (timestamp)
### Assessment (Summary)
- Score: X/10
- Verdict: [ready/almost/not ready]
- Key criticisms: [bullet list]
### Reviewer Raw Response
<details>
<summary>Click to expand full reviewer response</summary>
[Paste the COMPLETE raw response from the external reviewer here — verbatim, unedited.
This is the authoritative record. Do NOT truncate or paraphrase.]
</details>
### Actions Taken
- [what was implemented/changed]
### Results
- [experiment outcomes, if any]
### Status
- [continuing to round N+1 / stopping]
現在のラウンド、スコア、判定、保留中の実験を記載した review-stage/REVIEW_STATE.json を書き込みます。
ラウンドカウンターを増やし、フェーズ A に戻ります。
終了条件
ループが終了したら(肯定的な評価を得た場合、または最大ラウンド数に達した場合):
review-stage/REVIEW_STATE.jsonの"status": "completed"を更新します- 最終要約を
review-stage/AUTO_REVIEW.mdに書き込みます - 結論をプロジェクトのメモに反映します
- 肯定的な評価を得ないまま最大ラウンド数で停止した場合:
- 残っている阻害要因を列挙します
- それぞれに必要な作業量を見積もります
- 手動で続行するか、方針を転換するかを提案します
重要なルール
-
大きなファイルの取り扱い:ファイルサイズが原因で Write ツールが失敗した場合は、直ちに Bash(
cat << 'EOF' > file)を使ってチャンク単位で書き込む方法を再試行します。ユーザーに許可を求めず、そのまま実行してください。 -
幻覚を防ぐための引用ルール:参考文献を追加する場合、BibTeX を決して捏造しないでください。DBLP → CrossRef →
[VERIFY]の順で確認してください。記憶に基づいて BibTeX を生成しないでください。 -
正直に記録し、否定的な結果や失敗した実験も含めます
-
肯定的なスコアを得るために、弱点を隠さないでください
-
再レビューの前に修正を実施します(修正を約束するだけにしないでください)
-
実験に 30 分以上かかる場合は開始し、待っている間にほかの修正を進めます
-
すべてを記録します。レビューのログだけで内容が完結するようにします
-
最後だけでなく、各ラウンドの後にプロジェクトのメモを更新します
-
ラウンド 2 以降では、必ず過去のレビューのコンテキストをプロンプトに含めます
-
利用可能な場合は、curl より MCP ツールを優先します(より信頼性が高いため)
ラウンド 2 以降のプロンプトテンプレート
MCP の方法(優先):
mcp__minimax-chat__minimax_chat:
model: "MiniMax-M3"
system: "You are a senior machine learning researcher serving as a reviewer for top-tier conferences like NeurIPS, ICML, and ICLR. Provide rigorous, constructive feedback."
prompt: |
[Round N/MAX_ROUNDS of autonomous review loop]
## Previous Review Summary (Round N-1)
- Previous Score: X/10
- Previous Verdict: [ready/almost/not ready]
- Previous Key Weaknesses: [list]
## Changes Since Last Review
1. [Action 1]: [result]
2. [Action 2]: [result]
3. [Action 3]: [result]
## Updated Results
[paste updated metrics/tables]
## Current Research Context
[brief summary of claims, methods, current state]
Please re-score and re-assess:
1. Score this work 1-10 for a top venue
2. List remaining critical weaknesses (ranked by severity)
3. For each weakness, specify the MINIMUM fix
4. State clearly: is this READY for submission? Yes/No/Almost
Be brutally honest. If the work is ready, say so clearly.
curl のフォールバック:
curl -s "https://api.minimax.io/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MINIMAX_API_KEY" \
-d '{
"model": "MiniMax-M3",
"messages": [
{
"role": "system",
"content": "You are a senior machine learning researcher serving as a reviewer for top-tier conferences like NeurIPS, ICML, and ICLR. Provide rigorous, constructive feedback."
},
{
"role": "user",
"content": "[Round N/MAX_ROUNDS of autonomous review loop]\n\n## Previous Review Summary (Round N-1)\n- Previous Score: X/10\n- Previous Verdict: [ready/almost/not ready]\n- Previous Key Weaknesses: [list]\n\n## Changes Since Last Review\n1. [Action 1]: [result]\n2. [Action 2]: [result]\n3. [Action 3]: [result]\n\n## Updated Results\n[paste updated metrics/tables]\n\n## Current Research Context\n[brief summary of claims, methods, current state]\n\nPlease re-score and re-assess:\n1. Score this work 1-10 for a top venue\n2. List remaining critical weaknesses (ranked by severity)\n3. For each weakness, specify the MINIMUM fix\n4. State clearly: is this READY for submission? Yes/No/Almost\n\nBe brutally honest. If the work is ready, say so clearly."
}
],
"max_tokens": 4096
}'
出力プロトコル
すべての出力ファイルに、以下の共通プロトコルを適用してください。
- 出力バージョン管理プロトコル — まずタイムスタンプ付きファイルを書き込み、その後、固定名のファイルにコピーします
- 出力マニフェストプロトコル — すべての出力を MANIFEST.md に記録します
- 出力言語プロトコル — プロジェクトの言語設定に従います