【要約】Agent Frameworkのagent-hooksは、denyでストリームが1文字も出ない [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
エージェント開発において、ポリシー適用や承認ゲート、機密情報の漏洩防止を、フレームワークのロジックと切り離して実装することが困難であった。開発者は以下の課題に直面している。
- ・ガバナンス実装がフレームワークに依存し、再利用性が低い。
- ・機密情報の流出を防ぐための、統一的な制御面(Control Surface)が欠如している。
- ・監査ログに機密データが混入し、セキュリティリスクとなる。
- ・実行中の介入と、ログ記録の整合性を保つ仕組みが不十分である。
// Approach
Agent Frameworkは、AGENT-HOOKS-0.1という共通仕様を導入することで、実行プロセスへの介入を標準化した。開発者がインターセプタを定義し、ミドルウェアとして組み込む手法を採用している。
- ・実行プロセスの8つの介入点を定義し、一貫した制御を可能にした。
- ・allow/deny/transformの3つの判定結果を返すインターセプタ方式を採用した。
- ・fail-closed設計を徹底し、インターセプタの失敗時は実行を拒否する。
- ・ストリーミング応答を全バッファリングし、拒否時に一切のデータを出さない仕組みを構築した。
- ・監査ログには決定理由のみを残し、ペイロードを除外する設計とした。
// Result
この実装により、開発者はエージェントのガバナンスをフレームワーク非依存の契約として分離できるようになった。導入により以下の成果と制約が得られる。
- ・evaluate_onlyモードにより、本番環境への影響を抑えたポリシー検証が可能になった。
- ・監査ログに機密情報を含めず、安全なログ管理を実現した。
- ・ただし、ストリーミングのバッファ化により、チャットUI等の体感レイテンシが悪化する。
- ・サーバーサイドで実行されるツールに対しては、実行前の介入ができない。
Senior Engineer Insight
> ガバナンスの標準化を目指す設計は評価できる。しかし、ストリーミングの全バッファ化は、リアルタイム性が求められるチャットUI等のUXを著しく損なう。また、インターセプタの可用性がエージェントの可用性に直結するため、高可用性が求められる現場では、インターセプタ自体の堅牢な設計が必須となる。サーバーサイドツールへの介入不可という限界を理解した上で、適切なアーキテクチャ選定を行うべきである。