バグを自動修正する Claude Code エージェントの構築方法(具体的なセットアップ手順を公開)

@zodchiii
英語4 週間前 · 2026年6月17日
143K
141
18
14
332

TL;DR

本ガイドでは、カスタムコマンドとフックを使用して、自己修復機能を持つ Claude Code エージェントを構築するための完全なセットアップ手順を紹介します。エラー分類プロトコルを実装することで、エージェントが自律的にコードの不具合を診断し、修正することが可能になります。

Claude がコードを書き、テストが失敗し、そのエラーの対処をあなたに任せます。

自己修正エージェントは違います。自分の失敗を読み、原因を修正し、すべてのテストが通るまで再実行します。

一度設定すれば、あなたはエージェントの無給デバッガーではなくなります。

必要な完全な設定はこちらです 👇

本題に入る前に、私は Telegram チャンネルで AI とバイブコーディングに関する日々のメモを共有しています: https://t.me/zodchixquant🧠

darkzodchi - inline image

なぜ1回のパスでは不十分なのか

デフォルトでは、Claude はタスクを1回実行します。テストが失敗すると、エラーを報告して待機します。あなたがそれを読み、貼り付け直し、もう一度試すように指示します。デバッグをしているのはあなたで、Claude はただタイピングしているだけです。

自己修正エージェントはそれを逆転させます。自分の失敗を読み、それがどんなバグなのかを解明し、その原因を修正し、再実行します。これはデバッガーの思考法と同じです。あなたが介入するのは、テストが通った時か、本当に行き詰まった時だけです。

ファイル 1: 修正コマンド

これは実際に実行するループです。.claude/commands/fix.md に配置します:

yaml
1---
2description: タスクを実行し、すべてのテストが通るまで自己修正する
3argument-hint: <task>
4allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5model: sonnet
6---
7
8タスク: $ARGUMENTS
9
10ループ:
111. タスクを実装する。
122. テストスイートを実行する: `npm test` (または pytest、cargo test)。
133. すべてのテストが通った場合:停止し、結果を表示する。
144. テストが失敗した場合:エラーの種類を分類し、根本原因を特定し、
15 その原因を修正してから、ステップ2に戻る。
165. 最大5回の試行に制限する。毎回、試行回数を通知する。
17
18分類→修正の順序が肝心です。毎回、診断が先、編集が後です。
19テストを弱めて通そうとせず、コードを修正してください。

あなたが /fix add pagination to the users endpoint と入力すると、エージェントは書き、テストし、テストスイートがすべて通るまで自己修復します。

ファイル 2: 自動チェックフック

このコマンドはオンデマンドで機能します。フックを使うと、編集のたびに自己チェックが自動化されます。

.claude/settings.json に追加します:

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Write|Edit",
6 "hooks": [
7 { "type": "command", "command": "npm test --silent 2>&1 | tail -5 || echo 'テスト失敗、続行前に修正してください'" }
8 ]
9 }
10 ]
11 }
12}

これで、Claude がファイルを編集するたびに、テストが実行され、結果がそのビューに返されます。

失敗はすぐに表示されるため、エージェントは同じフロー内で修正し、破損したコードの上にさらに変更を積み重ねていくようなことはしません。

ファイル 3: エラーの読み方を教える

このファイルこそ、真のデバッガーと当てずっぽうを区別するものです。ほとんどのエージェントは「テスト失敗」を見て、ランダムに編集を始めます。

優れたエージェントはまずエラーの種類を読みます。なぜなら、種類ごとに原因が異なるからです。これを CLAUDE.md に記述します:

