MemoryLake
すべての記事に戻る
News2026年9月4日·12 分で読了

インデックス化されたセッションログが想起するのは「かつて発言したこと」であり、「今も正しいこと」ではない (2026)

あなたのコーディングエージェントは、何ヶ月にもわたってプロジェクトの詳細な記録を保持し続けています。すべての検索、すべての行き止まり、すべての撤回、「やっぱり、その方法はやめよう」というすべての発言――そのすべてがマシンのセッションログに眠っており、何一つ役に立っていません。

2026年9月3日、Hugging Faceはそれらのログをエージェントがクエリできる形に変換するオープンソースツール funes をリリースしました。Claude Code、Codex、pi、Hermesをサポートし、ローカルで動作し、エージェントごとに1つのコマンドでセットアップできます。アイデアは素晴らしく、実装も配慮が行き届いています。

また、このプロジェクトが機能として明確に述べている設計上の選択肢があり、その選択を理解することこそが本記事の核心です。

"生の証拠がそのまま残る: 書き込み時に事実へと蒸留(distill)されるものは何もありません。結果は常に、それを生成したターン(発言)へと遡ることができます。"

何も蒸留されない。これにより、完璧なプロベナンス(来歴)が得られます。しかしそれは、何も修正されないことも意味します。あなたのアーカイブは、3月に撤回した決定と、それに代わる決定をどちらも忠実に保存します。この2つのうちどちらが必要かは、あなたが投げかける質問によって異なり、そしてその2つの質問は一見するとほぼ同じに見えます。

始める前に、1つ境界線を引いておきます。これは「RAG対メモリー」の議論ではありません。そちらはドキュメントの検索に関するものであり、RAGがメモリーではない理由でカバーされています。今回のテーマは、あなた自身の会話を検索することであり、これは異なる対象であり、異なる失敗モードを持っています。

トランスクリプト・インデックスが実際に何を行うか

診断は正しく、プロジェクト自身が最初にそれを認めている

funes は、先行する議論を評価し、その上で限定条件を付けるという、多くのツールよりも優れたスタートを切っています。

"診断は正しいものの、トレースは潜在的なメモリーにすぎません。エージェントのセッションログは、依然として単なるアーカイブです。1万ターンに及ぶ会話の中から『なぜストリーミングパーサーの使用をやめたのか?』をgrepで探し出すことはできません。エージェントが作業中にこれらのトレースを利用するには、インデックス化、検索、ランキング、そして正確なプロベナンス(来歴)が必要です。"

この一節のすべての節が真実です。アーカイブはメモリーではありません。grepは1万ターンにはスケールしません。そして、ここで挙げられている4つの要素(インデックス化、検索、ランキング、プロベナンス)こそが、ログの山を実用的なものへと変えるものです。

ドキュメントに記載されたメカニズム

書き込みパスは決定論的です。「1つの決定論的なパイプラインが、サポートされているすべてのトレースを同じターン&ブロックの形状にパースし、チャンク化し、固定されたローカルモデルで埋め込み(embed)を行い、ローカルのLanceデータセットに書き込みます。」

読み込みパスはハイブリッドです。「クエリはベクトル検索とBM25検索を組み合わせ、それらのランキングを融合し、クロスエンコーダーで候補をリランクし、新しさ(recency)によって重み付けを再調整し、隣接するチャンクを付加します。」

セットアップはエージェントごとに1つのコマンドで完了し、これにより「最初のインデックスが構築され、エージェントにrecall(想起)ツールとgetツールが付与され、完了した各ターンをインデックス化する自動化処理がインストールされます。」インデックス化はインクリメンタル(漸進的)であり、「履歴全体を再度埋め込むのではなく、新しい実行が新しいターンを追加」し、古いコンテンツは「制限されたステップでバックフィル(遡及補完)」できます。

返される内容は未加工です。「recallはサマリーではなく元のテキストを返し、それがどこから来たのか(エージェント、タイムスタンプ、セッション、ターン)を正確に示します。」

