ミラ・ジョヴォヴィッチのMemPalaceを全行読んだ — Python 7,600行、星30K

Dev.to / 2026/4/9

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical Usage

要点

  • ミラ・ジョヴォヴィッチのAIメモリシステム「MemPalace」は、コンパクトな22ファイル、約7,625行のPythonコードベースで、公開から数日でGitHubスター30,000を獲得しており、本レビューではAIエージェント系プロジェクトとしての「コードに対するスター数」の強さが強調されている。
  • リポジトリの主な技術的価値は、4層構造のメモリスタック(Identity、Essential Story、On-Demand、Deep Search)で、必要なときだけ追加の文脈を読み込むことで、ウェイクアップコスト(約~600トークン)を最小化する設計になっている。
  • レビューでは「AAAK方言」機能が最初は「30xロスレス圧縮」として過大に宣伝されていたが、コミュニティの検証ではより多くのトークンを使用し、ベンチマークでも性能が悪いことが判明したと指摘されている。以後の訂正は、最も信頼できる更新として評価されている。
  • セキュリティ課題として、MemPalaceのフックス(hooks)システムにおいて、細工したSESSION_IDを通じてサニタイズ(無害化)される前にシェル展開が起きる可能性がある問題が見つかっており、ローカルのみのプロジェクトだという位置づけであっても修正が必要となるリスクが示されている(issue #110)。
  • 検索機能はシンプルだと説明されている。小さな検索モジュールがChromaDBにメタデータフィルタリング付きでクエリを投げており、報告されている取得(リトリーバル)の改善は、標準的なChromaDBの「where」句によるフィルタリングに起因するとされている。

Milla Jovovich――はい、『バイオハザード』の女優――は、MemPalace という AI メモリシステムをリリースしました。4日後には GitHub のスターが 30,000 件になりました。私はソースコードをすべて読みました。

Repo: milla-jovovich/mempalace

数字

中核となる mempalace/ ディレクトリは Python ファイル 22 本、全 7,625 行です。3万スターのプロジェクトとしてはコンパクトです。比較として、別のAIメモリプロジェクトである OpenHands には Python の行数が 287,000 行あります。

これは批判ではありません――小さなコードベースは良いこともあります。ただ、AIエージェント分野で私が目にした中で、ここはスター数に対するコード量の比率が最も高いです。

実際に良い点:4層メモリスタック

layers.py(515行)が本当の貢献です:

  • Layer 0: Identity(約100トークン)――常に読み込まれる。私は誰で、誰と仕事をしているのか。
  • Layer 1: Essential Story(約500〜800トークン)――常に読み込まれる。すべての会話からの主要な出来事。
  • Layer 2: On-Demand(トピックごとに約200〜500トークン)――特定のプロジェクトが出てきたときに読み込まれる。
  • Layer 3: Deep Search(無制限)――要求に応じた ChromaDB のセマンティック検索。

起床コストは約600トークンです。毎日AIを使う6か月で、会話の総計は約19.5Mトークンになります。MemPalace は開始時に 170 トークンしか読み込みません。これは良い設計パターンです。

売りにされすぎている点:AAAK 方言

AAAK(dialect.py、952行)は、最大のモジュールであり、最大の論争点でもあります。

元のREADMEは「30xのロスレス圧縮」をうたっていました。コミュニティは48時間以内にこれを否定しました:

  • 実際のトークナイザーでは、AAAK は生テキストよりも「多くの」トークンを使用している(73 対 66)
  • LongMemEval ベンチマークでは、AAAK モードが 84.2% で、生モードの 96.6% を下回る――12.4ポイントの後退

作成者たちは、これらの問題を認める正直な訂正を公開しました。しかるべき評価をすると、その訂正が、このリポジトリで最も信頼できるものです。

誰も触れていないセキュリティ問題

フックスシステムにはシェルインジェクションの経路があります。precompact フックでは、SESSION_ID がサニタイズの前にシェル展開を経ます。細工されたセッションIDで任意のコマンドを実行できてしまいます。

ローカル利用だけなら致命的ではありませんが、「安全なローカル専用」として売り込んでいるプロジェクトなら、これは修正が必要です(issue #110 として追跡されています)。

検索はどれくらいシンプルなのか?

searcher.py は 152 行です。任意のメタデータフィルタ(wing と room)を指定して ChromaDB.query() を呼び出します。README の「+34% の取得ブースト」は、ChromaDB の標準的な where 句によるフィルタリングです――どの ChromaDB ユーザーでも、これを無料で得られます。

結論

MemPalace は詐欺ではありません。4層メモリスタックは役に立つ設計パターンです。ChromaDB ベースのローカルストレージも機能します。外部APIへの依存ゼロは、確かな利点です。

ただし、README はコードを盛りすぎています。AAAK の圧縮は圧縮ではありません。ベンチマークの数値には注意書き(アスタリスク)が必要です。「+34% のブースト」は標準的なデータベース機能です。

もし1つのファイルだけ読むなら、layers.py を読んでください。あの 515 行の方が、マーケティングの主張より価値があります。

完全な分解(teardown)

アーキテクチャ図、セキュリティ監査、OpenHands/Claude Code/Letta とのクロスプロジェクト比較:

github.com/NeuZhou/awesome-ai-anatomy/tree/main/mempalace

私たちは他にも 13 の AIエージェントプロジェクトについて、ソースコードレベルの分解を行っています:

github.com/NeuZhou/awesome-ai-anatomy