LoCoMo や LongMemEval のように読み出しの正答率だけを見ると、何でも保存するシステムの点が上がってしまいます。KiokuBench では、古い版が残っていないか、忘れる依頼の内容が残っていないか、ノイズや言語や大きさはどうかという記憶の中身も確かめます。

sepiace は2026年10月14日時点、ほかは2026年9月30日時点の結果です。Supermemory は2026年9月27日から28日にかけて API で測りました。オープンソースの Mem0 は9月29日に、ByteRover は9月30日に、手元で動かして測りました。

同じデータで、Claude Code の純正メモリと Claude Code + sepiace も比べました

KiokuBench Index

KiokuBench Index は、8つの指標を4つの柱にまとめ、1つの値にしたものです。0から100で、大きいほど良い値です。下の表は、会話をそのまま渡す経路での10人の合計から計算しました。緑で塗った値が、同じ経路のなかでいちばん良い値です。

KiokuBench v0.1 の会話そのままの経路での Index
  • sepiace96.1sepiaceIndex: 96.1覚える: 98.7置き換える: 98.0忘れる: 100.0整える: 88.3
  • Supermemory58.9SupermemoryIndex: 58.9覚える: 95.3置き換える: 95.0忘れる: 22.0整える: 60.5
  • ByteRover39.2ByteRoverIndex: 39.2覚える: 72.3置き換える: 19.0忘れる: 62.0整える: 27.7
  • Mem08.5Mem0Index: 8.5覚える: 96.3置き換える: 0.0忘れる: 0.0整える: 55.0
  • 全部保存8.0全部保存Index: 8.0覚える: 99.0置き換える: 0.0忘れる: 0.0整える: 41.7

棒にカーソルを合わせるか選ぶと、4つの柱の値が出ます。灰色の棒は、参考として載せた全部保存の基準です。

KiokuBench v0.1 の会話そのままの経路での Index と4つの柱
システムIndex覚える置き換える忘れる整える
会話そのまま
sepiace96.198.798.0100.088.3
Supermemory58.995.395.022.060.5
Mem08.596.30.00.055.0
ByteRover39.272.319.062.027.7
基準
全部保存8.099.00.00.041.7

計算のしかた

8つの指標を、0から1の大きいほど良い値にそろえてから、4つの柱にまとめます。

柱中身
覚える再現率、変更の反映、確認の質問の平均
置き換える1 − 古い版が残る
忘れる1 − 忘却の違反
整える1 − ノイズ率、1 − 言語の不一致、1 ÷ 圧縮の平均。圧縮が1を下回るときは1にします。

0.01を下回る柱は0.01にしてから、4つの柱の幾何平均を100倍します。

幾何平均にしたのは、柱を1つでも落とすと大きく下がるようにするためです。覚えるだけで忘れないシステムも、忘れるだけで覚えないシステムも、記憶としては使えません。下限の0.01は、柱が1つ0になっただけで、ほかの柱の差まで見えなくなるのを防ぎます。

8つの指標の値は、下の結果の表にあります。

結果

10人の合計です。緑で塗った値が、同じ経路のなかで良いほうです。

KiokuBench v0.1 の10人の合計
経路再現率変更の 反映古い版が 残る忘却の 違反ノイズ率言語の 不一致確認の 質問圧縮
会話そのまま
sepiace99%100%2%0%12%0%97%1.30
Supermemory98%100%5%78%20%42%88%2.30
Mem0100%100%100%100%47%9%89%4.78
ByteRover85%95%81%38%70%49%37%49.66
依頼文
sepiace99%99%13%0%0%0%96%1.03
Supermemory*183%78%35%65%18%42%82%2.06
Supermemory*290%83%46%2%8%42%77%1.80
Mem0*1100%99%100%100%2%1%88%1.79
ByteRover*193%97%83%25%40%45%34%27.92
変更の合図あり
sepiace99%99%25%0%0%0%94%1.15
Supermemory*192%90%11%40%12%44%89%1.95
Mem0*1100%100%100%100%2%2%91%1.80
ByteRover*196%99%91%20%38%39%33%28.22
基準
全部保存100%100%100%100%83%0%97%12.30
  1. *1 振り分けなし。忘れる依頼もほかの依頼と同じように渡し、システム自身に判断させます。sepiace と同じ条件です。
  2. *2 振り分けあり。忘れる依頼だけを Supermemory の forget-matching に渡します。