markdown
1## 修正前に失敗を読み解く方法
2
3常に最初にエラーの種類を特定してください。それぞれ異なる意味を持ちます:
4
5- アサーション失敗 (expected X, got Y): ロジックが間違っています。
6 アサーションから値が構築された場所まで遡ってください。
7 テストの期待値を修正するのではなく、計算を修正してください。
8
9- 型エラー / undefined is not a function: 形状の不一致です。
10 何かが null であるか、間違った型がこの行に到達しています。
11 その値の発生源を見つけ、そこでガードするか修正してください。
12
13- タイムアウト / ハング: await が不足しているか、Promise が解決されません。
14 await のない非同期呼び出し、または決して状態が変わらない条件を探してください。
15
16- インポート / モジュールが見つからない: ロジックではなく、パスまたは依存関係の問題です。
17 パスを修正するかインストールし、それを使用するコードには触れないでください。
18
19- 不安定 (時々通る): ランダムではなく、共有状態またはタイミングの問題です。
20 順序依存のテストや、mock されていない時間/ネットワークを探してください。
21
22ルール: 編集する前に、種類と1文の根本原因を声に出して述べてください。
23原因を特定できないなら、あなたは推測しているのです。やめてください。

型エラーとアサーション失敗では、必要な対処が正反対です。前者は上流のデータ形状の問題であり、後者はその場のロジックの誤りです。まず分類すれば、エージェントは正しいものを修正します。

これをスキップすると、赤が消えるまでランダムに編集することになり、その結果、静かに壊れたままのグリーンスイートができあがります。

実際に何が起こるか

あなたは1行入力するだけです:

text
1/fix 日付フォーマッターが間違ったタイムゾーンを返す

その後、エージェントは自律的に動作します:

text
1試行 1
2 テスト実行 → 失敗
3 種類: アサーション (expected 5, got 11)
4 原因: ページサイズがクエリに適用されていない
5 LIMIT 句を修正
6
7試行 2
8 テスト実行 → 失敗
9 種類: 型エラー (offset is undefined)
10 原因: ページ1で offset が送信されず、デフォルトが間違っていた
11 offset = (page-1)*size を追加
12
13試行 3
14 テスト実行 → すべて成功 (7/7)
15
163回の試行で修正しました。差分を確認しますか?

あなたはエラーを貼り付け直す必要はありませんでした。エージェントは自分の失敗を読み、それぞれの原因を特定し、テストスイートが通るまで修正しました。

よくある間違い

診断する前に修正する。 最も大きな問題です。エラーの種類を特定する前に編集するエージェントは推測しており、推測では運が良ければ赤を緑に変えるだけで、修正にはなりません。分類優先のルールが唯一の防御策です。

すべてのエラーを同じように扱う。 タイムアウトとアサーション失敗には何の共通点もありませんが、エラータイプガイドのないエージェントは両方を「何かがおかしい」と扱い、最も近い行を編集します。修正の半分は間違ったファイルに適用されます。

症状にパッチを当てる。 スローする呼び出しを try/catch でラップするとテストは通りますが、バグは残ります。プロトコルは、まさにこの理由でエラーの無効化を禁止しています。

テストを弱めさせる。 テストを編集することを許可されたエージェントは、最終的に失敗するテストを削除してグリーンを達成しようとします。何も証明しない合格スイートは最悪の結果なので、このルールは譲歩できません。

5分のセットアップ

2分: .claude/commands/fix.md を作成。

1分: PostToolUse フックを settings.json に追加。

1分: 自己デバッグプロトコルを CLAUDE.md に追加。

1分: 既知のバグに対して /fix を実行し、エージェントが原因を試行錯誤しながら修正するのを見守る。

あなたはエラーを中継する人間でなくなります。エージェントは自分の赤を読み、緑になるまで修正します。エージェントが賢くなったわけではなく、問題をあなたに押し返すのをやめただけです。

お読みいただきありがとうございます!

私は Telegram チャンネルで AI、金融、バイブコーディングに関する日々のメモを共有しています: https://t.me/zodchixquant

darkzodchi - inline image
ワンクリック保存

YouMindでバイラル記事をAI深読み

ソースを保存し、的を絞った質問をし、主張を要約して、バイラル記事を再利用できるノートに変えます。すべてを1つのAIワークスペースで行えます。

YouMindを探索
クリエイターのために

あなたの Markdown をきれいな 𝕏 記事に

自分の長文を投稿するとき、画像・表・コードブロックを 𝕏 向けに整形するのは手間がかかります。YouMind は Markdown 全体を、そのまま投稿できるきれいな 𝕏 記事に変換します。

Markdown → 𝕏 を試す

解読すべきパターンをもっと

最近のバイラル記事

バイラル記事をもっと見る