Claude Codeオーケストレーション(CC×マルチAIエージェント分業設計:Gemini / Devin / ローカルLLM)
📖 出版済み | 技術 | 優先度:🔴 最優先
シリーズ: AI・IT実践シリーズ
📖 出版済み(2026-06-07・¥800)| 書籍「AIエージェント・オーケストレーション」として KDP 公開 → 書籍ページ / Amazon(Kindle)
目的(ゴール)
Claude Code をオーケストレーターとして、タスク分解・品質判断・ワークフロー制御を担わせ、生成コストの高いタスクをローカルLLMワーカーにオフロードする分業アーキテクチャを設計・実装・検証する。CC の強みである文脈理解・判断・ツール実行を活かしながら、ローカルLLMで代替可能な生成タスクをオフロードすることで、コスト最適化と品質維持を両立する実践知を確立する。
アクター
- 著者(Manabazu)
- Claude Code(オーケストレーター:タスク分解・品質判断・ワークフロー制御)
- Gemini(Google Gemini API / Gemini CLI:大容量コンテキスト処理・マルチモーダル分析担当)
- Devin(Cognition AI:自律コーディング・長時間非同期タスク担当)
- ローカルLLMワーカー(qwen3-32b-nothink / Ollama on Node4、LiteLLM 経由:定型生成タスク担当)
- vault_worker.py(CC↔ローカルLLM ブリッジスクリプト)
- LiteLLM API(モデルルーティング層、Node4)
開始条件(起動トリガー)
Vault の Lab Log・原稿ドラフト・AtomicNote 生成など、定型的な大量テキスト生成タスクが発生し、CC が直接処理するよりローカルLLM へのオフロードがコスト対効果で優位と判断した時。
事前条件
- Node4 Ollama が稼働し、
qwen3-32b-nothink:latestが登録済み - Node4 LiteLLM が稼働し、
general-model(→ qwen3-32b-nothink)が登録済み vault_worker.pyのDEFAULT_MODEL = "general-model"が設定済み- Node1(作業端末)から Node4 への HTTP アクセスが可能
事後条件
- ローカルLLM が生成したドラフトを CC がレビュー・品質判断し、合格した成果物が Vault に格納される
- 生成コスト(Anthropic API トークン)が削減され、CC の処理はタスク設計・判断・修正に集中される
メインフロー
- 著者が CC(オーケストレーター)にタスクを自然言語で指示する
- CC がタスクを分解し、ローカルLLM で処理すべき生成サブタスクを特定する
- CC が
vault_worker.pyを通じて LiteLLM API 経由でローカルLLM にサブタスクを委託する - ローカルLLM(qwen3-32b-nothink)がドラフトを生成して返す
- CC がドラフトをレビューし、品質・整合性を判断する
- 合格の場合:成果物を Vault の適切なフォルダに格納する
- 不合格の場合:CC が修正指示を生成し、ローカルLLM に再生成を依頼するか、CC が直接修正する
代替フロー
- Node4 が停止中の場合: CC が直接生成タスクを処理する(フォールバック)
- ローカルLLM の品質が基準を下回る場合: CC が部分修正または直接生成に切り替える
例外フロー
- LiteLLM 接続エラー(400/500):
DEFAULT_MODEL設定ミスまたは Node4 サービス停止を確認 - qwen3-32b-nothink の OOM:モデルサイズに対する Node4 メモリ(128GB 統合)は十分だが、並列処理時は注意
備考
ollama_chat/エンドポイントを使用すること(ollama/は不可)- Phase 比較:UC260416-001(ハイブリッド・使用量最適化)と UC260417-001(CC完全代替)の中間的ポジション
- 実装根拠:vault_worker.py の構築と A/B テスト計画(
60_AgenticTasks/VaultProcessing-AgentComparison.md)が既存証跡
シナリオリスト
ローカルLLM グループ(定型大量生成・コストゼロ)
| シナリオ | 概要 |
|---|---|
| L1 | Lab Log → 出版メモ変換(ローカルLLM 生成、CC レビュー) |
| L2 | AtomicNote 生成(ローカルLLM 生成、CC WikiLink 整合チェック) |
| L3 | 章ドラフト生成(ローカルLLM 生成、CC 文体・構成レビュー) |
| L4 | CBF 分類(ローカルLLM 提案、CC 最終判断) |
Gemini グループ(大容量コンテキスト・マルチモーダル)
| シナリオ | 概要 |
|---|---|
| G1 | 全 Vault 横断の知識統合(1M token コンテキストで AtomicNote 候補・シリーズ矛盾点を抽出) |
| G2 | スクリーンショット・図表のテキスト化(Gemini Vision で _inbox/screenshots/ を構造化ドキュメントへ変換) |
Devin グループ(自律コーディング・長時間非同期タスク)
| シナリオ | 概要 |
|---|---|
| D1 | Publishing パイプラインスクリプトの機能追加(CC が仕様書を作成、Devin が実装 → PR、CC がレビュー) |
| D2 | 評価スクリプト改善(auto_scorer.py 拡張を CC が要件定義、Devin が非同期実装・テスト) |
| D3 | Vault 定型整備タスクの非同期委託(LabLog集計・frontmatter検証・UC整合確認を Devin が実施 → PR → CC レビュー) |
| D4 | Vault 品質監査の非同期委託(Risk-Master棚卸し・ID整合・UC WikiLink確認・対処済み候補スキャンを Devin が実施 → PR → CC レビュー) |
シナリオ記述
ローカルLLM シナリオ
L1: Lab Log → 出版メモ変換
ワーカー: ローカルLLM(qwen3-32b-nothink)
トリガー: 著者が 50_Lab_Logs/ の Lab Log ファイルを出版メモに変換するよう指示する
フロー:
- CC が Lab Log を読み込み、変換プロンプトを構築する
vault_worker.py lablog-memo --input <log>でローカルLLM に送信する- ローカルLLM が出版メモ形式でドラフトを生成する
- CC が内容・文体・Vault 整合性を確認し、
20_Manuscripts/または30_Knowledge_Graph/に格納する
L2: AtomicNote 生成
ワーカー: ローカルLLM(qwen3-32b-nothink)
トリガー: 著者が新しいキーワードまたは概念の AtomicNote 作成を指示する
フロー:
- CC がキーワード・関連 UC・既存 AtomicNote の一覧を整理し、生成プロンプトを構築する
vault_worker.py atomic-note --input "<概念>|<説明>"でローカルLLM に送信する- ローカルLLM が AtomicNote テンプレートに沿ったドラフトを生成する
- CC が
30_Knowledge_Graph/内の既存ノードとの WikiLink 整合性を確認し、矛盾があれば修正してから格納する
L3: 章ドラフト生成
ワーカー: ローカルLLM(qwen3-32b-nothink)
トリガー: 著者が出版スプリント中に特定の章のドラフト生成を指示する
フロー:
- CC が
99_PublishingSprint/01_CurrentSeed/のindex.mdと関連 AtomicNote を読み込み、章のアウトラインと文脈プロンプトを構築する vault_worker.py free --input "<章アウトライン+文脈>"でローカルLLM に送信する- ローカルLLM が敬語体(です・ます調)でドラフトを生成する
- CC が文体統一・章間の整合性・AtomicNote との一致を確認し、
chapters/に格納する
L4: CBF 分類
ワーカー: ローカルLLM(qwen3-32b-nothink)
トリガー: 著者が新しい Lab Log または原稿に対して CBF 6ビット分類の付与を指示する
フロー:
- CC がコンテンツと CBF 6ビット定義(技術・環境・地政学・経済・社会・思想)を含むプロンプトを構築する
- ローカルLLM がビット割り当てとタグ候補を提案する
- CC が UseCase-Master.md の既存分類と比較して整合性を検証する
- CC が最終判断を行い、
tags:フロントマターに反映する
Gemini シナリオ
G1: 全 Vault 横断の知識統合
ワーカー: Gemini 2.5 Pro(1M token コンテキスト)
トリガー: 著者が複数のシリーズにまたがる AtomicNote の矛盾点洗い出し、または新しいシリーズ横断テーマの発見を指示する
使用理由: Vault の全原稿(数十万トークン規模)を単一コンテキストで処理できるのは Gemini のみ
フロー:
- CC が
20_Manuscripts/および30_Knowledge_Graph/の全ファイルを収集し、Gemini CLI(geminiコマンド)または Gemini API 呼び出しスクリプトでまとめて送信する - プロンプト例:「以下の Vault コンテンツから、(a) シリーズ間の矛盾・重複する AtomicNote 候補、(b) まだ定義されていないが複数箇所で言及されている概念、(c) 新しいシリーズ横断テーマの候補を抽出してください」
- Gemini が横断的な知識マップ・候補リストを返す
- CC が提案を精査し、新規 AtomicNote 作成(→ L2)または既存ノードの更新を実行する
G2: スクリーンショット・図表のテキスト化
ワーカー: Gemini Vision(Gemini 2.0 Flash または 2.5 Pro)
トリガー: 著者が _inbox/screenshots/ に画像をドロップし、「反映して」と指示する(既存 inbox ワークフローとの統合)
使用理由: ローカルLLM はマルチモーダル非対応、CC は画像読み取りは可能だが大量バッチ処理でコストがかかる
フロー:
- CC が
_inbox/screenshots/内の画像ファイルを検出する - Gemini API(
gemini-2.0-flashモデル)に画像とプロンプト「この画像の内容を Obsidian ドキュメント形式(Markdown)で構造化してください。図表はテーブルに、フローは箇条書きに変換してください」を送信する - Gemini が構造化テキストを返す
- CC が対象ドキュメントを特定し、適切なセクションに挿入する(ファイルが不明な場合は
_inbox/pending/に仮置き) - 処理済み画像を
_inbox/screenshots/processed/に移動する
Devin シナリオ
D1: Publishing パイプラインスクリプトの機能追加
ワーカー: Devin(Cognition AI、非同期・自律コーディング)
トリガー: 著者が vault_worker.py または publishing_ops.py への機能追加を決定し、CC に要件を伝える
使用理由: 実装・テスト・デバッグのサイクルが長く(数十分〜数時間)、CC のコンテキスト占有が大きい。Devin に非同期委託することで CC はほかのタスクに集中できる
フロー:
- CC が要件定義書(仕様・受け入れ条件・既存コードの参照箇所)を Markdown で作成し、Devin セッションに貼り付ける
- Devin がリポジトリをクローン(または既存環境を参照)し、実装・テストを非同期で実行する
- Devin が実装完了後に GitHub PR を作成し、著者に通知する
- CC が PR の差分をレビューし、CLAUDE.md の規約・Vault 整合性・セキュリティを確認する
- 著者が承認し、マージする
D2: 評価スクリプト改善(auto_scorer.py 拡張)
ワーカー: Devin(Cognition AI、非同期・自律コーディング)
トリガー: JailBreak 評価・エージェント評価のスコアリングスクリプトに改善要件が生じた時(例:M21 再評価対応、新しいカテゴリ追加)
使用理由: LiteLLM / Anthropic API との接続・例外処理・バッチ処理などの長い実装を CC が逐次実行するとトークンコストが大きい
フロー:
- CC が改善要件(例:「M21 OOM 時の自動スキップと再試行ロジックの追加」)を仕様書化し、
60_AgenticTasks/LLM-Eval/の既存スクリプト・ドキュメントへの参照を添付して Devin に委託する - Devin が
auto_scorer.pyを修正し、Node4 または Node3 環境でテストを実行する - テスト結果(成功件数・エラーログ)とともに PR を作成する
- CC が差分レビューと評価ロジックの整合性確認を行い、著者に報告する
D3: Vault 定型整備タスクの非同期委託
ワーカー: Devin(Cognition AI、非同期・自律)
トリガー: CC のトークン使用量が逼迫し、Vault の定型整備タスク(LabLog 集計・frontmatter 検証・UC整合確認など)を CC が処理するよりも Devin に委託するほうがコスト対効果で優位と判断した時
対象リポジトリ: mnbz-sol/obsidian-publishing(GitHub)
使用理由: ファイル横断の grep・集計・一括置換など繰り返し性の高い作業は CC のコンテキストを圧迫するが、Devin はリポジトリを自律的に操作して PR を出せる
フロー:
- CC がタスク指示文(対象フォルダ・処理内容・出力形式・受け入れ条件)を Markdown で作成する
- 著者が指示文を Devin UI にペースト、または Devin MCP 経由で CC が直接セッションを作成する(後述)
- Devin が
mnbz-sol/obsidian-publishingをクローンし、ブランチを切って作業する - Devin が変更をコミットし、GitHub PR を作成して著者に通知する
- CC が
gh pr view <番号>で差分を確認し、CLAUDE.md 規約との整合性・内容の正確性をレビューする - 著者が承認し、
gh pr mergeでマージする
Devinに適した具体的タスク例:
| タスク | 指示の目安 |
|---|---|
| LabLog 一覧表生成 | 50_Lab_Logs/ の frontmatter を読み date・uc_ids・topic・status の Markdown テーブルを生成 |
| frontmatter 検証 | uc_ids 形式・必須キー欠損・status 値の整合を grep チェックし修正 PR を出す |
| UseCase-Master 整合確認 | UseCases/*.md の status と UseCase-Master.md の状態列を比較し不整合を修正 |
| Quartz ビルド・デプロイ | ファイル変更後の node quartz/bootstrap-cli.mjs build と npx wrangler deploy |
| EXIF 除去・セキュリティ確認 | 画像追加時の EXIF 除去と sourceMappingURL の存在チェック |
CCからDevinへの依頼方法(2択):
| 方法 | 必要な準備 | 手順 | 実証状況 |
|---|---|---|---|
| 手動ペースト | なし | CC がタスク指示文を生成 → 著者が Devin UI にコピペ | ✅ 実証済み(PR #4〜#6) |
| Devin REST API(推奨・自律実行) | DEVIN_API_KEY 環境変数 + devin_api.sh | CC が devin_create "$(cat 指示書.md)" を実行してセッションを直接起動 | ✅ 実証済み(PR #7、CC自律キック) |
Devin MCP について: npm パッケージ
@devin-ai-integration/devin-mcpは 2026-05-10 時点で存在しない(404)。MCP ではなく REST API 経由での実装が唯一の自律化手段。
REST API ヘルパー(60_AgenticTasks/DevinTasks/devin_api.sh):
source 60_AgenticTasks/DevinTasks/devin_api.sh
SESSION_ID=$(devin_create "$(cat 指示書.md)") # セッション起動
devin_summary "$SESSION_ID" # ステータス確認
devin_send "$SESSION_ID" "追加指示" # メッセージ送信D4: Vault 品質監査の非同期委託
ワーカー: Devin(Cognition AI、非同期・自律)
トリガー: Vault のマスターファイル(Risk-Master.md・UseCase-Master.md など)に ID 不整合・WikiLink 切れ・フォーマット違反が蓄積し、CC が一括チェックするよりも Devin に委託するほうがコスト対効果で優位と判断した時
対象リポジトリ: mnbz-sol/obsidian-publishing(GitHub)
使用理由: grep ベースの全件走査・存在確認・レポート生成は繰り返し性が高く CC のコンテキストを圧迫する。Devin は自律的に grep・ls・PR 作成まで完結できる
フロー:
- CC が監査指示書(対象ファイル・チェック項目・レポート形式・受け入れ条件・禁止事項)を Markdown で作成する
- CC が
devin_api.shを source しdevin_create "$(cat 指示書.md)"でセッションを直接起動する(著者の手動ペースト不要) - Devin が対象ファイルを grep 走査し、問題箇所を特定・修正する
- Devin が修正差分+調査レポートを PR の説明文にまとめて GitHub PR を作成する
- CC が
gh pr viewで差分・レポートを確認し、CLAUDE.md 規約・データ正確性を評価する - 著者が承認し、
gh pr merge --squashでマージする git pull origin mainで Vault に反映する
実証事例: 2026-05-10 D7(Risk-Master棚卸し)
- 修正:
[[260422-001]]→[[R260422-001]]、[[260422-002]]→[[R260422-002]](本体+優先度サマリー) - レポート: UC WikiLink 43件全件存在確認、対処済み候補スキャン(0件)、Risks/個別ファイル欠損確認
- 所要時間: 約7分(Devin側)、PRレビュー約5分(CC)
D4 に適した具体的タスク例:
| タスク | 監査内容 |
|---|---|
| Risk-Master 棚卸し | ID プレフィックス欠落・UC WikiLink 存在確認・対処済み候補スキャン |
| UseCase-Master 整合確認 | UseCases/*.md の status と Master の状態列を比較し不整合を列挙 |
| frontmatter 品質チェック | uc_ids 形式・必須キー欠損・date 形式違反を全 LabLog で grep |
| 孤立ファイル検出 | Master 未登録の Risks/*.md・UseCases/*.md を検出してレポート |