全部保存の基準は、会話の発言をすべてそのまま残したものです。確認の質問では、埋め込みで近い発言から順に文脈の上限まで渡します。

言語ごとの結果

KiokuBench v0.1 の言語ごとの結果
経路再現率変更の 反映古い版が 残る忘却の 違反ノイズ率言語の 不一致確認の 質問
会話そのまま(英語)
sepiace100%100%2%0%9%0%98%
Supermemory100%100%4%70%15%0%89%
Mem0100%100%100%100%44%0%90%
ByteRover83%96%74%35%69%0%61%
会話そのまま(日本語)
sepiace98%100%2%0%15%0%96%
Supermemory97%100%6%85%25%79%87%
Mem0100%100%100%100%50%17%87%
ByteRover87%94%88%40%70%87%13%
依頼文(英語)
sepiace99%98%14%0%0%0%94%
Supermemory*168%58%30%60%30%0%86%
Mem0*199%98%100%100%2%0%88%
ByteRover*197%100%82%20%36%0%54%
依頼文(日本語)
sepiace100%100%12%0%1%0%97%
Supermemory*198%98%40%70%7%81%77%
Mem0*1100%100%100%100%3%3%88%
ByteRover*190%94%84%30%43%80%14%
変更の合図あり(英語)
sepiace99%100%10%0%0%0%95%
Supermemory*187%84%2%15%20%0%95%
Mem0*1100%100%100%100%0%0%91%
ByteRover*194%100%90%10%35%0%51%
変更の合図あり(日本語)
sepiace99%98%40%0%1%0%93%
Supermemory*198%96%20%65%5%84%83%
Mem0*1100%100%100%100%3%5%92%
ByteRover*197%98%92%30%41%77%15%

読み取れること

  • 3つの経路のすべてで、sepiace は忘却の違反、ノイズ率、言語の不一致がもっとも低く、確認の質問がもっとも高くなりました。例外は変更の合図がある経路の古い版が残る割合で、Supermemory のほうが低くなりました。
  • その経路で sepiace の古い版が残る割合は25%で、日本語では40%でした。前回の測定では、22件のうち17件が一部の項目だけが変わった事実でした。たとえば「毎週火曜日の18時に市民プールで泳いでいる」に対して「水泳の時間を18時から18時30分へ変更した」と伝えた場合です。新しい文は時刻しか言っていないので、古い文を消すと市民プールが失われます。sepiace は記憶の本文を書き換えないので、両方を残します。
  • Mem0 は、古い版も忘れる依頼の内容もすべて残し、どちらもすべての経路で100%でした。これは Mem0 2.2.1 の設計どおりです。add は新しい記憶を足すだけで、既存の記憶を書き換えたり消したりしません。何も捨てないので、再現率は100%近くになります。忘れる依頼そのものも、忘れるはずの内容を書いた新しい記憶になりました。
  • ByteRover は、Mem0 と違って記憶を書き換えも消しもしますが、忘却の違反は20%から38%残りました。変わった事実の81%から91%では、ファイルの変更の記録に古い版が残りました。日本語の会話をほとんど英語で記憶し、単語で探す検索のため、日本語の確認の質問の多くで何も見つかりませんでした。
  • Supermemory は、日本語の入力の約8割を英語の記憶にしていました。
  • 同じ LLM(openai/gpt-6-luna)での取り込みの費用は、ByteRover が LLM の呼び出し9,034回で $8.11 でした。記憶の依頼1回あたり、約6.6回呼んでいます。Mem0 は1,377回で $0.36 でした。

指標

