Skip to content

メモリシステム

N.E.K.O. のメモリシステムは、セッション間で永続的なコンテキストを提供し、キャラクターが過去の会話、ユーザーの好み、進化する関係性を記憶できるようにします。

ストレージレイヤー

レイヤーストレージ保持期間アクセスパターン
最近のメモリJSONファイル(recent_*.jsonスライディングウィンドウ直接読み取り、キャラクターごと
時間インデックス付きオリジナルSQLite(time_indexed_original永続時間範囲クエリ
時間インデックス付き圧縮版SQLite(time_indexed_compressed永続時間範囲クエリ
セマンティックメモリベクトルEmbedding(text-embedding-v4永続類似性検索

メモリが会話に流れ込む仕組み

  1. 新しいセッションが開始されると、システムは最近のメモリ(直近Nメッセージ)を即時コンテキストとして読み込みます。
  2. セマンティック検索が、現在のトピックに基づいて関連する過去の会話を取得します。
  3. 時間インデックス付きクエリが、時間的な参照(「昨日」「先週」)に対する時系列コンテキストを提供します。
  4. 取得されたすべてのメモリは、コンテキストとしてLLMシステムプロンプトに注入されます。

圧縮パイプライン

古い会話はコンテキストウィンドウのスペースを節約するため、定期的に圧縮されます:

Raw conversation ──> Summary model (qwen-plus) ──> Compressed summary

                                                   time_indexed_compressed に保存

ROUTER_MODEL(デフォルト:qwen-plus)が、どのメモリを完全に保持するか、圧縮するかを決定します。

メモリレビュー

ユーザーは http://localhost:48911/memory_browser で保存されたメモリを閲覧・修正できます。これは以下の問題に対処するのに役立ちます:

  • 「メモリ」として保存されたモデルのハルシネーション
  • キャラクターが内部化した不正確な事実
  • 会話の要約における繰り返しパターン

APIエンドポイント

完全なエンドポイントリファレンスについては、メモリREST APIを参照してください。

エンドポイントメソッド用途
/api/memory/recent_filesGETすべてのメモリファイルを一覧表示
/api/memory/recent_fileGET特定のメモリファイルの内容を取得
/api/memory/recent_file/savePOST更新されたメモリを保存
/api/memory/update_catgirl_namePOSTメモリ全体でキャラクター名を変更
/api/memory/review_configGET/POSTメモリレビュー設定

MIT ライセンスの下で公開。