auto-review-loop-llm について
OpenAI互換 APIを使う研究プロジェクト向けの自動改善スキルです。外部レビュー、修正、再レビューを最大4ラウンド繰り返し、評価を記録し、スコアと判定の両方が基準を満たすと終了します。
主な機能
- 01OpenAI互換 API によるレビュー
- 02レビュー・修正・再レビューの反復
- 03最大4ラウンドの反復
- 04ラウンド状態と記録の保存
- 05評価基準による停止
活用シーン
- 01投稿前の研究プロジェクトの改善
- 02レビュー評価と対応項目の追跡
- 03修正後の再評価
- 04中断したレビューサイクルの再開
MCP 対応
利用可能な場合、llm-chat MCP サーバーで外部レビューを行い、代替手段として curl も記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill auto-review-loop-llmインストール後、Claude Code で/auto-review-loop-llmを入力して読み込まれたか確認します。
詳細
自動レビュー・ループ(汎用 LLM):自律的な調査の改善
🔒 このスキルを
/loop、/schedule、CronCreateでラップしないでください。/auto-review-loopと同様に、このスキルは内部ですでにループ(レビュー → 修正 → 再レビュー)しており、各ラウンドの前ラウンドの要約を次のレビュープロンプトに渡します(バックエンドはステートレスなラウンドごとの API/MCP 呼び出しであり、共有スレッドではありません)。外部タイマーを使うと、各ティックで最初から再実行され、蓄積されたコンテキストが失われるうえ、成果物の変更ではなく実時間に基づいて判定が実行されます。新たなシグナルはゼロで、トークンコストは全額かかります。判定ではなく、その前にある外部の待機をスケジュールしてください。詳しくはshared-references/external-cadence.mdを参照してください。
外部レビュアーが肯定的な評価を下すか、MAX_ROUNDS に達するまで、自律的に反復します:レビュー → 修正を実装 → 再レビュー。
コンテキスト:$ARGUMENTS
定数
- MAX_ROUNDS = 4
- POSITIVE_THRESHOLD:スコア >= 6/10 かつ 判定 ∈ {"ready", "almost"} — 以下の実際の STOP チェックと一致するよう、両方を満たす必要があります。判定の語彙は {"ready", "almost", "not ready"} です。(以前の記述では
orが使われ、古い判定セットが記載されていました。AND形式が正式なものです。) - REVIEW_DOC:
review-stage/AUTO_REVIEW.md(累積ログ)(旧プロジェクトでは./AUTO_REVIEW.mdにフォールバック)
LLM の設定
このスキルでは、llm-chat MCP サーバーを介した外部レビューに、任意の OpenAI 互換 APIを使用します。
MCP サーバーによる設定(推奨)
~/.claude/settings.json に追加します:
{
"mcpServers": {
"llm-chat": {
"command": "/usr/bin/python3",
"args": ["/Users/yourname/.claude/mcp-servers/llm-chat/server.py"],
"env": {
"LLM_API_KEY": "your-api-key",
"LLM_BASE_URL": "https://api.deepseek.com/v1",
"LLM_MODEL": "deepseek-chat"
}
}
}
}
対応プロバイダー
| プロバイダー | LLM_BASE_URL | LLM_MODEL |
|---|---|---|
| OpenAI | https://api.openai.com/v1 | gpt-6.1-sol、gpt-6-astra |
| DeepSeek | https://api.deepseek.com/v1 | deepseek-chat、deepseek-reasoner |
| MiniMax | https://api.minimax.io/v1 | MiniMax-M3 |
| Kimi (Moonshot) | https://api.moonshot.cn/v1 | moonshot-v1-8k、moonshot-v1-32k |
| ZhiPu (GLM) | https://open.bigmodel.cn/api/paas/v4 | glm-4、glm-4-plus |
| SiliconFlow | https://api.siliconflow.cn/v1 | Qwen/Qwen2.5-72B-Instruct |
| 阿里云百炼 | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen-max |
| 零一万物 | https://api.lingyiwanwu.com/v1 | yi-large |
llm-chat サーバーのデフォルトは gpt-6.1-sol です。LLM_FALLBACK_MODEL が未設定の場合、504 タイムアウト時のフォールバックには LLM_MODEL が引き継がれるため、固定の別モデルにはなりません。api.openai.com への呼び出しでは自動的に max_completion_tokens が使用され、サードパーティの OpenAI 互換エンドポイントでは max_tokens が使用されます。この自動選択を上書きするには、LLM_MAX_TOKENS_FIELD=max_tokens または LLM_MAX_TOKENS_FIELD=max_completion_tokens を設定してください。
API の呼び出し方法
主な方法:MCP ツール
mcp__llm-chat__chat:
prompt: |
[Review prompt content]
model: "deepseek-chat"
system: "You are a senior ML reviewer..."
フォールバック:curl
サードパーティの OpenAI 互換エンドポイントでは、max_tokens を使用します:
curl -s "${LLM_BASE_URL}/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${LLM_API_KEY}" \
-d '{
"model": "${LLM_MODEL}",
"messages": [
{"role": "system", "content": "You are a senior ML reviewer..."},
{"role": "user", "content": "[review prompt]"}
],
"max_tokens": 4096
}'
OpenAI を直接呼び出す場合は、代わりに max_completion_tokens を使用します:
curl -s "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${LLM_API_KEY}" \
-d '{
"model": "gpt-6.1-sol",
"messages": [
{"role": "system", "content": "You are a senior ML reviewer..."},
{"role": "user", "content": "[review prompt]"}
],
"max_completion_tokens": 4096
}'
状態の永続化(コンパクトなリカバリー)
各ラウンドの後に、状態を review-stage/REVIEW_STATE.json に保存します:
{
"round": 2,
"status": "in_progress",
"last_score": 5.0,
"last_verdict": "not ready",
"pending_experiments": [],
"timestamp": "2026-03-15T10:00:00"
}
各フェーズ E の終了時(ラウンドの記録後)に、このファイルを書き込みます。
完了時に、"status": "completed" を設定します。
ワークフロー
初期化
- リカバリーのために
review-stage/REVIEW_STATE.jsonを確認します(見つからない場合は./REVIEW_STATE.jsonにフォールバックします — 旧パス) - プロジェクトのコンテキストと過去のレビューを読みます
- ラウンドカウンターを初期化します
ループ(最大 MAX_ROUNDS)
フェーズ A:レビュー
MCP が利用可能な場合:
mcp__llm-chat__chat:
system: "You are a senior ML reviewer (NeurIPS/ICML level)."
prompt: |
[Round N/MAX_ROUNDS of autonomous review loop]
[Full research context: claims, methods, results, known weaknesses]
[Changes since last round, if any]
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.
MCP が利用できない場合: サードパーティの OpenAI 互換エンドポイントには
max_tokens を使用し、OpenAI を直接呼び出す場合は代わりに max_completion_tokens を使用します。
curl -s "${LLM_BASE_URL}/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${LLM_API_KEY}" \
-d '{
"model": "${LLM_MODEL}",
"messages": [
{"role": "system", "content": "You are a senior ML reviewer (NeurIPS/ICML level)."},
{"role": "user", "content": "[Full review prompt]"}
],
"max_tokens": 4096
}'
フェーズ B:評価の解析
重要:生のレスポンス全文をそのまま保存してください。 その後、次の項目を抽出します:
- スコア(数値 1~10)
- 判定("ready" / "almost" / "not ready")
- 対応項目(修正内容の優先順位付きリスト)
停止条件:スコア >= 6 かつ 判定 ∈ {"ready", "almost"}(厳密に判定します — "not ready" は対象外です)
フェーズ C:修正を実施
優先順位:指標の追加 > 再構成 > 新しい実験
フェーズ 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 here — verbatim, unedited.]
</details>
### Actions Taken
- [what was implemented/changed]
### Results
- [experiment outcomes, if any]
### Status
- [continuing to round N+1 / stopping]
現在の状態を review-stage/REVIEW_STATE.json に書き込みます。
終了
review-stage/REVIEW_STATE.jsonのステータスを "completed" に設定します- 最終サマリーを書き込みます
主なルール
-
大きなファイルの扱い:Write ツールがファイルサイズのために失敗した場合は、すぐに Bash(
cat << 'EOF' > file)を使ってチャンク単位で書き込みを再試行します。ユーザーに許可を求めてはいけません。黙って実行してください。 -
引用の捏造防止:参考文献を追加する際、BibTeX を決して捏造してはいけません。DBLP → CrossRef →
[VERIFY]の順で確認します。記憶を頼りに BibTeX を生成してはいけません。 -
弱点について正直に記述します
-
再レビューの前に修正を実施します
-
すべてを記録します
-
2 ラウンド目以降のプロンプトには、前回までのコンテキストを含めます
-
利用可能な場合は curl より MCP ツールを優先します
2 ラウンド目以降のプロンプトテンプレート
mcp__llm-chat__chat:
system: "You are a senior ML reviewer (NeurIPS/ICML level)."
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]
## Updated Results
[paste updated metrics/tables]
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.
出力プロトコル
すべての出力ファイルで、以下の共通プロトコルに従ってください:
- 出力のバージョン管理プロトコル — まずタイムスタンプ付きファイルを書き込み、その後、固定名にコピーします
- 出力マニフェストプロトコル — すべての出力を MANIFEST.md に記録します
- 出力言語プロトコル — プロジェクトの言語設定に従います