
ツールを使用するLLMエージェント向けのクロスエージェントトレーシングおよびセキュリティ診断システム:トレースイベントを正規化し、来歴グラフを構築し、ソースからシンクへのチェーンを抽出し、防御のギャップを特定します。
AgentTriageは、ツールを使用するLLMエージェント向けのクロスエージェント・トレーシングおよびセキュリティ診断システムです。ソースのイングレス、プランニング、ツールのライフサイクルを観測し、それらを単一の正規イベント契約に正規化し、Simplified Typed Provenance Graph(STPG)を再構築し、source-to-sinkチェーンを抽出し、推定される防御ギャップを特定し、Defense-Gap Cardをレンダリングします。
このリポジトリには、現在のAgentTriageランタイム実装、5つの軽量ターゲットオーバーレイ、対応するオープンソースエージェントの固定ソーススナップショット、1回の完全な53ケースの動作リピート、および1セットの40件のラベルフリー診断エビデンスページが含まれています。
agenttriage/
canonicalize/ target-neutral event normalization and parent linking
stpg/ STPG construction, slicing, labeling, and compaction
chain/ source-to-terminal chain extraction
attribution/ outcome-aware defense-gap attribution
render/ JSON/Markdown Defense-Gap Card rendering
batch/ target launcher, trace validation, and artifact pipeline
targets/ five target-specific runtime overlays
open-source-agents/ pinned source snapshots governed by upstream licenses
schemas/ trace, canonical-event, and target schemas
contracts/ public acquisition/diagnosis contract
examples/ offline diagnosis examples and safe smoke inputs
data/ sanitized collected cases and label-free evidence pages
5つのターゲットはTaskWeaver、Agent Zero、LangGraph、Goose、Microsoft Agent Frameworkです。ターゲット固有の情報はmetadata.<target>の下に留める必要があり、すべてのトップレベルトレースイベントはagenttriage.trace.v0.2を使用し、すべてのターゲットドライバーは共通のv0.2インターフェースを使用します。
5つのオーバーレイ定義とTaskWeaverランタイムラッパーは、この公開ソースツリー向けに選択された最新の実装に対応しています。タイミング、アノテーション、および評価専用のコードは、意図的にこのリリースの対象外です。ターゲット固有の上流リビジョンと依存関係ロックは、各ターゲットのversion-lock.jsonとコンテナ設定で引き続き利用できます。
ターゲットエージェントはコードを実行し、ファイルを書き込むことができます。使い捨てのDockerコンテナ、テスト専用のAPIキー、提供されているローカルフィクスチャ、およびループバックエンドポイントのみを使用してください。機密性の高いホストディレクトリをマウントしたり、サンプルを本番システムに向けたりしないでください。SECURITY.mdを参照してください。
ホストパッケージのランタイム依存関係はjsonschemaの1つのみです。ターゲットの依存関係は、ダイジェストで固定されたDockerイメージ内に分離されています。
cd agenttriage-open-source
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install pytest
キー不要のパスを検証します:
pytest -q
agenttriage \
--case examples/sample_case.json \
--output /tmp/agenttriage-offline-demo \
--print-markdown
オフラインコマンドは次のように書き込みます:
raw_events.json
canonical_events.json
executed_chain.json
stpg.json
stpg_slice.json
assessment.json
card.json
card.md
実際のキーを使って追跡対象の設定を編集しないでください。実行する予定のターゲットに必要なローカル環境ファイルのみを作成してください:
cp .env.example targets/agentzero/.env.local
cp .env.example targets/langgraph/.env.local
cp .env.example targets/goose/.env.local
cp .env.example targets/microsoft_agent_framework/.env.local
cp .env.example targets/taskweaver/.env.local
Agent Zero、LangGraph、Goose、Microsoft Agent Framework の実モデルモード用に DEEPSEEK_API_KEY を設定します。TaskWeaver 用に LLM_API_KEY を設定します。サンプルの Goose/LangGraph/MAF スモークフィクスチャは決定的であり、モデルキーなしで実行できますが、ランナーは設定済みの env ファイルが存在することを依然として要求します。コピーした空のテンプレートでそれらのフィクスチャには十分です。
バッチランナーは存在しないイメージを自動的にビルドします。明示的にビルドするには:
docker build -f targets/taskweaver/Dockerfile -t agenttriage-taskweaver:runtime-overlay-v0.3 .
docker build -f targets/agentzero/Dockerfile -t agenttriage-agentzero:v2.4-overlay-v0.2 .
docker build -f targets/langgraph/Dockerfile -t agenttriage-langgraph:1.2.9-overlay-v0.4 .
docker build -f targets/goose/Dockerfile -t agenttriage-goose:1.43.0-overlay-v0.3 .
docker build -f targets/microsoft_agent_framework/Dockerfile -t agenttriage-microsoft-agent-framework:1.11.0-overlay-v0.3 .
イメージベースと上流リビジョンは、各
targets/<target>/version-lock.json で固定されています。お使いの地域で dockerproxy.net が利用できない場合は、固定されたダイジェストを保持したままレジストリホストのみを置き換えてください。
各ターゲットには examples/smoke/ 配下に個別のプロンプト/ポリシーディレクトリがあります。
コマンドの形式は5つのターゲットすべてで同一です:
agenttriage-batch \
--target langgraph \
--prompts examples/smoke/langgraph/prompts.jsonl \
--policy-oracles examples/smoke/langgraph/policy_oracles.jsonl \
--output runs/langgraph-smoke-01 \
--runtime docker \
--instrumentation-mode semantic \
--build \
--timeout-seconds 300
langgraph を taskweaver、agentzero、goose、または
microsoft_agent_framework に置き換え、対応する smoke ディレクトリを使用してください。常に新しい出力ディレクトリを使用してください。ケースディレクトリには、ドライバーの出力とセマンティックトレース、およびランナーが管理する正規化されたアーティファクトが含まれます:
driver_result.json
semantic_trace.jsonl
raw_trace.json
trace_validation.json
case.json
driver.stdout.log
driver.stderr.log
artifacts/canonical_events.json
artifacts/executed_chain.json
artifacts/stpg.json
artifacts/stpg_slice.json
artifacts/card.json
artifacts/card.md
トレースなしの動作確認には、同じ入力で --instrumentation-mode off を使用してください。このモードでは意図的に semantic_trace.jsonl を生成しません。
すべてのドライバーは以下を受け取ります:
prompt.json;policy_oracle.json;semantic または off);safe_test_assets.json と分離されたマテリアライズ済みアセットルート;各ドライバーが所有するのは driver_result.json と semantic_trace.jsonl のみです。共通ランナーがトレースを検証し、raw_trace.json と case.json を作成し、AgentTriage を実行して STPG/Card アーティファクトを書き出します。呼び出しイベントと結果イベントは明示的な call_id を共有します。時系列上の隣接性だけでは因果的証拠として扱われません。
TaskWeaver は他の 4 つのターゲットと同じ軽量なランタイムオーバーレイモデルを使用します。固定された上流ソースにはパッチを適用しません。ランタイムラッパーはプロセス起動時にインストールされ、終了時に復元されます。このリリースには、AgentTriage の以前の汎用フックプラン/Instrumentation モジュールやパッチ適用済みの TaskWeaver ソースツリーは意図的に含まれていません。セマンティックイベントは 5 つのターゲットローカルなランタイムオーバーレイによってのみ発行されます。
targets/<id>/target.yaml、driver.py、Dockerfile、overlay.json、version-lock.json を作成してください。公開スキーマを再利用し、ターゲット固有のフィールドは metadata.<id> にのみ配置してください。ソースのイングレス、共有 call_id を持つツール呼び出し/結果、終端状態、引数フィールド、明示的なフィールドリネージを記録してください。ターゲット固有のトップレベルイベントフィールドを追加しないでください。
data/behavior-collection には、5 つのターゲットにわたる 1 回の完全な繰り返しから得られた 53 件の安全なケースが含まれています。このサンプルには raw/セマンティックトレースと AgentTriage STPG/Card アーティファクトが含まれますが、内部の実行制御および効率サマリーは除外されています。
data/diagnosis-evidence-pages には、1 つの 40 ページの予測ブラインド証拠セット(page-set-1)が含まれています。公開されたページには、ラベル、モデル識別情報、裁定、参照、予測、コンセンサス、スコアは含まれていません。両方のデータディレクトリはサニタイズされた公開サンプルです。data/README.md を参照してください。
変更を公開する前に、以下を実行してください:
python scripts/scan_release.py .
pytest -q
スキャナーは、シークレット、ローカルの絶対パス、中国語テキスト、公開リリース/データマニフェスト、禁止された実験ディレクトリ、ネストされたGitメタデータ、およびGitHubの100 MiB制限を超えるファイルを拒否します。
AgentTriageのコードはApache-2.0です。5つのスナップショットはそれぞれ独自の上流ライセンスと通知を保持しています。THIRD_PARTY_NOTICES.mdを参照してください。これらの同梱は、AgentTriageのライセンスの下で再ライセンスするものではありません。