セッションとメモリ

セッション

セッションの仕組み

エージェントとのすべての会話はセッション内で行われます。セッションはコンテキスト(どのエージェント、どのチャンネル、どのチャット)をエンコードするキーで識別されます。

セッションはすべてのメッセージ、ツール呼び出し、結果の完全なトランスクリプト(追記専用のJSONL)を維持します。このトランスクリプトこそが、エージェントに進行中の会話についてのコンテキストを与えるものです。

セッションキー

セッションはコンテキストに基づいて自動的にルーティングされます:

パターン 意味
agent:main:main メインの直接会話
agent:<id>:<channel>:group:<id> 特定のチャンネルでのグループチャット
agent:<id>:<channel>:channel:<id> チャンネル/ルームの会話
cron:<jobId> スケジュールされたジョブの実行
hook:<uuid> Webhookトリガーによる実行

セッションのライフサイクル

トークン追跡

セッションはコスト監視とコンテキストウィンドウ管理のために累積トークン使用量(入力、出力、キャッシュ読み取り、キャッシュ書き込み)を追跡します。


コンパクション

コンパクションとは何ですか?

会話がモデルのコンテキストウィンドウ制限に近づくと、Neotaskはそれをコンパクト化します, , 古いメッセージを凝縮された概要にまとめ、その概要と最近のメッセージを持つ新しいセッションを開始します。

仕組み

  1. 検出, コンテキストの使用量を監視(デフォルトトリガー:コンテキストウィンドウの80%)
  2. 要約, 古いメッセージがコンパクションエントリとして要約される
  3. 新しいセッション, 先頭に要約が注入された新しいセッションが開始
  4. 保存, 古いトランスクリプトは履歴のために保存されるが、コンテキストには読み込まれない

設定

手動コンパクション

/compactコマンドでいつでも手動でコンパクションをトリガーできます。重要な情報を失わずにコンテキストをリセットしたい場合に便利です。


メモリ

エージェントメモリ

各エージェントはセッション間で重要な情報を永続化するためのメモリシステムを持っています:

ベクター検索

Neotaskはエージェントメモリに対するベクター類似検索をサポートします:

  1. インデックス作成, メモリファイルが埋め込みを使用してインデックス化される
  2. 検索, エージェントが自然言語でメモリを照会(「ユーザーはAPIの好みについて何と言っていましたか?」)
  3. 想起, 関連するメモリが類似度によってランク付けされて返される

メモリプラグイン(LanceDB)

LanceDBメモリプラグインは高度なベクターストレージを提供します:

自動想起

セッション開始時に、関連するメモリを自動的に想起してエージェントのコンテキストに注入できます。これにより、会話履歴全体を読み込まずにセッション間の継続性がエージェントに与えられます。


セッションの永続化

すべてのセッションデータはローカルに保存されます:

クリーンアップ