代理框架與 RAG
Agno 3.0.7/3.0.8、エージェント知識をバージョン管理されたページとして公開し、セッション所有権の不備を修正
Agnoは、アトミックな公開と固定バージョンでの読み取りに対応する page knowledge、および入出力を制限した公開用のAgent、Team、Workflow、MCPサービスのサーフェスを追加した。その数時間後に公開された3.0.8では、ページ全体の読み取りとSQLiteのバッチ書き込みにおける所有権チェックも追加された。アップグレード時には、HNSWの検索セマンティクス変更への対応も必要となる。

Agno 3.0.7は、ナレッジベースを単なるベクトル集合から`agno.knowledge.page`へと拡張した。1回の公開処理で、ディレクトリのメタデータ、ファイルシステム上のテキスト、ベクトルを連携して更新し、更新に失敗した場合は直前のrevisionを維持する。エージェントは同期または非同期APIを使って検索、読み取り、列挙、grepを実行できる。新しい`PageFileSystem`では、固定されたrevisionに対する遅延読み取りのみが許可され、shell、書き込み、任意のファイルシステムへのアクセス権限はない。この設計により、RAGの回答を一貫したスナップショットまで追跡でき、インデックスは更新済みなのに原文は旧バージョンのままという混在状態を回避できる。
同じバージョンで導入された`PublicSurface`では、公開するAgent、Team、ステートレスなMCPサービス、永続的に同期可能なWorkflowを明示的に選択できる。また、クォータ、リクエストと出力の上限、CORS、内部サービス認証を共通化できる。選択されていないTeamメンバーのルートが、それによって公開されることはない。社内エージェントをAPI化するチームにとって、AgentOSの全ルートを直接公開するよりも、攻撃対象領域を明確に定義しやすい。
その数時間後に公開された3.0.8では、`read_full_page`/`aread_full_page`が追加された。単一の有界SQL読み取りと読み取り専用スナップショットを使用して、ページ全体を返す。呼び出し側はrevisionを固定し、文字数と期限を制限できる。ページが大きすぎる場合は、そのまま`None`を返す。また、既存の読み取り処理と8つのworkerを共有する。新版ではSQLiteの`upsert_sessions()`も修正された。以前は、バッチデータに別のユーザーの`session_id`が含まれていると、その行の所有者を再割り当てして上書きできる可能性があった。現在は、単一レコードのupsertと同じowner predicateが適用される。
アップグレードのリスクも無視できない。`Knowledge`コンストラクタはkeyword-onlyに変更された。また、ページ検索ではPgVector HNSWの`ef_search`が暗黙的に200へ強制設定されなくなった。従来の挙動に依存するデプロイでは、パラメーターを明示的に設定する必要がある。さらに、移行期のバージョンで作成され、暗黙の`ef_construction=64`が設定されたインデックスは、手動で再構築しなければならない。エンジニアリングチームは、revisionの一貫性、公開ルートの一覧、SQLiteのマルチテナント分離、新しいHNSW設定における再現率とレイテンシを優先的にテストすべきだ。