プロダクト
記憶はどう古くなるか
プロジェクトには何か月もセッションページがたまり、その大半は役に立たなくなります。ai-memoryは各ページにスコアを付け、今も読まれているものを残し、残りは縮めるかマージできます。デフォルトの経路はLLMを呼ばず、ページを書き換える機能は、有効にするまですべてオフです。
古くなるもの、残るもの
記憶の4つの階層のうち、減衰するのは1つだけです。ピン留めページはどの階層でも対象外です。
作業記憶
進行中のセッションのためのメモです。セッションとともに終わります。
エピソード記憶
セッションごとに1ページ。古くなるのはこの階層です。誰も読まないページは数か月でコールドになります。
意味記憶
決定事項、概念、落とし穴。減衰しません。
手続き記憶
ルール、手順、ランブック。減衰しません。
LLMを使わない経路
定期実行のスイープが、ピン留めされていないエピソード記憶のページすべてにスコアを付けます。スコアは時間とともに下がり、ページが読まれるたびに上がります。

保持スコア
- デフォルト設定では、ページのスコアは約35日ごとに半分になります。0.20を下回るとコールド扱いです。
- 読まれるたびにスコアが加算されます。古い読み取りの効果も薄れていきます。
StaleまたはWrongのフィードバックを受けたページは、重要度が最低になります。- スコアが決めるのはスイープの動作です。検索のランキングは一切変えません。
# 3つとも任意です。指定しなければ、コールドページは共通の1本の曲線で追い出されます。
[decay]
compact_cold_episodic = true
dedup_cold_clusters = true
[decay.half_life_days]
working = 7
episodic = 365
常にオン
読まれるページは生き残る
検索でのヒット、ページを開くこと、リンク経由でたどり着くこと、
memory_exploreは、すべて読み取りとして数えます。読み取りはスコアを上げるだけです。デフォルトはオフ
階層ごとの半減期
[decay.half_life_days]で、階層ごとの減衰の速さを決めます。たとえば一時的なメモは短く、セッション履歴は長くできます。指定しなければ、スコアはこれまでとまったく同じです。デフォルトはオフ
コールドページのコンパクション
compact_cold_episodicを有効にすると、コールドページは概要、最初の段落の要約、残す価値のあるトークン(ファイルパス、URL、コード片、エラーコード、識別子)を残し、地の文を捨てます。無効なら、ページは追い出されます。デフォルトはオフ
ほぼ重複するページのマージ
dedup_cold_clustersを有効にすると、ほぼ同じ内容のコールドページを埋め込みでクラスタにまとめます。スコアが最も高いページが残り、ほかのページの保持トークンを取り込みます。ほかのページは置き換え済みになり、残ったページを指します。デフォルトはオフ
空のセッションを飛ばす
エントロピーフィルターが、ほぼ空のセッションページや繰り返しの多いセッションページを経験抽出パスから外します。LLMのプロンプトを組み立てる前の段階です。
memory_lintで実行
矛盾の疑いを知らせる
memory_lintは、重複ではないのに同じ話題を扱っている知識ページの組を報告し、どちらが新しいかを示します。報告は参考情報で、ページは編集しません。常にオン
ページごとの信頼度スコア
各ページに0から0.95の信頼度が付きます。裏付けとなる別々のセッションの数、最後のセッションの新しさ、矛盾するページの数から計算します。
explainの出力で確認できます。ランキングに影響するのは、belief_authority_weightを0より大きくした場合だけです。
夢見パス
重複排除はクラスタの事実を残します。夢見パスは同じクラスタをあなたのLLMに渡し、LLMがそれを筋の通った1ページに書き直します。離席中に動き、戻ってくると止まります。