指標意味良い向き
再現率最後の時点で正しい事実のうち、記憶に残っている割合です。高い
変更の反映変わった事実のうち、新しい版が記憶にある割合です。高い
古い版が残る変わった事実のうち、古い版も記憶に残っている割合です。低い
忘却の違反忘れてと頼まれた内容のうち、まだ記憶に残っている割合です。低い
ノイズ率記憶の文のうち、台帳のどの事実にも当たらない割合です。低い
言語の不一致記憶の文のうち、会話と違う言語で書かれた割合です。低い
確認の質問記憶から約1,000トークンの文脈を作り、回答役が確認の質問に正しく答えた割合です。高い
圧縮記憶の文字数を台帳の事実の文字数で割った値です。1に近いほど無駄がありません。1に近い

経路

取り込み方は3つあります。

  • 会話そのまま。会話をそのまま渡し、何を覚えるかは記憶のシステムに任せます。sepiace には発言を1つずつ、Supermemory にはセッションを1つの文書にして、Mem0 にはセッションの発言の並びを1回の add で、ByteRover にはセッションを1回の curate で渡します。
  • 依頼文。台帳から作った「覚えて」と「忘れて」の依頼を渡します。変わった事実は、変わったあとの事実を「覚えて」と渡すだけで、変わったことは伝えません。
  • 変更の合図あり。依頼文と同じですが、変更の依頼で A から B に変わったと伝えます。

依頼文の経路では、忘れる依頼もほかの依頼と同じように渡し、どうするかは各システム自身に判断させます。すべてのシステムで同じ条件です。Supermemory では、忘れる依頼だけを forget-matching に渡し、操作の種類をこちらで教える渡し方も試しました。

データセット v0.1

  • 人物は10人で、英語が5人、日本語が5人です。
  • 1人あたり40件の事実の台帳があり、2人は39件です。台帳から作った30セッションの会話と、事実1件につき1問の確認の質問もあります。
  • 事実のうち10件は途中で変わり、4件は途中で忘れてと頼まれます。
  • 台帳、会話、確認の質問は、OpenRouter の openai/gpt-6-luna で生成しました。
  • 採点役のモデルで、会話が台帳どおりかを確かめました。台帳にない事実が1件、事実の一部だけを忘れる依頼が2件ありました。人の目での確認はまだしていません。

条件

  • 採点役と回答役は、どちらも OpenRouter の openai/gpt-6-luna です。
  • sepiace は、2026年10月14日時点のコードで測りました。
  • Supermemory の取り込みは、dreaming を instant にしました。既定の dynamic は取り込みが途切れてから約10分後にまとめて記憶を作る方式で、会話のたびに待つと1人あたり5時間を超えるためです。
  • Supermemory の forget-matching は、既定の設定のまま使いました。
  • Supermemory の検索は、Supermemory 自身が MemoryBench で使う設定にしました。hybrid で、しきい値は0.3、件数は30件です。
  • Mem0 は、オープンソースの mem0ai 2.2.1 を手元で動かしました。中の LLM は openai/gpt-6-luna、埋め込みは sepiace と同じ BAAI/bge-m3、記憶の置き場所は手元の Qdrant です。追加の依存を入れない既定のインストールなので、検索は埋め込みだけです。検索は30件で、しきい値は Mem0 の既定の0.1です。
  • ByteRover は、byterover-cli 3.16.1(brv、Elastic License 2.0)を、ByteRover のアカウント、クラウドの同期、ホストされた LLM を使わずに手元で動かしました。中の LLM は openai/gpt-6-luna です。curate には日付を渡す引数がないので、各入力の先頭に日付を書きました。記憶の整理(dream)は、取り込みのあとに1人1回だけ動かしました。確認の質問は brv query を使い、ほかのシステムと同じ文脈の量に収めました。

限界

  • KiokuBench は、sepiace を作っているチームが設計し、測りました。頼まれたら忘れることや、会話の言語のまま残すことのように、sepiace が大事にしている振る舞いを指標にしているので、その前提で読んでください。ほかのシステムは、条件の節に書いた設定で動かしました。
  • 10人を1回だけ測った結果です。判定が揺れるので、同じコードでも測るたびに数件ずつ変わります。
  • データセットは小さく、人の目での確認もまだです。大きな版の v1 を作る予定です。