ラッパー層、古いメモリ、リトライループ、トランスポート・レンダリングの変異の背後に失敗を隠すエージェントシステムのための診断ワークフロー。
必須の場合:
特に重要な場合:
使用しない場合:
agent-introspection-debugging を使用security-review または security-review/scan を使用agent-eval を使用すべてのエージェントシステムはこれらの層を持ちます。いずれも回答を破壊する可能性があります:
| # | 層 | 問題の内容 |
|---|---|---|
| 1 | システムプロンプト | 矛盾する指示、指示の肥大化 |
| 2 | セッション履歴 | 前のターンからの古いコンテキスト注入 |
| 3 | 長期メモリ | セッション間の汚染、新しい会話に古いトピックが混入 |
| 4 | 蒸留 | 圧縮されたアーティファクトが疑似事実として再投入 |
| 5 | アクティブリコール | コンテキストを無駄にする冗長な再要約層 |
| 6 | ツール選択 | 誤ったツールルーティング、モデルが必要なツールをスキップ |
| 7 | ツール実行 | ハルシネーションによる実行 — 呼び出したと主張するが実際には呼び出していない |
| 8 | ツール解釈 | ツール出力の誤読または無視 |
| 9 | 回答整形 | 最終応答でのフォーマット破損 |
| 10 | プラットフォームレンダリング | トランスポート層の変異(UI、API、CLI が有効な回答を変異させる) |
| 11 | 隠れた修復ループ | サイレントなフォールバック・リトライエージェントが 2 回目の LLM パスを実行 |
| 12 | 永続化 | 期限切れの状態またはキャッシュされたアーティファクトがライブエビデンスとして再利用 |
ベースモデルは正しい回答を生成するが、ラッパー層がそれを悪化させる。
症状:
履歴、メモリ検索、または蒸留を通じて古いトピックが新しい会話に漏れる。
症状:
ツールはプロンプトで宣言されているがコードでは強制されていない。モデルがそれをスキップするか実行をハルシネーションする。
症状:
エージェントの内部回答は正しいが、プラットフォーム層が配信中にそれを変異させる。
症状:
明示的なコントラクトなしにサイレントな修復、リトライ、要約、またはリコールエージェントが実行される。
症状:
監査対象を定義する:
コードベースからエビデンスを収集する:
rg を使用してアンチパターンを検索する:
# プロンプトテキストのみで表現されたツール要件(コードでなく)
rg "must.*tool|必须.*工具|required.*call" --type md
# バリデーションなしのツール実行
rg "tool_call|toolCall|tool_use" --type py --type ts
# メインエージェントループ外の隠れた LLM 呼び出し
rg "completion|chat\.create|messages\.create|llm\.invoke"
# ユーザー修正優先度なしのメモリ受付
rg "memory.*admit|long.*term.*update|persist.*memory" --type py --type ts
# 追加の LLM 呼び出しを実行するフォールバックループ
rg "fallback|retry.*llm|repair.*prompt|re-?prompt" --type py --type ts
# サイレントな出力変異
rg "mutate|rewrite.*response|transform.*output|shap" --type py --type ts
各発見事項について文書化する:
デフォルトの修正順序(コードファースト、プロンプトファーストではない):
| レベル | 意味 | アクション |
|---|---|---|
critical |
エージェントが自信を持って誤った操作動作を生成できる | 次のリリース前に修正 |
high |
エージェントが頻繁に正確性や安定性を低下させる | このスプリントで修正 |
medium |
正確性は通常維持されるが出力が脆弱または無駄 | 次のサイクルで計画 |
low |
主に見た目または保守性の問題 | バックログ |
発見事項をユーザーにこの順序で提示する:
お世辞や要約から始めないこと。システムが壊れている場合は直接そう述べる。
エージェントシステムを監査する際、以下に答える:
| # | 質問 | Yes の場合 → |
|---|---|---|
| 1 | モデルが必要なツールをスキップして回答できるか? | ツールがコードゲートされていない |
| 2 | 古い会話コンテンツが新しいターンに現れるか? | メモリ汚染 |
| 3 | 同じ情報がシステムプロンプトとメモリと履歴にあるか? | コンテキストの重複 |
| 4 | プラットフォームが配信前に 2 回目の LLM パスを実行するか? | 隠れた修復ループ |
| 5 | 内部生成とユーザー配信で出力が異なるか? | レンダリング破損 |
| 6 | 「ツール X を必ず使用する」ルールがプロンプトテキストのみか? | ツール規律の失敗 |
| 7 | エージェント自身のモノローグが永続メモリになり得るか? | メモリポイズニング |
監査はこの形状に従った構造化されたレポートを生成すべきです:
{
"schema_version": "ecc.agent-architecture-audit.report.v1",
"executive_verdict": {
"overall_health": "high_risk",
"primary_failure_mode": "string",
"most_urgent_fix": "string"
},
"scope": {
"target_name": "string",
"model_stack": ["string"],
"layers_to_audit": ["string"]
},
"findings": [
{
"severity": "critical|high|medium|low",
"title": "string",
"mechanism": "string",
"source_layer": "string",
"root_cause": "string",
"evidence_refs": ["file:line"],
"confidence": 0.0,
"recommended_fix": "string"
}
],
"ordered_fix_plan": [
{ "order": 1, "goal": "string", "why_now": "string", "expected_effect": "string" }
]
}
agent-introspection-debugging — エージェントランタイムの失敗(ループ、タイムアウト、状態エラー)のデバッグagent-eval — エージェントパフォーマンスの対決ベンチマークsecurity-review — コードと設定のセキュリティ監査autonomous-agent-harness — 自律エージェント操作のセットアップagent-harness-construction — エージェントハーネスをゼロから構築