mcpField
A
adk-architecture

adk-architecture

github.com/google開発22.0k120 回インストール今日更新
リポジトリ

adk-architecture について

adk-architectureは、google-adkのエージェントとワークフローの構造を解説するリファレンススキルです。ランタイムの利用や拡張にあたり、実行、コンテキスト、イベント、再開動作、コード構成を理解するための情報を提供します。

主な機能

  1. 01ノードとワークフローの実行モデル
  2. 02RunnerとNodeRunnerの役割
  3. 03コンテキストとイベントのライフサイクル
  4. 04一時停止と再開の動作
  5. 05ソースモジュールの案内

活用シーン

  1. 01ワークフローによるノードのスケジュール方法を理解する
  2. 02呼び出し中の状態とイベントを追跡する
  3. 03再開可能な人間参加型フローを設計する
  4. 04ADKの実装モジュールを探す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/google/adk-python --skill adk-architecture

インストール後、Claude Code で/adk-architectureを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api-principles.md
architecture-checkpoint-resume.md
architecture-context.md
architecture-llm-context-orchestration.md
architecture-node-runner.md
architecture-observability.md
architecture-runner-roles.md
architecture-workflow-resumability.md
interface-agent.md
interface-base-agent.md
interface-base-node.md
interface-event.md
interface-runner.md
interface-workflow.md

詳細

ADK アーキテクチャ

ランタイムはノードのグラフです。BaseNode は実行単位です。 Workflow は、宣言されたエッジに沿ってほかのノードをスケジュールするノードです。 NodeRunner はノードをちょうど1つ実行します。Runner は呼び出しとセッションを管理します。エージェントもノードであり、BaseAgent は BaseNode を拡張します。

ノードは実行ごとの Context を介して親と通信し、生成する Event を介してセッションと通信します。これらは別々の2つのチャネルです。 ctx は結果を上位へ渡し、イベントは永続化とストリーミングを担います。

ここに記載されたシグネチャを頼りにする前に、ソースコードを読んでください。この説明は古くなることがありますが、コードは変わりません。以下のパスは src/google/adk/ からの相対パスです。

リファレンスを選ぶ

質問リファレンス
ノードに実装が必須のものは何ですか?何を生成できますか?どの設定フィールドがありますか?BaseNode
グラフはどのようにノードをスケジュールし、動的な子ノードの重複を排除し、中断を伝播しますか?Workflow
呼び出し元はどのように呼び出しを開始しますか?Runner
Agent とは何ですか?どのメソッドを呼び出せますか?Agent
エージェントをサブクラス化する場合、何をオーバーライドすればよいですか?BaseAgent
Event には何が含まれ、そのライフサイクルについて何を前提にできますか?Event
ノードは ctx から何を読み取り、何を書き込みますか?Context
子 Context の作成、イベントへのタイムスタンプの付与、再試行、エラーの捕捉は、誰が行いますか?NodeRunner
Runner、NodeRunner、Workflow が別々のものなのはなぜですか?Runner の役割
1つのノードで、human-in-the-loop の一時停止と再開はどのように機能しますか?チェックポイントと再開
ワークフロー全体は一時停止をどのように乗り越えますか?また、is_resumable によって何が変わりますか?ワークフローの再開可能性
スパンはどのように作成され、どのような属性を持ちますか?可観測性
モデルが未加工のイベントログを参照しないのはなぜですか?LLM コンテキストのオーケストレーション
この変更は破壊的変更ですか?新しいエクスポートはどこに追加すればよいですか?API の原則

コードの配置場所

概念モジュール
BaseNode、STARTworkflow/_base_node.py
Workflow、_LoopStateworkflow/_workflow.py
Graph、エッジのコンパイルworkflow/_graph.py
NodeRunnerworkflow/_node_runner.py
DynamicNodeScheduler、DynamicNodeState、DynamicNodeRunworkflow/_dynamic_node_scheduler.py
ReplayManager(再開時のスキャン)workflow/utils/_replay_manager.py
check_interception(リプレイの早送り)workflow/utils/_replay_interceptor.py
NodeInterruptedError、NodeTimeoutErrorworkflow/_errors.py
Context、ctx.run_node()agents/context.py
ReadonlyContextagents/readonly_context.py
InvocationContextagents/invocation_context.py
BaseAgent、LlmAgent(Agent の別名)agents/base_agent.py、agents/llm_agent.py
BaseLlmFlow、SingleFlow、AutoFlow、flows/llm_flows/ のサブパッケージ(context/、prompt/、tools/、extensions/、core/)flows/llm_flows/
Event、NodeInfoevents/event.py
EventActionsevents/event_actions.py
分岐パス(parent.child@1)events/_branch_path.py
ノードパス(wf@1/child@2)events/_node_path_builder.py
Runner、InMemoryRunnerrunners.py
LiveRequestQueue、LiveRequestlive/live_request_queue.py
ノードスパン、TelemetryContexttelemetry/node_tracing.py
ResumabilityConfigapps/_configs.py

workflow/ 以下のモジュール名にはすべて先頭にアンダースコアが付いています。これらの名前は内部用として扱ってください。メジャーバージョンの更新を伴わずに変更される可能性があるため、これらの変更が自動的に破壊的変更になるわけではありません。

コメント