CodexとClaude Codeのループ自動化|/goal前に決める合格条件と停止条件
CodexやClaude Codeのループ自動化は、回す前に1周の合格条件、反復と費用の上限、止まる条件、人へ戻す条件の4つを決める。当編集部が毎日回しているSEOの定期ループで置いている値と、2026年10月に実際に止まった例で示す。
CodexやClaude Codeでループ自動化を回す前に決めるのは、1周の合格条件、反復と費用の上限、止まる条件、人へ戻す条件の4つだ。 目標だけを渡して回すと、AIはそれらしい修正を際限なく続け、費用だけが積み上がる。 本稿では、当編集部がこのサイトのSEOを回すために毎日動かしている定期ループで、4つの条件にどんな値を置いているかと、2026年10月に実際に止まった例を示す。
ループ自動化で回す前に決める4つの条件
ループ自動化は、AIに目標を渡し、実行して、確かめて、直す、を自動で繰り返させる使い方を指す。 Xの@Gencoin8は、CodexやClaude Codeで「いきなり /goal を投げない」ことを勧め、ループそのものの設計が先だと書いた(投稿)。 投稿は設計の中身までは示していないので、当編集部の運用で決めている中身を表にした。
| 条件 | 決める中身 | 当編集部のSEOループで置いている値 |
|---|---|---|
| 1周の合格条件 | 何が確かめられたら1周を終えてよいか | 公開のたびに本番のURLを取得し、ステータスが200(表示)、301(転送)、410(削除)のどれになったかを作業ごとに照合する |
| 反復と費用の上限 | 1日、1回あたり何件まで処理するか | URL検査は1サイト1日2,000件まで。公開は1サイト1日10件まで。同じページの修正から公開までは同時に1件まで。全ページに効くテンプレートの変更は同時に1件まで。同じページへの次の変更は、公開後14日の観測を終えてから |
| 止まる条件 | どんな失敗で処理をやめるか | 認証切れ、権限エラー(401と403)、上限超過(429)、サーバー側のエラー(500番台)で即座に止まる。種類を問わず失敗が5回続いても止まる |
| 人へ戻す条件 | どの状態なら人の判断を待つか | 承認待ちと障害で止めた作業は自動では選ばない。待たせる作業には「再開の条件」と「次に確かめる日」を必ず書く |
4つのうち、合格条件と止まる条件は、AIの自己評価ではなくプログラムで判定できる形にしてある。 「前より良くなった」は判定に使わない。 HTTPのステータス、サイトマップに載ったURLの件数、Google Search ConsoleのURL検査が返す登録状態のように、誰が見ても同じ値になるものだけを合格条件にする。
当編集部が毎日回しているSEOループの構成
このサイトのSEOは、監査、改善、公開、効果の検証、見直しを1周とするループで回している。 周期は次の4段に分けた。
| 周期 | 起動のタイミング | すること |
|---|---|---|
| 3日ごと | 午前9時 | Google Search Consoleの数値とURL検査を取り込み、未登録のページを判定し、人の判断が要る作業を通知する |
| 毎週 | 月曜の午前9時30分 | サイトを巡回し、記事が本文から受けているリンクの本数を数え、止まっている作業を棚卸しする |
| 毎月 | 2日の午前10時 | 前月の施策の効果を評価し、当月の計画案を作る |
| 公開後 | 再クロールを確かめた日から14日ごと、28日で全体 | 公開したページの表示回数と順位を、公開前と同じ条件で比べる |
周回をまたいで作業を引き継ぐために、作業ごとの記録(台帳)を1つのファイルに置いている。 台帳の各作業は、合格条件、次にすること、次に確かめる日を持つ。 ループは毎回この台帳を読み、期限の来た作業、前回終わらなかった作業、月の計画に載った作業の順に選ぶ。
ループに任せていないこともある。 記事の削除、サイトの方向に関わる変更、サーバーの設定変更は、人の承認を得てから行う。 承認の種類は台帳に書き、承認の原文も残す。
実際に止まった例(2026年10月22〜23日)
止まる条件は、書いただけでは効いているか分からない。 ここでは、2日間に実際に条件が働いた3件を挙げる。
URL検査がAPIの上限で止まった
2026年10月23日の13時22分、同じ運営者の別サイト(moirapedia.com)でURL検査の巡回を始めた。 この回の予算は1,300件で、990件を検査した時点でAPIが429(上限超過)を返した。 ループは停止理由を「http_429」と記録し、次に検査するURLの位置(990番目)を保存して終わった。 次の回は、その位置から続きを検査する。
上限に当たったときに再試行を続ける作りにしていたら、同じエラーを返す呼び出しを繰り返すだけになっていた。 止まる条件に429を入れてあるのはそのためだ。
本番サーバーの食い違いで公開を止め、人へ戻した
10月22日、未登録の記事を直して公開しようとしたところ、本番サーバーに、リポジトリに入っていない変更が258件残っていた。 そのまま公開すると、それらの変更が上書きで消える。 ループは公開の作業を止め、「本番の変更がリポジトリに記録される」を再開の条件にして、人の判断に戻した。 運営者が中身を確かめてコミットしたあと、10月23日に公開を再開した。
これはAIが自分で直せる失敗ではない。 本番の変更を残すか捨てるかは、変更を入れた人にしか決められないからだ。 人へ戻す条件は、AIの能力の不足ではなく、判断する権限が誰にあるかで決める。
設定の検査に通らないときは反映しない
10月23日、記事の統合に使う転送(301)と削除(410)を本番で返せるようにした。 転送の定義はビルドのたびに書き出され、Webサーバー(nginx)が読み込む。 定義に誤りがあると、同じサーバーに載っている他のサイトまで止まる。 そこで、ビルドの後に設定の検査(nginx -t)を走らせ、通ったときだけ反映する手順にした。 検査に落ちたときは、動いている設定のままにして記録を残す。
合格条件を満たさない成果物を出さないことも、止まる条件の一つだ。 1周の最後に検査を置けば、失敗した周回は本番に届かない。
合格条件を機械で判定できる形にする方法
合格条件を書くときは、判定する主体を先に決める。 実行したAIに「できましたか」と聞くと、実行と評価が同じになり、同じ誤りを見落とし続ける。 当編集部のループでは、判定をAIの外に出している。
- 公開の合否:本番のURLをcurlで取得し、返ったステータスとリンク先を照合する
- 登録の合否:Google Search ConsoleのURL検査APIが返す登録状態を読む
- 効果の合否:公開前と同じ期間、同じ条件で表示回数と順位を取り直して比べる
判定を外に出すと、AIに任せられる範囲はかえって広がる。 修正の中身はAIが考え、合否は機械が決め、どちらでも決まらない分岐だけを人が見る、という分担になるからだ。
上限の値は、ループの外にある制約から決めると迷わない。 当編集部の「公開は1サイト1日10件まで」は、Google Search Consoleで登録をリクエストできる件数(1サイト1日10件)に合わせた。 公開しても登録をリクエストできないページが毎日たまるなら、公開を急ぐ意味がないからだ。 同じページには、公開後14日の観測を1回終えるまで次の変更を入れない。 続けて手を入れると、順位が動いたときに、どの変更が効いたのかを見分けられなくなる。 上限は費用を抑えるためだけでなく、結果を検証できる大きさに周回を区切るためにも置く。
ループの組み方ごとに先に決める条件
ループの組み方には、定期起動、雛形の再利用、エージェントの分業などいくつかの形がある。 X上で話題になった形ごとに、先に決めておく条件を表にした。 投稿に含まれる数値や機能の説明は、当編集部では検証していない。
| ループの形 | 話題になった投稿 | 先に決める条件 |
|---|---|---|
| 定期起動(決まった時刻やきっかけでセッションを起動する) | Claude CodeのRoutines(@ClaudeCode_UT) | 書き込める範囲、失敗したときの通知先、ログの置き場所 |
| 雛形の再利用(公開されたループの定型を貼って使う) | Agent Loop集サイト(@L_go_mrk) | 自分の業務に合わせた停止条件と、外部ツールを呼ぶ回数の上限 |
| その場で手順を組む(AIが状況に応じてワークフローを作る) | Dynamic Workflows(@jackie_codes) | 許可、要承認、禁止の操作の区分と、各手順の入力と出力の記録 |
| 並列のレビュー(複数のエージェントが同時に検査する) | マージ前の並列コードレビュー(@SuguruKun_ai) | 指摘を警告、差し止め、参考のどれに分けるかと、マージを止める条件 |
| エージェント同士のやり取り(役割を分けたAIが直接連絡する) | AI同士が直接やり取りする機能(@taiyaki_ai3) | 差し戻しの回数の上限と、人が介入する地点 |
| 自動で見直すリサーチ(調査結果をAIが繰り返し検証する) | GensparkのAutopilot Agent(@tetumemo) | 検索した語、取得元、採用と除外の理由の記録 |
| loopを書く開発(コードではなく反復の手順を書く) | Claude Code作者の開発スタイル(@claudecode_lab) | 反復の単位(調査、実装、テスト、レビュー)と、その単位ごとの合格条件 |
どの形でも、4つの条件のどれかが欠けると同じ壊れ方をする。 合格条件が曖昧なら修正が続き、上限がなければ費用が膨らみ、止まる条件がなければ失敗が積み上がり、戻す条件がなければ誰も気づかない。 形の違いは、条件を書き込む場所の違いにすぎない。
回し始める前の確認手順
当編集部がループを新しく組むときに、回す前に確かめている項目を順に並べる。
- 1周の成果物を1つに決め、その合否をプログラムで判定する方法を書く
- 1日と1回あたりの処理件数の上限を、結果を検証できる大きさで決める
- 即座に止まるエラーの種類と、連続失敗の回数を決める
- 人の判断を待つ状態を決め、待たせる作業に再開の条件と次に確かめる日を書く
- 周回をまたいで作業を引き継ぐ記録の置き場所を決める
- 少ない件数で1周だけ回し、止まる条件が実際に働くかを確かめる
6番目を省かないことを勧める。 当編集部では、転送と削除の仕組みを入れたとき、試験用のURLを2件だけ足して公開し、301と410が返ることを本番で確かめてから本来の作業に使った。
よくある質問
Q. CodexやClaude Codeのループは、何回で止めればよいですか。 A. 回数を先に決めるより、1周の合格条件と1日あたりの処理件数の上限を決めるほうが判断しやすくなります。 当編集部では公開を1サイト1日10件までにしています。 合格条件を満たすか上限に達したら、その日の周回を終えます。
Q. AIに自分の出力を評価させてはいけないのですか。 A. 評価させてもかまいませんが、合否の判定には使わないことを勧めます。 実行したAIと評価するAIが同じだと、同じ誤りを見落とし続けます。 テストの結果やHTTPのステータスのように、AIの外で決まる値を合否に使ってください。
Q. 止まったループは、どうやって再開しますか。 A. 止まった理由と、次に処理する位置を記録してから止まる作りにしておきます。 当編集部のURL検査は、上限で止まったときに次のURLの位置を保存し、次の回はそこから続けます。 人の判断を待つ作業は、再開の条件が満たされたことを人が確かめてから戻します。
参照元
- Codex・Claude Codeで「ループ自動化」を回す前に|いきなり /goal を投げない設計の話(X / @Gencoin8)
- ループの組み方の表に挙げた各投稿(X)
ループ作業を扱った記事の一覧は、AIのフィードバックループとはにまとめている。