benchmark-context について
独自のメモリ実装を MemoryBench に接続し、ベンチマークを実行するスキルです。メモリやコンテキストシステムを評価する開発者向けに、コード分析、アダプター生成、精度と遅延の比較を自動化します。
主な機能
- 01メモリコードの分析
- 02プロバイダーアダプターの生成
- 03連携の登録と検証
- 04指標のベンチマーク比較
活用シーン
- 01独自メモリシステムの評価
- 02メモリプロバイダーの比較
- 03標準データセットでの検索テスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ supermemoryai/ memorybench --skill benchmark-contextインストール後、Claude Code で/benchmark-contextを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/benchmarks.mddata-formats.mddebugging.mdprovider-template.md詳細
MemoryBench 統合スキル
カスタムメモリー実装を、Supermemory、Mem0、Zep などの確立されたシステムと自動的にベンチマークします。
このスキルでできること
プロジェクトからこのスキルを呼び出すと、ベンチマークの全工程を最初から最後まで実行します。
- セットアップの希望について5つの質問をします
- メモリーコードを分析し、動作の仕組みを把握します
- 統合コードを自動生成します
- 競合システムと比較するベンチマーク全体を実行します
- 明確なパフォーマンス比較とともに結果を表示します
手動でコマンドを実行する必要はありません。すべて自動で、最初から最後まで実行されます。
このスキルを使うタイミング
次のような場合にこのスキルを使ってください。
- カスタムのメモリー/コンテキストシステムを構築し、性能を確認したい
- 自分の実装と業界のソリューションを比較する客観的な指標が必要
- 標準化されたデータセット(会話メモリー、RAG、対話)でベンチマークを実施したい
- どのメモリーシステムを使うか検討していて、データに基づいて比較したい
仕組み
自動化された7つのフェーズ
フェーズ1:セットアップ
- https://github.com/supermemoryai/memorybench から memorybench をプロジェクト内(
./memorybench)にクローンします - bun で依存関係をインストールします
- 環境の準備が整っていることを確認します
フェーズ2:調査
- AI エージェントを使ってメモリーのコードベースを分析します
- 初期化、取り込み、検索の各メソッドを特定します
- 必要な設定と API キーを検出します
- データ形式を把握します
フェーズ3:コード生成
- MemoryBench インターフェースを実装するプロバイダーアダプターを作成します
- メモリーコードをプロバイダーにコピーし、適合させます
- 必要に応じて、結果形式に合わせたカスタムプロンプトを生成します
- プロバイダーテンプレートのリファレンスを参照してください
フェーズ4:登録
src/types/provider.tsを更新し、プロバイダー名を追加しますsrc/providers/index.tsにプロバイダーを登録しますsrc/utils/config.tsに設定を追加します- 環境変数を記載します
フェーズ5:設定
- 必要な API キーを含む
.env.localを作成します - プロバイダーの認証情報を確認します
- (選択した場合)比較対象プロバイダーのキーを確認します
- 判定用の OpenAI/Anthropic キーを確認します
フェーズ6:検証
- 質問を1つだけ使って簡易テストを実行します
- プロバイダーが正しく初期化されることを確認します
- 取り込みと検索が正しく機能することを確認します
- 問題が発生した場合、続行するかデバッグするかを確認します
フェーズ7:ベンチマークの実行
- ベンチマーク全体を自動で実行します
- 進行状況(取り込み、インデックス作成、検索、回答、評価)をリアルタイムで表示します
- 選択した競合システムと比較します
- 正確度とレイテンシーの指標を含む最終結果を提示します
最初に確認する質問
このスキルは、最初に次の質問をします。
1. プロバイダー名
メモリープロバイダーの名前は何にしますか?
- 小文字で、スペースを入れずに指定してください(例:「mymemory」、「contextengine」)
2. メモリーコードの場所
メモリーの実装はどこにありますか?
- 例:
src/lib/memory、packages/memory、src/services/context
3. ベンチマークデータセット
どのデータセットがユースケースに合っていますか?
-
LoCoMo - 数日から数週間にわたる複数セッションでの長期会話メモリー
- 最適な用途:チャットアプリ、AI アシスタント、カスタマーサポートボット
-
LongMemEval - 長文書や複雑な検索を扱うメモリー
- 最適な用途:RAG システム、文書分析、ナレッジベース
-
ConvoMem - 複数ターンの会話理解とコンテキスト追跡
- 最適な用途:対話システム、インタビューボット、会議アシスタント
詳しくは、ベンチマークのリファレンスを参照してください。
4. 比較対象(複数選択可)
どのシステムと比較しますか?
- Supermemory - 自動抽出機能を備えた、高速なハイブリッド型ベクトル+グラフメモリー
- Mem0 - グラフリレーションシップを備えた、AI エージェント向けの永続メモリー
- Zep - 自動要約機能を備えた、長期会話メモリー
- Filesystem - ベースラインとなるベクトル検索(API 不要)
- RAG - LLM による抽出を行うベースラインの RAG(API 不要)
5. テストサイズ
ベンチマークする質問の数は?
- 小規模(5 問)- 簡単な検証、約 2~5 分
- 中規模(20 問)- 適切なサンプル数、約 10~15 分
- フル(全質問)- 完全な評価、約 30~60 分
作業ディレクトリの管理
重要: このスキルは memorybench ではなく、プロジェクトのルートから実行する必要があります。
your-project/ ← Run skill from here
├── src/
│ └── lib/memory/ ← Your memory implementation
└── memorybench/ ← Skill clones this automatically
└── src/providers/ ← Your provider adapter goes here
このスキルでは、次の処理を行います。
- プロジェクト内にいることを確認します(memorybench 内ではないこと)
- memorybench を
./memorybenchにクローンします - コードの分析には相対パス(
../src/lib/memory)を使用します cd memorybench && bun run src/index.ts ...でベンチマークを実行します
作成されるもの
スキルの実行後、次のものが作成されます。
your-project/
└── memorybench/
├── .env.local # Your API keys
├── src/
│ ├── providers/
│ │ └── {yourname}/
│ │ ├── index.ts # Provider implementation
│ │ └── prompts.ts # Custom prompts (optional)
│ ├── types/provider.ts # Updated with your provider
│ └── providers/index.ts # Registered
└── data/runs/{run-id}/ # Benchmark results
├── checkpoint.json # Run state
├── results/ # Per-question results
└── report.json # Final metrics
完了後
ベンチマークが終了すると、スキルに次の内容が表示されます。
概要スコア:
- 各プロバイダーの正解率
- 検索レイテンシの平均値
- 成功率(回答できた質問数と失敗した質問数)
主な調査結果:
- 「プロバイダーの正解率は 76% で、Supermemory の 82% を下回っています」
- 「検索レイテンシ:145ms(お使いのプロバイダー)対 98ms(最も優れた競合プロバイダー)」
次のステップ:
- 詳細な結果を表示:
cd memorybench && bun run src/index.ts serve - 失敗を確認:
cd memorybench && bun run src/index.ts show-failures -r {run-id} - 別のベンチマークを試す:別のデータセットを指定して、このスキルを再実行します
- 手動で実行:
cd memorybench && bun run src/index.ts run -p {name} -b {benchmark}
トラブルシューティング
問題が発生した場合:
- 「Provider not initialized」 -
.env.localの API キーを確認してください - データの取り込みに失敗する - データ形式の変換を確認してください。詳しくはデータ形式のリファレンスを参照してください
- 検索結果が返されない - containerTag の処理とインデックス作成の完了を確認してください
- 回答が間違っている - 結果の形式に合わせたカスタムプロンプトが必要な場合があります
詳しいトラブルシューティングについては、デバッグのリファレンスを参照してください。
Claude 向け実装手順
このスキルを実行するときは、次の手順に従ってください。
ステップ 1:環境を確認する
memorybench 内ではなく、ユーザーのプロジェクト内にいることを確認します。
basename "$(pwd)" | grep -q "memorybench" && echo "ERROR" || echo "OK"
ERROR の場合は、プロジェクトのルートから実行するようユーザーに伝え、終了します。
ステップ 2:MemoryBench をクローンする
memorybench がすでに存在するか確認します。
[ -d "memorybench" ] && echo "EXISTS" || echo "NOT_FOUND"
NOT_FOUND の場合は、次のコマンドをそのまま使用してクローンします(URL を変更しないでください)。
git clone https://github.com/supermemoryai/memorybench.git memorybench
次に、依存関係をインストールします。
cd memorybench && bun install && cd ..
重要: URL は https://github.com/supermemoryai/memorybench.git を必ず使用してください。ほかの URL を推測したり、使用したりしないでください。
EXISTS の場合は、既存のインストールを使用します(操作は不要です)。
ステップ 3:ユーザーの入力を収集する
AskUserQuestion ツールを使って、次の 5 項目を一度に収集します。
- プロバイダー名(テキスト入力の候補)
- メモリーコードの場所(テキスト入力の候補)
- ベンチマークデータセット(単一選択:locomo、longmemeval、convomem)
- 比較対象(複数選択:supermemory、mem0、zep、filesystem、rag)
- テストサイズ(単一選択:5、20、full)
ステップ 4:ユーザーのメモリーコードを分析する
Task ツールで subagent_type=Explore を使用し、指定されたメモリーコードの場所を分析します。初期化、追加/取り込みメソッド、検索/クエリメソッド、必要な設定を確認します。
ステップ 5:プロバイダーコードを生成する
調査結果に基づき、次を作成します。
memorybench/src/providers/{providerName}/index.ts(references/provider-template.md のテンプレートを使用)- 必要に応じて
memorybench/src/providers/{providerName}/prompts.ts(カスタムの書式設定が必要な場合)
ステップ 6:プロバイダーを登録する
memorybench 内の次のファイルを更新します。
src/types/provider.ts- ProviderName 共用体型に追加src/providers/index.ts- インポートし、providers Record に登録src/utils/config.ts- getProviderConfig() に case を追加.env.example- 環境変数を記載
ステップ 7:環境を設定する
API キー(評価用の OpenAI、使用するプロバイダーのキー、比較対象プロバイダーのキー)をユーザーに尋ねます。
入力された値を使って、memorybench/.env.local を作成または更新します。
ステップ 8:検証テスト
簡単なテストを実行します。
cd memorybench && bun run src/index.ts test -p {providerName} -b {benchmark} -q question_1
失敗した場合はエラーを表示し、デバッグするか中止するかをユーザーに尋ねます。
ステップ 9:ベンチマークを実行する
ユーザーの選択に基づいてベンチマークコマンドを実行し、ポーリングせずに完了するまで待ちます。
比較ありの場合:
cd memorybench && bun run src/index.ts compare -p {providerName},{others} -b {benchmark} -l {limit}
比較なしの場合:
cd memorybench && bun run src/index.ts run -p {providerName} -b {benchmark} -l {limit}
(ユーザーが「full」を選択した場合は、-l {limit} を省略します)
実行に関する重要な指示:
- Bash ツールで
run_in_background: falseを指定する(またはパラメーターを省略する)ことで、コマンドを同期実行します - 長めのタイムアウトを設定します(例:10 分の場合は
timeout: 600000) - BashOutput で繰り返しポーリングしないでください。コマンドが自動的に完了するまで待ちます
- ベンチマークの進捗状況は、出力に自動的に表示されます
- コマンドが完全に完了した後でのみ、ステップ 10 に進みます
同期実行がうまくいかない場合の代替方法:
run_in_background: trueを使用します- ユーザーに「ベンチマークはバックグラウンドで実行されています(テストの規模に応じて、通常 5~15 分かかります)」と伝えます
- 適切な待ち時間を置いた後、BashOutput を 1 回だけ使用して最終結果を取得します
- 進捗状況を繰り返しポーリングしないでください
ステップ 10:結果を提示する
ベンチマークが完了したら、最終出力を解析し、次の内容を提示します。
- 各プロバイダーの精度スコア
- レイテンシ指標
- 主な結果と比較
- 次のステップの提案
出力内の次のようなセクションを確認します。
- 「COMPARISON RESULTS」または「Final Report」
- 精度のパーセンテージ
- 平均レイテンシ
- 成功率
リファレンスドキュメント
- プロバイダーテンプレート - コードテンプレートとインターフェースの詳細
- ベンチマーク - データセットの詳細と特性
- データ形式 - UnifiedSession の構造と変換
- デバッグ - よくある問題と解決策
成功条件
次の条件を満たすと、スキルは正常に完了します。
- ✅ プロバイダーアダプターが生成され、登録されている
- ✅ 検証テストに合格する(単一の質問で動作する)
- ✅ フルベンチマークがエラーなく完了する
- ✅ 比較スコアとともに結果が表示される
- ✅ 競合他社と比べて自社システムがどの程度の位置にあるかを確認できる
スキルの実行
プロジェクトのルートから実行します。
# Invoke the skill (in Claude Code CLI)
/memorybench
# Or if using skills programmatically
skill:memorybench
これで完了です。あとはスキルがすべて自動的に処理します。