認めるべき3つの特性

プロジェクトは3つの特性を挙げており、そのすべてが本物です。

クロスエージェント・カバレッジ。「Claude Code、Codex、pi、Hermesはすべて同じ形状で書き込みます。recallはそれらの履歴を横断し、ヒットしたすべての項目がどのエージェントによって生成されたかを示します。」4つのエージェントにわたって正規化された1つの形状は純粋に有用であり、これはカテゴリとしてのクロスエージェント・メモリーの背後にある直感と同じです。

デフォルトでローカル。「アカウントやHubリポジトリは不要です。ホストされたモデルがインデックス化のためにセッションを処理することはありません。埋め込みとリランクはあなたのマシン上で実行され、コーディングエージェントが推論を行います。」トランスクリプトをサードパーティに送信できない人にとって、これは単なる好みではなく、必須要件です。

所有権。 メモリーをデータセットにバインドし、「別のマシンで同じコマンドを実行すれば、メモリーはそこに追従します。」Hubは「他のデータセットに対してすでに提供している所有権、アクセス制御、バージョン管理、配信」を提供します。

また、認証情報の取り扱いステップについても具体的に説明されています。「Hubに到達する前に、インデックス化の過程で認証情報はすでに墨消し(redact)されています。パブリッシュ時にはすべてのチャンクが再度スキャンされ、依然として機密情報のように見えるものは除外されます。」プロジェクトは「何がカバーされ、何がカバーされないか」について、自身の SECURITY.md を参照するよう促しており、これはスキャナーをドキュメント化する正しい方法です。

これによって変わること、変わらないこと

1つの課題を完全に解決します。「ストリーミングパーサーについて何と言っていたか?」という問いに、全く答えられない状態から、数秒で答えられるようになります。もし質問が記録に関するもの(何が、いつ、どのエージェントによって、どのような言葉で議論されたか)であれば、インデックス化されたアーカイブが正しいツールであり、それに代わるものはありません。

ほぼ同じに見える質問には答えられません。「パーサーに関する私たちの規約は何か?」は異なるクエリです。アーカイブには、あなたが断念したアプローチに関する熱狂的な3時間の探求も含め、これまでにパーサーについてなされたすべての発言が含まれています。関連性ランキングは、どれが現在も有効であるかを知りません。なぜなら、書き込み時に一方が他方に取って代わられたことを記録したものは何もないからです。

新しさによる重み付けは助けになりますが、解決には至りません。 パイプラインは「新しさによって重み付けを再調整」します。これは正しいヒューリスティックですが、部分的な解決策にすぎません。4つの簡潔なメッセージで覆された決定は、その前に交わされた長大で詳細な、しかし間違っていた議論よりもテキストとしての重みが小さくなります。新しさは後押ししますが、分量が依然として勝ってしまいます。

決定と思索を区別しません。 トランスクリプトは、「おそらくXに切り替えるべきだ」という発言を、「Xに切り替える」という発言と同じ忠実度で記録します。どちらもターンであり、どちらもインデックス化されます。どちらにもラベルは付いていません。

キュレーション作業が発生するかどうかではなく、どこで発生するかを変えるだけです。 書き込み時の蒸留がないため、解決(これが最新であり、あれは置き換えられた)は、クエリごとに読み込み時、つまりエージェントの推論内で行われなければなりません。それは機能するかもしれませんが、一度だけ行うのではなく、無限に繰り返される作業になります。

自身のスコープに対して誠実です。「『見知らぬ人としてのエージェント』問題は、すでに1台のマシン上で解決されています。しかし、次のエージェントが別の場所で実行されているとき、メモリーはさらに有用になります。」これは、ローカル層がカバーする範囲とカバーしない範囲を正確に表しています。

人々がここから誤解しがちなこと

「ログはすでに私のメモリーだった。インデックス化するだけでよかったのだ。」 半分は正解ですが、プロジェクト自体はこれよりも慎重です。「トレースは潜在的なメモリーにすぎません。」インデックス化はアーカイブをクエリ可能にしますが、それを信頼できる唯一の情報源(オーソリティ)にするわけではありません。

