💬 Heterogeneousエージェント
Claude Codeのような異なる種類のAIエージェント(異
📺 まず動画で見る(YouTube)
▶ 【最新版】Claude(クロード)完全解説!20以上の便利機能をこの動画1本で全て解説 ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Guide for implementing and debugging LobeHub heterogeneous agent integrations such as Claude Code, Codex, and future external CLI agents. Use when working on adapter event mapping, Electron IPC transport, renderer persistence, tool-call chaining, subagent threads, resume/session handling, or regressions like mixed multi-tool messages, broken step boundaries, stuck tool loading, and orphan tool messages. Triggers on 'heterogeneous agent', 'hetero agent', '异构 agent', 'claude code adapter', 'codex adapter', 'external agent CLI', '孤立 tool 消息', 'raw Codex trace', or adapter/executor bugs.
🇯🇵 日本人クリエイター向け解説
Claude Codeのような異なる種類のAIエージェント(異
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o heterogeneous-agent.zip https://jpskill.com/download/1278.zip && unzip -o heterogeneous-agent.zip && rm heterogeneous-agent.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/1278.zip -OutFile "$d\heterogeneous-agent.zip"; Expand-Archive "$d\heterogeneous-agent.zip" -DestinationPath $d -Force; ri "$d\heterogeneous-agent.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
heterogeneous-agent.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
heterogeneous-agentフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 2
💬 こう話しかけるだけ — サンプルプロンプト
- › Heterogeneous Agent で、私のビジネスを分析して改善案を3つ提案して
- › Heterogeneous Agent を使って、来週の会議用の資料を作って
- › Heterogeneous Agent で、現状の課題を整理してアクションプランに落として
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] heterogeneous-agent
Heterogeneous Agent の開発
このスキルは、バグや機能が通常のサーバーサイドのエージェントランタイムではなく、外部の CLI エージェントパイプラインに存在する場合に使用します。
このスキルを使用するケース
apps/desktop/src/main/modules/heterogeneousAgent/drivers/以下にドライバーを追加または変更する場合packages/heterogeneous-agents/src/adapters/以下のアダプターを編集する場合heteroAgentRawLineトランスポート、window.__HETERO_AGENT_TRACE、またはexecuteHeterogeneousAgentをデバッグする場合- Claude Code の stream-json のバグ(重複する部分/完全なチャンク、壊れた
message.id境界、tool_resultの欠落、TodoWrite 状態のずれ、サブエージェントスレッドのルーティングなど)を修正する場合 - Codex の JSONL のバグ(混合したマルチツールメッセージ、壊れたターン境界、ツール結果マッピングの欠落など)を修正する場合
- Claude Code / Codex のフローにおけるステップ境界、ツール永続性、サブエージェントスレッド、または再開に関するバグを修正する場合
- マルチツールの混合、孤立したツールメッセージ、またはツール結果の読み込みが停止する問題を再現する場合
パイプラインマップ
- CLI の生の stdout / JSONL
- Electron のメインプロセスが CLI を起動し、
heteroAgentRawLineをブロードキャストします。 - アダプターがプロバイダーの生イベントを
HeterogeneousAgentEventにマッピングします。 executeHeterogeneousAgentがアシスタント/ツールメッセージを永続化し、ストリームイベントを転送します。createGatewayEventHandlerが UI をハイドレートします。- このパスが正しいことを確認してから、
agent-tracingまたは context-engine のデバッグに進んでください。
まずこれらのファイルを読んでください
apps/desktop/src/main/controllers/HeterogeneousAgentCtr.tsapps/desktop/src/main/modules/heterogeneousAgent/drivers/claudeCode.tsapps/desktop/src/main/modules/heterogeneousAgent/drivers/codex.tspackages/heterogeneous-agents/src/adapters/claudeCode.tspackages/heterogeneous-agents/src/adapters/codex.tssrc/store/chat/slices/aiChat/actions/heterogeneousAgentExecutor.tssrc/store/chat/slices/aiChat/actions/__tests__/heterogeneousAgentExecutor.test.ts
デフォルトのデバッグ順序
- UI コードに触れる前に、生の CLI 出力が正しいことを証明してください。
- 生の出力が正しい場合は、アダプターの出力と比較してください。開発環境では、
executeHeterogeneousAgentがwindow.__HETERO_AGENT_TRACEを公開します。 - アダプターされたイベントが正しいように見える場合は、
persistToolBatch、persistToolResult、ステップ遷移、およびサブエージェントのルーティングを検査してください。 - 修正する前に、再現手順を絞り込んだテストに変換してください。
- トランスポート/アダプター/エグゼキューターのパスが健全に見える場合にのみ、後続のメッセージ処理をデバッグしてください。
重要な不変条件
- 1つの生のツールアイテムは、1つの安定した
ToolCallPayload.idにマッピングされなければなりません。 - 新しいメインエージェントのステップは、イベントが新しいアシスタントに転送される前に、境界シグナルを発行しなければなりません。
- Claude Code では、同じ
message.idを持つ複数のアシスタントイベントは1つのターンであり、複数のターンではありません。 - Claude Code では、
tool_resultはアシスタントイベントではなく、type: 'user'イベントに存在します。 - Claude Code の部分モードでは、
message_delta.usageが権威的です。すべてのアシスタントブロックでエコーされる usage を信頼しないでください。 persistToolBatchは、ツールメッセージを作成する前にアシスタントのtools[]を事前登録しなければなりません。- すべてのツールメッセージは、所有するアシスタントと等しい
parentIdと、ツール ID と等しいtool_call_idを保持しなければなりません。 tool_resultは、既存のtoolMsgIdByCallIdを解決しなければなりません。- サブエージェントのチャンクはスレッドスコープ内に留まり、メインのアシスタントストリームに転送されてはなりません。
- メインステップの境界でグローバルな
toolMsgIdByCallIdマップをクリアしてはなりません。
よくあるバグパターン
- Claude Code がテキストまたは思考を重複させる場合: 部分的なデルタと、その後の完全なアシスタントブロックの両方が発行されているか確認してください。
- Claude Code がアシスタントメッセージを過剰に開く場合:
アダプターが
message.idの変更時だけでなく、すべてのアシスタントイベントでステップを区切っているか確認してください。 - Claude Code のツール結果が届かない場合:
コードがアシスタントイベントのみを検査しているため、
type: 'user'のtool_resultブロックが無視されていないか確認してください。 - Claude Code の TodoWrite カードが古く見える場合:
合成された
pluginState.todosがツール結果時にアタッチされているか確認してください。 - Claude Code のサブエージェントのトランスクリプトがメインのバブルに漏れる場合:
parent_tool_use_idの処理と、サブエージェントのチャンクがメインのゲートウェイハンドラーに転送されているか確認してください。 - 複数の Codex ツールが1つのアシスタントメッセージに集約される場合:
まず、アダプターが
newStepや同等のターン変更シグナルなど、使用可能なステップ境界を発行しているか確認してください。 - 孤立したツールメッセージ:
まず、ステップ遷移の順序と、ツールメッセージ作成前に
persistToolBatchのフェーズ1が実行されたか確認してください。 - ツールバブルが読み込み中のままになる場合:
tool_result for unknown toolCallIdとresult_msg_idのバックフィル不足を探してください。 - サブエージェントのツールがメインのバブルに表示される場合: サブエージェントのチャンクがメインのゲートウェイハンドラーに到達しているか確認してください。
参照
- コマンド、トレースキャプチャ、不変条件、および絞り込んだテストコマンドについては、references/debug-workflow.md をお読みください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Heterogeneous Agent Development
Use this skill when the bug or feature lives in the external CLI agent pipeline, not the normal server-side agent runtime.
Use This Skill For
- Adding or changing a driver under
apps/desktop/src/main/modules/heterogeneousAgent/drivers/ - Editing an adapter under
packages/heterogeneous-agents/src/adapters/ - Debugging
heteroAgentRawLinetransport,window.__HETERO_AGENT_TRACE, orexecuteHeterogeneousAgent - Fixing Claude Code stream-json bugs such as duplicate partial/full chunks, broken
message.idboundaries, missingtool_result, TodoWrite state drift, or subagent thread routing - Fixing Codex JSONL bugs such as mixed multi-tool messages, broken turn boundaries, or missing tool-result mapping
- Fixing step-boundary, tool persistence, subagent thread, or resume bugs in Claude Code / Codex flows
- Reproducing multi-tool mixing, orphan tool messages, or stuck tool-result loading
Pipeline Map
- CLI raw stdout / JSONL
- Electron main spawns the CLI and broadcasts
heteroAgentRawLine - Adapter maps raw provider events into
HeterogeneousAgentEvent executeHeterogeneousAgentpersists assistant/tool messages and forwards stream eventscreateGatewayEventHandlerhydrates the UI- Only after this path looks correct should you move on to
agent-tracingor context-engine debugging
Read These Files First
apps/desktop/src/main/controllers/HeterogeneousAgentCtr.tsapps/desktop/src/main/modules/heterogeneousAgent/drivers/claudeCode.tsapps/desktop/src/main/modules/heterogeneousAgent/drivers/codex.tspackages/heterogeneous-agents/src/adapters/claudeCode.tspackages/heterogeneous-agents/src/adapters/codex.tssrc/store/chat/slices/aiChat/actions/heterogeneousAgentExecutor.tssrc/store/chat/slices/aiChat/actions/__tests__/heterogeneousAgentExecutor.test.ts
Default Debug Order
- Prove whether the raw CLI output is correct before touching UI code.
- If raw output is correct, compare it with adapter output. In dev,
executeHeterogeneousAgentexposeswindow.__HETERO_AGENT_TRACE. - If adapted events look correct, inspect
persistToolBatch,persistToolResult, step transitions, and subagent routing. - Turn the repro into a focused test before fixing.
- Only after the transport/adapter/executor path looks sound should you debug later-stage message processing.
Critical Invariants
- One raw tool item must map to one stable
ToolCallPayload.id. - A new main-agent step must emit a boundary signal before events are forwarded to the new assistant.
- In Claude Code, multiple assistant events with the same
message.idare one turn, not multiple turns. - In Claude Code,
tool_resultlives intype: 'user'events, not assistant events. - In Claude Code partial mode,
message_delta.usageis authoritative; do not trust echoed usage on every assistant block. persistToolBatchmust pre-register assistanttools[]before creating tool messages.- Every tool message must keep
parentIdequal to the owning assistant andtool_call_idequal to the tool id. tool_resultmust resolve an existingtoolMsgIdByCallId.- Subagent chunks must stay in thread scope and must not be forwarded into the main assistant stream.
- Never clear the global
toolMsgIdByCallIdmap at main step boundaries.
Common Bug Patterns
- Claude Code duplicates text or thinking: check whether partial deltas and the later full assistant block are both being emitted.
- Claude Code opens too many assistant messages:
check whether the adapter is cutting steps on every assistant event instead of only on
message.idchanges. - Claude Code tool results never land:
check whether
type: 'user'tool_resultblocks are being ignored because the code only inspects assistant events. - Claude Code TodoWrite cards look stale:
check whether synthesized
pluginState.todosis being attached at tool-result time. - Claude Code subagent transcript leaks into the main bubble:
check
parent_tool_use_idhandling and whether subagent chunks are being forwarded to the main gateway handler. - Multiple Codex tools collapse into one assistant message:
first check whether the adapter emits a usable step boundary such as
newStepor an equivalent turn-change signal. - Orphan tool messages:
first check step-transition ordering and whether
persistToolBatchPhase 1 ran before tool message creation. - Tool bubble stays loading:
look for
tool_result for unknown toolCallIdand missingresult_msg_idbackfill. - Subagent tools show up in the main bubble: check for subagent chunks reaching the main gateway handler.
References
- For commands, trace capture, invariants, and focused test commands, read references/debug-workflow.md.
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (5,466 bytes)
- 📎 references/debug-workflow.md (8,603 bytes)