Deeboとは?AIエージェントのデバッグパートナー
Deeboとは?AIエージェントのデバッグパートナー
🔍 Deeboの概要
Deeboは、AIコーディングエージェント(Claude、Cline、Cursorなど)と連携して動作する自律型デバッグシステムです。Model Context Protocol (MCP) を使用して、バグを解決するための並列実験を独立したGitブランチで実行し、検証済みの修正を提供します。
人間の介入なしに、複数の仮説を同時に検証し、最適な解決策を見つけ出す能力を持っています。
💡 主な特徴
- 自律的デバッグ: 人間の介入なしにデバッグプロセスを実行
- 並列実験: 複数の仮説を同時に検証(Mother-Scenarioアーキテクチャ)
- 検証済み修正: 実際のコード変更とテストによる解決策の検証
- 構造化メモリ: 過去のデバッグセッションからの学習
- ツール分離: すべての変更はMCPツールを介して行われる
- 生ログ: 人間が読める形式のログとレポート
- 委任優先: 他のエージェントから呼び出されることを前提に設計
🚀 導入方法
Cline/Claude Desktopユーザー向けクイックインストール
Cline(VSCode拡張)またはClaude Desktopを使用している場合、以下のコマンドで簡単にインストールできます:
npx deebo-setup
プロンプトに従ってAPIキーを設定するだけで準備完了です。
インストールが完了したら、以下のコマンドで動作確認ができます:
npx deebo-setup ping
手動インストール(その他の環境向け)
Cline/Claude Desktop以外の環境では、以下の手順でインストールします:
-
リポジトリのクローン:
git clone https://github.com/snagasuri/deebo-prototype.git cd deebo-prototype
-
依存関係のインストール:
npm install npm run build
-
必要なMCPツールのインストール:
# uvとuvxのインストール curl -LsSf https://astral.sh/uv/install.sh | sh # git-mcpのインストール uvx mcp-server-git --help # desktop-commanderのインストール npx @wonderwhy-er/desktop-commander@latest setup
-
MCPクライアントの設定:
以下の設定をMCP設定ファイルに追加します。
- Cline:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows環境の場合は適宜パスを調整してください
{ "mcpServers": { "deebo": { "autoApprove": [], "disabled": false, "timeout": 30, "command": "node", "args": [ "--experimental-specifier-resolution=node", "--experimental-modules", "--max-old-space-size=4096", "/absolute/path/to/deebo/build/index.js" ], "env": { "NODE_ENV": "development", "USE_MEMORY_BANK": "true", "MOTHER_HOST": "openrouter", "MOTHER_MODEL": "anthropic/claude-3.5-sonnet", "SCENARIO_HOST": "openrouter", "SCENARIO_MODEL": "anthropic/claude-3.5-sonnet", "OPENROUTER_API_KEY": "sk-or-v1-..." }, "transportType": "stdio" } } }
- Cline:
前提条件
- Git: バージョン管理用
- Node.js: v18以上(npmを含む)
- Python: 3.10以上(git-mcp用)
LLM設定
Deeboは以下のLLMプロバイダーをサポートしています:
- OpenRouter
- Anthropic
- Gemini
環境変数で設定可能:
-
MOTHER_HOST
: Mother agentのLLMプロバイダー -
SCENARIO_HOST
: Scenario agentのLLMプロバイダー -
[PROVIDER]_API_KEY
: 選択したプロバイダーのAPIキー
🛠️ 使い方
Deeboは、MCPを通じて以下の4つの主要ツールを提供します:
ツール | 説明 |
---|---|
start |
デバッグセッションを開始 |
check |
デバッグセッションの状態を確認 |
add_observation |
エージェントに外部観察を追加 |
cancel |
デバッグセッションを終了 |
デバッグセッションの開始
AIエージェント(Claude、Cline、Cursorなど)に以下のようにリクエストします:
Deeboを使って以下のエラーをデバッグしてください:
TypeError: Cannot read property 'length' of undefined at line 42 in src/utils/parser.js
AIエージェントは以下のようなMCPコマンドを実行します:
<deebo>
<start
error="TypeError: Cannot read property 'length' of undefined at line 42 in src/utils/parser.js"
repoPath="/path/to/your/repository"
context="このエラーはJSONデータをパースする際に発生します。データが正しく取得できていない可能性があります。"
filePath="src/utils/parser.js"
language="javascript"
/>
</deebo>
これにより、Deeboはデバッグセッションを開始し、セッションIDを返します。
進捗の確認
デバッグの進捗を確認するには:
<deebo>
<check sessionId="session-1744006973678" />
</deebo>
これにより、現在の状態、Mother Agentの進捗、実行中および完了したシナリオエージェントの情報を含む詳細なレポートが返されます。
外部観察の追加
デバッグ中のエージェントに追加情報を提供するには:
<deebo>
<add_observation
sessionId="session-1744006973678"
agentId="mother"
observation="このエラーは特定の条件下でのみ発生します。具体的には、APIからのレスポンスが空の場合に発生します。"
/>
</deebo>
シナリオエージェントに観察を追加する場合は、agentId
をscenario-session-1744006973678-2
のような形式で指定します。
セッションのキャンセル
デバッグセッションを終了するには:
<deebo>
<cancel sessionId="session-1744006973678" />
</deebo>
📊 Deeboの処理フロー
Deeboは、OODA(Observe, Orient, Decide, Act)ループに基づいて動作します:
Mother-Scenarioアーキテクチャ
Deeboは以下の2種類のエージェントで構成されています:
- Mother Agent: デバッグプロセス全体を調整し、仮説を生成し、シナリオエージェントを派遣し、結果を分析して解決策を合成します。
- Scenario Agent: 特定の仮説を検証するために独立したGitブランチで実験を行います。
📁 メモリバンク構造
USE_MEMORY_BANK=true
が設定されている場合、Deeboは以下の構造でデバッグセッションの履歴を保存します:
memory-bank/{codebaseHash}/
├── activeContext.md # Mother agentのライブノートブック
├── progress.md # 全セッションの履歴記録
└── sessions/{sessionId}/
├── logs/ # エージェントの生ログ
├── reports/ # 構造化されたシナリオレポート
└── observations/ # 外部からの観察情報
これにより、過去のデバッグセッションから学習し、同様のバグに対する解決策を改善することができます。
🔧 実際の使用例
例1: シンプルなTypeScriptのバグ修正
// バグのあるコード
function calculateTotal(items?: number[]): number {
return items.reduce((sum, item) => sum + item, 0);
}
このコードでは、items
がundefined
の場合にエラーが発生します。
AIエージェントにDeeboを使ってデバッグするよう依頼すると、以下のような解決策が提案されます:
// 修正後のコード
function calculateTotal(items?: number[]): number {
return items?.reduce((sum, item) => sum + item, 0) ?? 0;
}
例2: 複雑なバグの解決
Deeboは複雑なバグも解決できます。例えば、tinygradの$100バグ懸賞の「test53 linearizer failure」を解決した例があります。
このケースでは、Deeboは17のシナリオエージェントを生成し、2つの有効な修正案を提案しました。詳細はこちらで確認できます。
⚠️ 注意点とベストプラクティス
注意点
-
ブランチ管理: Deeboは多数の一時的なGitブランチを作成します。これらは自動的にクリーンアップされないため、長期間使用する場合は定期的に不要なブランチを削除してください。
-
リソース使用: 複数のシナリオエージェントが並行して実行されるため、システムリソース(CPU、メモリ)の使用量が増加します。特に大規模なコードベースでは注意が必要です。
-
タイムアウト: Mother Agentは最大60分、Scenario Agentは最大15分の実行時間制限があります。複雑なバグの場合、複数のセッションが必要になることがあります。
-
LLMコンテキスト: 複雑なバグは、LLMのコンテキスト制限を超える可能性があります。観察メッセージは簡潔にしてください。
-
ツールアクセス: DeeboはファイルシステムとGit操作にアクセスできますが、外部APIやデータベースには直接アクセスできません。
ベストプラクティス
-
詳細なエラー情報: エラーメッセージ全体を提供し、要約だけにしないでください。
-
コンテキストの提供: 関連するコードスニペット、再現手順、以前の試行について情報を提供してください。
-
制約条件の明示: 既知の制約や要件があれば、それらを明示してください。
-
観察の活用:
add_observation
ツールを使用して、追加情報や外部テスト結果を提供してください。 -
セッションチェーン: 複雑なバグの場合、最初のセッションで得られた知見を基に、新しいセッションで絞り込まれた仮説を試してください。
🔧 トラブルシューティング
よくある問題と解決策
-
MCPサーバーが起動しない
- Node.jsのバージョンが18以上であることを確認
- 必要な依存関係がすべてインストールされているか確認
- 絶対パスが正しく設定されているか確認
-
LLM APIエラー
- APIキーが正しく設定されているか確認
- 選択したモデルが利用可能か確認
- レート制限に達していないか確認
-
Gitエラー
- リポジトリパスが正しいか確認
- Gitがインストールされているか確認
- リポジトリに未コミットの変更がないか確認
-
タイムアウト
- 複雑なバグの場合、より具体的な仮説で新しいセッションを開始
- コードベースを小さな部分に分割して調査
-
メモリバンクエラー
- 書き込み権限があるか確認
- ディスク容量が十分あるか確認
🌟 まとめ
Deeboは、AIコーディングエージェントの生産性を最大化するための強力なデバッグパートナーです。複数の仮説を並行して検証し、検証済みの修正を提供することで、デバッグプロセスを大幅に効率化します。
特に、複雑なバグや再現が難しいバグの解決に威力を発揮します。AIエージェントとDeeboを組み合わせることで、開発者はバグ修正に費やす時間を減らし、新機能の開発に集中できるようになります。
Deeboを導入して、AIコーディングエージェントの能力を最大限に引き出しましょう!
Discussion