代理工具
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設定における再現率とレイテンシを優先的にテストすべきだ。