必要なものは3つ
[dream] enabled = true、LLMプロバイダー、埋め込みモデルです。プロバイダーがなければ、LLMを使わない重複排除がこれまでどおり動きます。あなたが離れるのを待つ
クライアントからの操作が300秒間なければ実行が始まります。戻ってくると、次のクラスタの手前で中止します。
新規性の高いクラスタから
wikiにすでにある内容から最も遠いクラスタを先に処理します。この順序とアイドルでの起動は、HonchoのDreamerにならっています。
元のページは置き換え済みに
スコアが最も高いページが書き直されます。マージされた各ページはそのページを指すスタブになり、元の文章はバージョンの連鎖とgitに残ります。
マージごとに元ページを記録
どのページが各マージの材料になったかをエビデンス行に記録するので、でっち上げられた内容があれば追跡できます。出力はスキーマ検証済みのJSONで、実行ごとにレポートが残ります。
# LLMプロバイダーと埋め込みモデルも必要です。
[dream]
enabled = true
idle_window_secs = 300
max_clusters_per_run = 8
元に戻せるもの、戻せないもの
コンパクション、重複排除、夢見パスはwikiを通して書き換えるので、変更はどれも新しいバージョンとgitのコミットになります。
書き換えは元に戻せる
ai-memory restore-pageで、wikiのgit履歴からページ全体を復元できます。アップグレードでは何も変わらない
コンパクション、重複排除、夢見パスはデフォルトでオフです。アップグレードしてもスコアは変わらず、何も追い出されません。サーバーはマイグレーションの前にデータディレクトリをアーカイブします。
残したいものはピン留め
ピン留めページはスイープの対象になりません。意味記憶と手続き記憶のページは減衰しません。
クエリの方法をさらに
どれも既存のツールの任意の引数です。
引用付きの回答
memory_queryにanswer: trueを付けると、短い回答と、その出どころのページパスが返ります。LLMプロバイダーが必要で、Honchoのdialecticエンドポイントにならっています。回答の品質はまだ評価していないので、引用されたページを開いて確認してください。推論レベル
reasoning引数はminimalからmaxまであり、回答とmemory_exploreのトークン予算を決めます。ピン留めページを先頭に
pin_firstは、最大10件のピン留めページを検索結果の前に置きます。セッションのブリーフィングにもピン留めページが載るようになりました。関連ページ
memory_read_pageにinclude_relatedを付けると、リンクとバックリンクを3ステップ先までたどります。必要なら古いバージョンも
include_supersededは、置き換え済みのバージョンをラベル付きで検索結果に加えます。どのプロジェクトが答えたか
memory_statusは、解決したワークスペースとプロジェクト、その解決の経緯を報告します。
よくある質問
ai-memoryは古い記憶を削除しますか?
古くなるのはエピソード記憶のセッションページだけです。デフォルトでは、コールドページは追い出され、180日後に完全に削除されます。代わりにコールドページをコンパクションまたはマージする設定にでき、どちらも復元できます。ピン留めページ、意味記憶、手続き記憶のページは残ります。
記憶のエイジングにLLMは必要ですか?
いいえ。スコア付け、階層ごとの半減期、コンパクション、重複排除、矛盾の検出、信頼度スコアはLLMを使いません。重複排除と矛盾の検出は埋め込みを読みますが、これはデフォルトのローカル埋め込みモデルが生成します。LLMを呼ぶのは夢見パスだけで、デフォルトではオフです。
夢見パスとは何ですか?
オプトインのバックグラウンドジョブです。5分間アイドルが続くと、ほぼ重複するコールドページのクラスタを取り上げ、あなたのLLMが各クラスタを1ページに書き直します。元のページは置き換え済みになり、あなたが戻ると実行は止まります。
アップグレードすると、既存の記憶は変わりますか?
いいえ。コンパクション、重複排除、夢見パスはデフォルトでオフなので、アップグレードしてもスコアは変わらず、何も追い出されません。サーバーはマイグレーションの前にデータディレクトリをアーカイブします。
これらの機能で検索スコアは上がりますか?
まだ誰も測定していません。評価ハーネスで改善が示されるまで、プロジェクトはこれらを「リリース済み、オプトイン、効果は未検証」として扱います。