mcpField
A
auto-review-loop-llm

auto-review-loop-llm

github.com/wanshuiyin生産性18.2k504 回インストール4 日前に更新
リポジトリ

auto-review-loop-llm について

OpenAI互換 APIを使う研究プロジェクト向けの自動改善スキルです。外部レビュー、修正、再レビューを最大4ラウンド繰り返し、評価を記録し、スコアと判定の両方が基準を満たすと終了します。

主な機能

  1. 01OpenAI互換 API によるレビュー
  2. 02レビュー・修正・再レビューの反復
  3. 03最大4ラウンドの反復
  4. 04ラウンド状態と記録の保存
  5. 05評価基準による停止

活用シーン

  1. 01投稿前の研究プロジェクトの改善
  2. 02レビュー評価と対応項目の追跡
  3. 03修正後の再評価
  4. 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_URLLLM_MODEL
OpenAIhttps://api.openai.com/v1gpt-6.1-sol、gpt-6-astra
DeepSeekhttps://api.deepseek.com/v1deepseek-chat、deepseek-reasoner
MiniMaxhttps://api.minimax.io/v1MiniMax-M3
Kimi (Moonshot)https://api.moonshot.cn/v1moonshot-v1-8k、moonshot-v1-32k
ZhiPu (GLM)https://open.bigmodel.cn/api/paas/v4glm-4、glm-4-plus
SiliconFlowhttps://api.siliconflow.cn/v1Qwen/Qwen2.5-72B-Instruct
阿里云百炼https://dashscope.aliyuncs.com/compatible-mode/v1qwen-max
零一万物https://api.lingyiwanwu.com/v1yi-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" を設定します。

ワークフロー

初期化
  1. リカバリーのために review-stage/REVIEW_STATE.json を確認します(見つからない場合は ./REVIEW_STATE.json にフォールバックします — 旧パス)
  2. プロジェクトのコンテキストと過去のレビューを読みます
  3. ラウンドカウンターを初期化します
ループ(最大 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 に書き込みます。

終了
  1. review-stage/REVIEW_STATE.json のステータスを "completed" に設定します
  2. 最終サマリーを書き込みます

主なルール

  • 大きなファイルの扱い: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.

出力プロトコル

すべての出力ファイルで、以下の共通プロトコルに従ってください:

コメント