「プロベナンス(来歴)があるということは、回答を信頼できるということだ。」 プロベナンスとは、主張がどこから来たのかを検証できるということであり、これは価値がありますが、信頼性とは異なります。後に撤回した決定の完璧にソースが明示された引用は、完璧にソースが明示されていると同時に、今日においては間違っています。

「蒸留しないということは、情報の損失がないということだ。」 証拠の損失はありませんが、判断の捕捉もありません。ある発言が別の発言に取って代わったという知識も情報であり、書き込み時の蒸留こそが通常それを記録する場所です。

「サービスの代わりにデータセットを使うことで解決する。」 プロジェクトはこの位置づけを明確にしています。「あなたのメモリーは、別のメモリーサービスのアカウントになるわけではなく、それをレンタルし直す必要もありません。」これは正当な設計姿勢です。しかし、これは所有権に関する問いに答えているのであって、最新性に関する問いに答えているのではありません。アーカイブを完全に所有していても、その中の矛盾する記述のどちらが有効であるかは分からないままです。

「では、キュレートされたメモリーはアーカイブの非可逆圧縮にすぎないのか。」 この比較は一長一短であり、それが公平な見方です。アーカイブはすべてを保持し、何も解決しません。キュレートされたストアは解決を行いますが、その解決が間違っている可能性もあります。成熟した答えは、これらは競合するものではなく、補完し合うレイヤーであるということです。これは、AIメモリー vs RAGで説明されているように、RAG対ストアの議論が最終的にたどり着いた結論とほぼ同じです。

「ローカル専用なら何も心配する必要はない。」 ローカルであれば、サードパーティへのトランスクリプト送信を避けることができます。しかし、トランスクリプトに画面上にあったものが何でも含まれてしまうという事実は避けられません。インデックス化時の認証情報の墨消しとパブリッシュ時のスキャンは、文書化された制限を伴う現実的な緩和策であり、それらの制限を理解することは、この形態のツールを採用する上での一部です。これはAIメモリーのセキュリティの背後にある懸念事項です。

解決策:証拠にはアーカイブを、現在の回答にはストアを使用する

ステップ 1: ツールを整理する前に質問を整理する

実際にプロジェクトについてエージェントに投げかける質問を10分かけて書き出し、それぞれにラベルを貼ってみてください。

証拠に関する質問(Evidence questions)は、記録に関するものです。「これを決めたのはいつか?」「誰が異議を唱えたか?」「前回発生したエラーは何か?」「これを試したターンを見せてほしい。」これらはプロベナンスを伴う元のテキストを求めており、インデックス化されたアーカイブが正しい答えです。

状態に関する質問(State questions)は、現在に関するものです。「ここでの規約は何か?」「どのサービスがこれを所有しているか?」「あのワークアラウンドはまだ必要か?」これらは1つの最新の回答を求めていますが、アーカイブは代わりに、これまでに語られたすべての内容をランク付けしたリストを提示します。

ほとんどのチームの質問はおおむね半々に分かれますが、これらが2つの異なるカテゴリであることに気づいている人はほとんどいません。

ステップ 2: 1つの状態に関する質問に対してrecallが何を返すかを確認する

私の言葉を鵜呑みにするのではなく、この違いを最も手軽に確認する方法がこれです。

あなたのチームが実際に覆した決定を1つ選んでください。アーカイブに対して、その決定についてではなく、実際の業務で行うようにその「トピック」について質問してみてください。そして、上位の結果を読んでみてください。

通常、新しさによる補正を伴いつつ、テキストの関連性によってランク付けされた両方の立場が返ってきます。これはツールが設計通りに正確に動作している証拠です。同時に、両方を提示されたエージェントが、今後のすべてのクエリにおいて、どちらが意図されたものかを、何も語っていない証拠から判断しなければならなくなる瞬間でもあります。

