永続メモリ
Triggerfishエージェントは永続的なクロスセッションメモリを持ちます。エージェントは会話、再起動、 トリガーの起動をまたいで事実、好み、コンテキストを保存できます。メモリは分類でゲートされています — エージェントはセッションtaintを超えてメモリを読んだり、その下のレベルに書いたりすることができません。
ツール
memory_save
事実や情報を永続メモリに保存します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
key | string | はい | 一意の識別子(例:user-name、project-deadline) |
content | string | はい | 記憶するコンテンツ |
tags | array | いいえ | 分類タグ(例:["personal", "preference"]) |
分類は現在のセッションのtaintレベルに自動的に設定されます。 エージェントはメモリが保存されるレベルを選択できません。
memory_get
キーで特定のメモリを取得します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
key | string | はい | 取得するメモリのキー |
メモリが存在し現在のセキュリティレベルでアクセス可能な場合にメモリコンテンツを返します。 高く分類されたバージョンが低いものをシャドウします。
memory_search
自然言語を使用してすべてのアクセス可能なメモリを検索します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
query | string | はい | 自然言語の検索クエリ |
max_results | number | いいえ | 最大結果数(デフォルト:10) |
ステミングを使用したSQLite FTS5全文検索を使用します。結果は現在のセッションのセキュリティレベルで フィルタリングされます。
memory_list
オプションでタグでフィルタリングして、すべてのアクセス可能なメモリをリストします。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
tag | string | いいえ | フィルタリングするタグ |
memory_delete
キーでメモリを削除します。レコードはソフトデリートされます(監査のために非表示にされますが保持されます)。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
key | string | はい | 削除するメモリのキー |
現在のセッションのセキュリティレベルのメモリのみ削除できます。
メモリの仕組み
自動抽出
エージェントはユーザーが共有する重要な事実 — 個人情報、プロジェクトコンテキスト、好み — を 説明的なキーを使用してプロアクティブに保存します。これはSPINE.mdで導かれるプロンプトレベルの動作です。 LLMは何を保存するかを選択します;ポリシーレイヤーはどのレベルで保存するかを強制します。
分類ゲーティング
すべてのメモリレコードは保存時のセッションtaintと同じ分類レベルを持ちます:
CONFIDENTIALセッション中に保存されたメモリはCONFIDENTIALとして分類されますPUBLICセッションはCONFIDENTIALメモリを読むことができませんCONFIDENTIALセッションはCONFIDENTIALとPUBLICの両方のメモリを読むことができます
これはすべての読み取り操作でのcanFlowToチェックによって強制されます。LLMはこれをバイパスできません。
メモリのシャドウイング
同じキーが複数の分類レベルに存在する場合、現在のセッションから見える最も高く分類されたバージョンのみが 返されます。これにより分類境界を越えた情報漏洩を防ぎます。
例: user-nameがPUBLIC(パブリックチャット中に設定)とINTERNAL(プライベートセッション中に更新) の両方に存在する場合、INTERNALセッションはINTERNALバージョンを見ますが、PUBLICセッションは PUBLICバージョンのみを見ます。
ストレージ
メモリはStorageProviderインターフェース(セッション、cronジョブ、todosに使用されている同じ抽象化) を通じて保存されます。全文検索はステミングによる高速な自然言語クエリのためにSQLite FTS5を使用します。
セキュリティ
- 分類は
PRE_TOOL_CALLフックで常にsession.taintに強制されます — LLMはより低い分類を選択できません - すべての読み取りは
canFlowToでフィルタリングされます — セッションtaintを超えるメモリは返されません - 削除はソフトデリートです — レコードは非表示にされますが監査のために保持されます
- エージェントは高く分類されたデータを読んでより低いレベルに再保存することでメモリの分類をエスカレートできません(ライトダウン禁止が適用されます)
SECURITY LLMはメモリの分類を選択しません。ポリシーレイヤーによって常に現在の
セッションのtaintレベルに強制されます。これは設定によって変更できないハードな境界です。 :::
