Skip to content

永続メモリ

Triggerfishエージェントは永続的なクロスセッションメモリを持ちます。エージェントは会話、再起動、 トリガーの起動をまたいで事実、好み、コンテキストを保存できます。メモリは分類でゲートされています — エージェントはセッションtaintを超えてメモリを読んだり、その下のレベルに書いたりすることができません。

ツール

memory_save

事実や情報を永続メモリに保存します。

パラメータータイプ必須説明
keystringはい一意の識別子(例:user-nameproject-deadline
contentstringはい記憶するコンテンツ
tagsarrayいいえ分類タグ(例:["personal", "preference"]

分類は現在のセッションのtaintレベルに自動的に設定されます。 エージェントはメモリが保存されるレベルを選択できません。

memory_get

キーで特定のメモリを取得します。

パラメータータイプ必須説明
keystringはい取得するメモリのキー

メモリが存在し現在のセキュリティレベルでアクセス可能な場合にメモリコンテンツを返します。 高く分類されたバージョンが低いものをシャドウします。

自然言語を使用してすべてのアクセス可能なメモリを検索します。

パラメータータイプ必須説明
querystringはい自然言語の検索クエリ
max_resultsnumberいいえ最大結果数(デフォルト:10)

ステミングを使用したSQLite FTS5全文検索を使用します。結果は現在のセッションのセキュリティレベルで フィルタリングされます。

memory_list

オプションでタグでフィルタリングして、すべてのアクセス可能なメモリをリストします。

パラメータータイプ必須説明
tagstringいいえフィルタリングするタグ

memory_delete

キーでメモリを削除します。レコードはソフトデリートされます(監査のために非表示にされますが保持されます)。

パラメータータイプ必須説明
keystringはい削除するメモリのキー

現在のセッションのセキュリティレベルのメモリのみ削除できます。

メモリの仕組み

自動抽出

エージェントはユーザーが共有する重要な事実 — 個人情報、プロジェクトコンテキスト、好み — を 説明的なキーを使用してプロアクティブに保存します。これはSPINE.mdで導かれるプロンプトレベルの動作です。 LLMは何を保存するかを選択します;ポリシーレイヤーはどのレベルで保存するかを強制します。

分類ゲーティング

すべてのメモリレコードは保存時のセッションtaintと同じ分類レベルを持ちます:

  • CONFIDENTIALセッション中に保存されたメモリはCONFIDENTIALとして分類されます
  • PUBLICセッションはCONFIDENTIALメモリを読むことができません
  • CONFIDENTIALセッションはCONFIDENTIALPUBLICの両方のメモリを読むことができます

これはすべての読み取り操作でのcanFlowToチェックによって強制されます。LLMはこれをバイパスできません。

メモリのシャドウイング

同じキーが複数の分類レベルに存在する場合、現在のセッションから見える最も高く分類されたバージョンのみが 返されます。これにより分類境界を越えた情報漏洩を防ぎます。

例: user-namePUBLIC(パブリックチャット中に設定)とINTERNAL(プライベートセッション中に更新) の両方に存在する場合、INTERNALセッションはINTERNALバージョンを見ますが、PUBLICセッションは PUBLICバージョンのみを見ます。

ストレージ

メモリはStorageProviderインターフェース(セッション、cronジョブ、todosに使用されている同じ抽象化) を通じて保存されます。全文検索はステミングによる高速な自然言語クエリのためにSQLite FTS5を使用します。

セキュリティ

  • 分類はPRE_TOOL_CALLフックで常にsession.taintに強制されます — LLMはより低い分類を選択できません
  • すべての読み取りはcanFlowToでフィルタリングされます — セッションtaintを超えるメモリは返されません
  • 削除はソフトデリートです — レコードは非表示にされますが監査のために保持されます
  • エージェントは高く分類されたデータを読んでより低いレベルに再保存することでメモリの分類をエスカレートできません(ライトダウン禁止が適用されます)

SECURITY LLMはメモリの分類を選択しません。ポリシーレイヤーによって常に現在の

セッションのtaintレベルに強制されます。これは設定によって変更できないハードな境界です。 :::