何がそれを解決するかを考えてみてください。どの規約が有効で、いつ変更されたかを示す、どこかにある「たった1行」です。その1行はアーカイブには存在しません。なぜなら、書き込み時にそれを生成するよう求められたプロセスが何もなかったからです。

ステップ 3: 解決策を一度書き留め、それ以外はすべてアーカイブに任せる

状態に関する質問に答えるレイヤーは小規模です。それはトランスクリプトのコピーではなく、そうあるべきでもありません。

そこには解決策(決議事項)が保持されます。現在の規約、以前の決定に取って代わった決定、非推奨のものが依然として存在する理由、社内用語の意味、どのチームがどの領域を所有しているかなどです。ほとんどのプロジェクトでは10〜50行程度であり、検索による推測ではなく、誰かが決定したことによって曖昧さが排除されます。

証拠にはアーカイブを使い続けましょう。解決策の正当性を証明する必要があるとき、プロベナンスを伴うトランスクリプトはまさに参照すべき最適な対象です。そして、解決策こそが、月曜日の朝にエージェントが読み取るべきものです。MemoryLakeは3つのステップでセットアップできます。

ステップ 1: APIキーを作成する

サインインし、ダッシュボードからAPIキーを生成します。このストアは意図的に小さく、読み取りやすいように設計されているため、次のステップが短くて済みます。

解決済みの決定がトランスクリプトアーカイブとは別の場所に保存されるように、MemoryLakeのAPIキーを作成する
解決済みの決定がトランスクリプトアーカイブとは別の場所に保存されるように、MemoryLakeのAPIキーを作成する

ステップ 2: 最初のメモリーをアップロードする

履歴ではなく、解決策を書き込みます。現在の規約、置き換えられたことが明記された過去の決定、ドメイン用語、所有権、理由を伴う制約などです。

状態に関する質問に対する現在の回答をMemoryLakeに一度アップロードする
状態に関する質問に対する現在の回答をMemoryLakeに一度アップロードする

トランスクリプトはそのままにしておきます。それらをインデックス化することは、別個の価値ある作業であり、このレイヤーがそれを置き換えようとしているわけではありません。

ステップ 3: AIとエージェントを接続する

エージェントをストアに向けます。状態に関する質問は1つの最新の回答を受け取り、証拠に関する質問はアーカイブに送られます。どちらも他方の仕事を求められることはありません。これは、1つ上の抽象度における長いコンテキストがメモリーではない理由での議論と同じです。

それらのトランスクリプトを書き出すエージェントを、MCPとAPIを介してMemoryLakeに接続する
それらのトランスクリプトを書き出すエージェントを、MCPとAPIを介してMemoryLakeに接続する

実務においてこれがもたらす変化

最初の変化は、「エージェントが、私たちがやめたはずのことを提案してきた」という現象が説明可能になることです。これは検索の失敗ではありません。アーカイブには両方の回答が含まれており、一方が置き換えられたことを示すマークが何もなかったからです。

2つ目は、ログのインデックス化に明確な価値を見出せるようになることです。なぜなら、ログに対して間違った期待を抱かなくなるからです。証拠に関する質問に適切に答えてくれるアーカイブは、真の資産です。

3つ目は、解決策レイヤーがレビュー可能なほど小さく保たれることです。50行の現在の規約であれば、人間が読んで修正することができますが、1万ターンでは不可能です。これが、エージェントのメモリーに保存する量を減らすことが、通常、多くを保存することよりも優れている理由です。

