コンテンツにスキップ

メモリモデル

Asterel における記憶は、発言録のキャッシュではありません。コンパニオンが時間をまたいで認識可能であり続けるための基盤のひとつです。

ランタイムは「何が起きたか」「それが何を意味するか」「どれだけ有用だったか」「アイデンティティとして何が守られるべきか」を分けます。これらは別々の記憶の仕事なので、別々のレイヤーと投影として扱います。

レイヤー 役割 典型的な内容
作業記憶 短期のセッション文脈 直近ターン、現在の話題、局所的な継続性の手がかり
エピソード記憶 イベント単位の観測 何が、いつ、誰により、どの部屋で言われたか
意味記憶 整理された事実 安定したユーザー事実、好み、関係事実
手続き記憶 学習された振る舞い方 原則、うまくいった相互作用パターン、ツール利用の教訓
アイデンティティ記憶 持続する自己・関係の不変条件 キャラクターの同一性、保護された関係上の約束

作業記憶は現在のターンを一貫させます。エピソード記憶は証拠を保存します。意味記憶は、すべてのイベントを再生しなくても証拠を使える形にします。手続き記憶は「次にどう良くするか」を記録します。アイデンティティ記憶は、気軽に揺らいではいけないものを守ります。

正本はイベント指向です。ランタイムが想起、確認、訂正しやすいように、派生ビューを持ちます。

  • 追記専用の記憶イベント
  • 現在解決済みの事実としての belief slot
  • 検索のための retrieval unit
  • GraphRAG 型の継続性のための graph entity / edge
  • ガバナンスのための削除・訂正履歴

運用者向けの表、カード、レビュー画面は投影です。訂正体験を扱いやすくできますが、正本ではありません。

想起は記憶の丸ごと投入ではない

Section titled “想起は記憶の丸ごと投入ではない”

Asterel は生の記憶を毎ターンのプロンプトに貼ることを目指しません。想起は予算づけられ、フィルタされます。

ターン上の必要は、次の順で小さな文脈ブロックへ変換されます。

  1. スコープ付き想起クエリ
  2. ハイブリッド検索とグラフ活性
  3. 信頼度 / 安全性 / 露出のフィルタ
  4. 小さな文脈ブロック

良い想起は選択的です。ランタイムが知っているすべてではなく、現在のターンに必要な証拠だけを入れます。

ターン後の書き戻しは、応答送信後に何を保存するかを決めます。すべての文が記憶になるわけではありません。書き込み経路では次を分けます。

  • 作業記憶に留める一時的な文脈
  • 証拠として残すイベント
  • 十分な支持の後に昇格する事実
  • 履歴を持って以前の事実を無効化する訂正
  • 後から気軽に開示してはいけない機微情報

だから送信前検証が必要です。悪いターンは悪いメッセージであるだけでなく、記憶に流れれば悪い証拠になります。

コンパニオンは何かを知っていても、どの部屋でも言ってよいとは限りません。露出レールは、有用な接地情報と無差別な開示を分けます。

たとえば私的なユーザー事実は DM で共感を保つ助けになるかもしれませんが、方針と文脈が安全だと言えない限り、公開 Discord チャネルに出すべきではありません。メモリモデルは、部屋の種類、関係上の距離、信頼と結びついています。

PostgreSQL が推奨バックエンドです。持続する継続性には、実ストレージ、問い合わせやすさ、運用上の確認手段が必要だからです。Markdown は制約のある環境やオフライン用途の代替です。none は永続化を意図的に無効にするテストモードです。

持続する記憶がなくても Asterel はテキストを生成できます。ただし、その場合は完全なコンパニオン体験を動かしているとは言えず、関係継続に関する主張もその分だけ弱く読む必要があります。

記憶の失敗は、明確なエラーより先に振る舞いとして現れることがあります。

  • ユーザーが訂正した事実をコンパニオンが繰り返す。
  • 最近の詳細を適切な文脈の外で使いすぎる。
  • セッションをまたいで関係上の約束を忘れる。
  • 私的な接地情報を公開チャネルで開示する。
  • もっともらしいが薄く聞こえる。想起が証拠を供給していない。

これらは単なる検索ミスではなく、継続性の失敗です。