インデックス化されたセッションアーカイブを使用するためのベストプラクティス

  • 質問にラベルを貼る。 証拠に関する質問は記録を求め、状態に関する質問は1つの回答を求めます。
  • 結果には矛盾が含まれることを想定し、解決策を期待しない。 書き込み時に何も蒸留されないため、撤回の両面が等しくインデックス化されます。
  • 新しさだけに頼らない。 新しさは重み付けを再調整するだけであり、裁定を下すわけではありません。簡潔な決定は、冗長な探求に負けてしまいます。
  • プロベナンス(来歴)をその得意分野に活かす。 主張の出所を検証するために使い、それが現在も有効であることを証明するために使わない。
  • セキュリティドキュメントを読む。 認証情報の墨消しとパブリッシュ時のスキャンは現実的な機能ですが、文書化された制限があります。
  • 解決策は別途書き留める。 置き換えられた決定は、それを生成したトランスクリプトの外側のどこかで、その旨を明記すべきです。
  • 解決策レイヤーは短く保つ。 誰もレビューしないほど長くなってしまうと、アーカイブと同じように形骸化(ドリフト)してしまいます。
  • 2つのレイヤーを補完的なものとして扱う。 証拠と現在の状態は異なるタスクであり、1つのツールで両方をやろうとすると、どちらもうまくいきません。

結論

セッションログをインデックス化することは素晴らしいアイデアであり、その論拠は、周囲の多くの報道よりも、それを構築している人々によって慎重に述べられています。アーカイブはメモリーではありません。インデックス化、検索、ランキング、そしてプロベナンスがそれを有用にします。

しかし、それらがアーカイブを「最新」にすることはできません。「書き込み時に事実へと蒸留されるものは何もない」というのは、現実的なトレードオフに対する誠実な説明です。あなたはこれまでに発言したすべての言葉を手に入れることができますが、どの言葉が今も有効であるかの記録は得られません。証拠にはアーカイブを使い、解決策は読めるほど小さな場所に書き留め、どちらのツールにも他方の仕事を期待するのをやめましょう。

よくある質問

エージェント of セッションログは、すでにメモリーと言えますか?

それだけでは言えません。funes が述べているように、「トレースは潜在的なメモリーにすぎません。エージェントのセッションログは、依然として単なるアーカイブです。」そして、作業中にそれらを利用するには「インデックス化、検索、ランキング、正確なプロベナンス(来歴)が必要です。」インデックス化はアーカイブをクエリ可能にしますが、その内容を最新にするわけではありません。

「書き込み時に何も蒸留されない」ことの実際の代償は何ですか?

判断(裁定)です。この特性はメリットとして述べられています(「生の証拠がそのまま残る: 書き込み時に事実へと蒸留されるものは何もない」)。しかしその代償として、矛盾する2つの発言のどちらが他方を置き換えたのかを記録するステップが存在しません。その解決は、クエリごとの読み込み時に持ち越されることになります。

新しさによるランキングで、古い決定の問題は解決しませんか?

部分的には解決します。クエリパイプラインは「新しさによって重み付けを再調整」します。これは正しいヒューリスティックです。しかし、分量に勝ることはできません。数通の短いメッセージで覆された決定は、それが置き換えたアプローチに関する長大な議論よりも、テキストとしてのシグナルが弱くなります。

ローカルインデックスは、ホスト型のメモリーサービスよりも安全ですか?

「埋め込みとリランクはあなたのマシン上で実行され」、ホストされたモデルがセッションを処理しないため、特定の種類のリスクは排除されます。しかし、トランスクリプトに画面上に表示されていたものが何でも含まれてしまうという事実は排除されません。インデックス化時の認証情報の墨消しとパブリッシュ時のスキャンは、文書化された制限を伴う現実的な緩和策です。

ログをインデックス化すべきですか、それともメモリーストアをキュレートすべきですか?

異なる質問に対して、両方を行うべきです。証拠(何が、いつ、どのエージェントによって、どのような言葉で語られたか)にはインデックスを。状態(今何が正しいか)にはキュレーションを。これらは異なる対象であり、その区別は AIメモリー vs ベクトルデータベース で示されているものと同じです。

キュレートされたレイヤーはどのくらいの大きさにする必要がありますか?

人々が予想するよりも小さくて済みます。履歴ではなく解決策(現在の規約、その旨がマークされた過去の決定、用語集、所有権、理由を伴う制約など)を保持します。ほとんどのプロジェクトでは数十行程度であり、短く保つことこそがレビュー可能性を維持する鍵です。