Amem について
Amemは、AIコーディングツール向けのローカル優先型メモリーMCPサーバーです。プロジェクトの設定や決定、修正内容をSQLiteに保存し、セッションをまたいで検索できます。
主な機能
- 01SQLiteによるローカル保存
- 02自動・手動でのメモリー記録
- 03意味・全文・グラフ・時系列検索
- 04メモリー階層とバージョン履歴
- 05矛盾検出とメモリー統合
活用シーン
- 01AIツール間でコーディング設定を共有
- 02新しいセッションでプロジェクトの決定を確認
- 03蓄積したメモリーの確認と整理
MCP 対応
Amemはstdio経由で、メモリー用のツール、リソース、プロンプトをMCPクライアントに提供します。クライアントからメモリーの保存、検索、編集、管理ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
amem
AI コーディングツールのためのメモリレイヤー。
AI に一度伝えれば、どこでも覚えています。
| 🎯 97.8% R@5 | ⚡ ~14ms p50 | 🛠 33 ツール | 🔒 100% ローカル |
|---|---|---|---|
| LongMemEval-S、500 問 | 完全な検索パイプライン | 完全なメモリツールキット | クラウド不要 |
クイックスタート · 仕組み · ベンチマーク · ツール · ダッシュボード · アーキテクチャ
💡 問題点
すべての AI ツールは毎回、すべてのセッションで、すべてのツールにおいて、ゼロから始まります。
- You: "Don't use 'any' in TypeScript" → told Claude 3 times. Copilot still doesn't know.
- You: "We chose PostgreSQL over MongoDB" → explained in Cursor. Claude has no idea.
+ With amem: tell it once, every AI tool remembers — forever.
実際の動作を見る
You (in Claude Code): "Don't use any type in TypeScript"
└─ amem stores this as a correction (priority 1.0, confidence 100%)
You (switch to Copilot): starts coding
└─ Copilot already knows — amem feeds it the same correction
You (open Cursor): "What do you remember about TypeScript?"
└─ Instantly recalls: "Don't use any type" + all related preferences
クラウド不要。API キー不要。SQLite ファイルが 1 つ。すべてがあなたのマシンに保存されます。
🚀 クイックスタート
|
Claude Code(推奨)
|
GitHub Copilot CLI
|
📦 Cursor / Windsurf / 任意の MCP クライアント
npm install -g @aman_asmuei/amem
amem-cli init # Detects & configures all installed AI tools
amem-cli rules # Generates extraction rules for proactive memory use
または、MCP 設定に手動で追加します。
{
"mcpServers": {
"amem": {
"command": "npx",
"args": ["-y", "@aman_asmuei/amem"]
}
}
}
動作を確認する:
amem-cli stats # Should show "0 memories" initially
💬 AI に伝えます:「覚えておいてください:常に strict TypeScript を使い、any 型は絶対に使わないでください」
🔄 新しいセッションを開始して、*「TypeScript について何を覚えていますか?」*と尋ねます。すぐに思い出します。
🧬 amem-core を搭載
amem は MCP サーバーです。検索エンジンは @aman_asmuei/amem-core にあります。
Claude Code / Copilot / Cursor / any MCP client
│
│ MCP (stdio)
▼
┌──────────────────────────────────┐
│ @aman_asmuei/amem (this pkg) │
│ 33 Tools · 7 Resources · 2 Prompts
│ CLI · Hooks · Dashboard │
└───────────────┬──────────────────┘
│ imports
▼
┌──────────────────────────────────┐
│ @aman_asmuei/amem-core │
│ Embeddings · HNSW · Recall │
│ Knowledge Graph · Reflection │
│ 97.8% R@5 on LongMemEval-S │
└───────────────┬──────────────────┘
▼
┌────────────────────┐
│ SQLite + WAL │
│ ~/.amem/memory.db │
└────────────────────┘
パッケージが 2 つある理由
| パッケージ | 役割 | インストール |
|---|---|---|
@aman_asmuei/amem (本パッケージ) | MCP サーバー + CLI + フック | npm i -g @aman_asmuei/amem |
@aman_asmuei/amem-core | 純粋な TS ライブラリ、MCP 依存関係なし | npm i @aman_asmuei/amem-core |
同じエンジンが amem(MCP サーバー)、aman-agent(CLI)、aman-tg(Telegram ボット)、そしてメモリ機能を追加する任意の Node アプリを支えています。検索機能の改善は amem-core を通じて提供されます。MCP ツールの変更は amem を通じて提供されます。それぞれ独立してバージョン管理されています。
97.8% R@5 という数値は、
amem-coreのエンジン品質を示しています(LongMemEval-S、セッション単位、500 問、API 呼び出しゼロ)。MCP 経由で呼び出す場合も、ライブラリを直接インポートする場合も、同じ品質を利用できます。
⚙️ 仕組み
amem は 3 つのレイヤーで知識を取り込みます。完全自動から完全手動まで対応しています。
| レイヤー | 方法 | 機能 |
|---|---|---|
| 自動 | ライフサイクルフック | ツールの観察結果を取り込み、セッション終了時に修正・決定・パターンを自動抽出します |
| AI 駆動 | 抽出ルール | AI が修正を受けたり、決定を行ったり、好みを伝えられたりしたときに、memory_store を積極的に呼び出します |
| 手動 | 自然言語 | 「覚えておいてください:PostgreSQL を使っています」、または 「Redis の記憶を忘れてください」 |
メモリーの種類
| 優先度 | 種類 | 例 |
|---|---|---|
| 1.0 | 修正 | 「統合テストでは DB をモックしないでください」 |
| 0.85 | 決定 | 「ACID のため、Mongo ではなく Postgres を選択しました」 |
| 0.7 | パターン | 「ネストより早期リターンを好みます」 |
| 0.7 | 好み | 「npm ではなく pnpm を使います」 |
| 0.5 | 構成 | 「認証モジュールは src/auth/ にあります」 |
| 0.4 | 事実 | 「API は 2025 年 1 月にリリースされました」 |
修正は常に最初に表示されます。これらは AI にとっての厳守すべき制約です。
🔄 メモリーの階層と時間的有効性
メモリーの階層
| 階層 | 動作 |
|---|---|
| コア | セッション開始時に常に注入されます(約 500 トークン)。最も重要な修正が含まれます。 |
| 作業用 | セッション単位で管理され、現在のタスクに合わせて自動的に表示されます。 |
| アーカイブ | デフォルトです。検索できますが、自動的には注入されません。 |
時間的有効性
メモリーは永続するものではありません。事実が変わったとき:
- 古いメモリーは削除されず、期限切れになります。「3 月時点では何が事実だったか」を確認できるように保持されます。
- 矛盾は自動検出されます ��� 新しい決定を保存すると、古い決定は自動的に期限切れになります。
memory_sinceを使って、任意の時点の情報を照会できます。
🧠 自己進化するメモリーループ
メモリーは保存するだけではなく、自身の構造から学習します。memory_reflect を呼び出して、リフレクションエンジンを起動します。
memory_reflect → Analyzes your entire memory graph
│
├─ Clusters related memories (HNSW neighbor graph)
├─ Detects contradictions (negation pairs, numerical, low-overlap)
├─ Identifies synthesis candidates
├─ Surfaces knowledge gaps (topics with sparse recall)
└─ Returns a structured report with suggested actions
進化ループ:
- リフレクト —
memory_reflectがメモリーをクラスタリングし、パターンを見つけます - 統合 — AI が
memory_storeを使って関連するクラスターを、より高次の原則へと統合します - リンク —
memory_relateが統合結果を元のメモリーに結び付けます(統合の系譜として追跡されます) - 繰り返し — サイクルを重ねるごとに、グラフの一貫性と抽象度が高まります
リフレクションが必要になると、システムが自動的に通知します(前回の実行から 7 日以上経過した場合、または新しいメモリーが 50 件以上追加された場合)。
📊 リフレクションレポートの例
# Memory Reflection Report
Analyzed 127 memories in 12ms
Health Score: 68/100
## Stats
- Clusters: 8 (avg size: 4.2)
- Clustered: 34 | Orphans: 93
- Contradictions: 2
- Synthesis candidates: 3
- Knowledge gaps: 4
## Contradictions Found
⚠ Opposing language detected (23d apart, 87% similar)
A: a1b2c3d4 "Always use semicolons in JavaScript..."
B: e5f6g7h8 "Never use semicolons in JavaScript..."
→ Expire older memory a1b2c3d4 — newer supersedes it
## Synthesis Candidates
### cluster-0 (4 patterns)
"These 4 related memories form a cluster about 'typescript, types':
[patterns]:
- 'Always use strict TypeScript types'
- 'Prefer strict null checks'
- 'Use unknown instead of any'
- 'Enable strictNullChecks in tsconfig'
Synthesize into a higher-order principle..."
## Knowledge Gaps
- "kubernetes deployment" — asked 3x, avg 25% confidence
- "database migration strategy" — asked 2x, avg 0% confidence
📈 ベンチマーク
想起精度(LongMemEval)
すべての数値は amem-core v0.5.1 に基づいています。この MCP サーバーを支える検索エンジンです。API 呼び出しはゼロで、すべてローカルで実行され、完全に再現可能です。
|
LongMemEval-S(セッションレベル)— 主要指標
500 問 · CPU のみ · API 呼び出しゼロ |
LongMemEval Oracle(ターンレベル)
スコア評価可能な質問 479 件 · 実行時間 301 秒 · Node 22 |
パイプライン:ローカルの bge-small-en-v1.5 バイエンコーダー + ms-marco-MiniLM-L-6-v2 クロスエンコーダー(int8、バッチ処理、デフォルトで有効)。タイプ別の詳細な内訳、パイプラインの進化、率直な補足については、amem-core のベンチマークをご覧ください。
「Rust で書き直すべきか」という問いにとって、これが重要な理由。 上記の 10.3ms という再ランキングの数値は、置き換え前のペアごとの実装から約 30% 高速化した結果です。ネイティブで書き直すことなく、バッチ処理と int8 量子化を約 20 行追加して実現しました。ホットパスはすでに効率的で、残る改善は、それらをより慎重に使うことで得られました。TypeScript を使い続けます。
検索レイテンシ
|
全リコールパイプライン(v0.5.1+)
|
HNSW インデックスのみ(ベクトル検索)
|
測定条件:100 回の検索の平均、384 次元の埋め込み、上位 10 件の結果。 どの規模でも 0.1ms 未満 — 実質的に O(log n) です。HNSW はオプションの依存関係であり、利用できない場合はブルートフォースをフォールバックとして使用します。 |
🛠️ ツールリファレンス
コアメモリ(7 ツール)
| ツール | 説明 |
|---|---|
memory_store | 種類、タグ、信頼度を指定してメモリを保存します。非公開コンテンツを自動的に編集し、矛盾を自動的に期限切れにします。 |
memory_recall | セマンティック検索 — デフォルトはコンパクトモードです(トークンを約 10 倍節約)。全コンテンツを取得するには memory_detail を使用します。 |
memory_detail | コンパクトなリコールの後、ID を指定して全コンテンツを取得します。 |
memory_context | トークン数の予算管理を行いながら、トピックに関連するコンテキストを種類別に整理して読み込みます。 |
memory_extract | 会話から複数のメモリを一括保存します。 |
memory_forget | ID またはクエリで削除します(確認あり)。 |
memory_inject | コーディング開始前に、訂正、決定事項、グラフ上の隣接項目を提示します。 |
精度、履歴、高度な機能、管理、リマインダー、メンテナンスツール(さらに 26 個)
精度と履歴(5 ツール)
| ツール | 説明 |
|---|---|
memory_patch | スナップショットを自動作成し、フィールド単位で的確に編集します。 |
memory_versions | 編集履歴全体を表示するか、任意のバージョンを復元します。 |
memory_search | コンパクトモードに対応した、FTS5 による正確な全文検索です。 |
memory_since | 自然言語の期間指定(7d、2w、1h)による時間クエリです。 |
memory_relate | メモリ間に型付きナレッジグラフを構築します。 |
高度な機能(6 ツール)
| ツール | 説明 |
|---|---|
memory_multi_recall | コンパクトモードに対応したマルチストラテジー検索です。セマンティック検索、FTS5、グラフ、時間情報を組み合わせます。 |
memory_tier | メモリを core/working/archival の各ティア間で移動します。 |
memory_expire | メモリを無効としてマークします。履歴として保持されますが、リコール対象から除外されます。 |
memory_summarize | 決定事項、訂正、メトリクスを含む構造化されたセッション概要を保存します。 |
memory_history | 過去のセッション概要を表示します。 |
memory_reflect | 自己進化型のリフレクションエンジンです。メモリをクラスタリングし、矛盾を検出し、統合候補を特定して、ナレッジのギャップを提示します。 |
管理と同期(4 ツール)
| ツール | 説明 |
|---|---|
memory_doctor | amem データベースの読み取り専用ヘルス診断を実行します。 |
memory_repair | amem データベースに安全かつ対象を絞った修復を実行します。 |
memory_config | セーフティガードレールに従って、amem の設定を取得または変更します。 |
memory_sync | amem と他のシステム(Claude の自動メモリ、Copilot の指示)の間でメモリをインポートまたはエクスポートします。 |
リマインダー(4 ツール)
| ツール | 説明 |
|---|---|
reminder_set | 期限とスコープを任意で指定してリマインダーを作成します。 |
reminder_list | スコープで絞り込み可能な、アクティブな(またはすべての)リマインダーを一覧表示します。 |
reminder_check | 期限超過、本日、今後 7 日間のリマインダーを表示します。 |
reminder_complete | 完了としてマークします(部分 ID に対応)。 |
ログとメンテナンス(7 ツール)
| ツール | 説明 |
|---|---|
memory_log | 会話のターンを未加工のまま追記します(情報を失わず、追記のみ)。 |
memory_log_recall | セッション、キーワード、または新しさでログを検索または再生します。 |
memory_log_cleanup | 保持期間を設定して古いエントリを削除します。 |
memory_stats | 件数、タイプ別内訳、信頼度の分布を表示します。 |
memory_export | Markdown または JSON としてエクスポートします。 |
memory_import | JSON から一括インポートし、自動的に重複を排除します。 |
memory_consolidate | 重複を統合し、古い情報を削除し、頻出情報を昇格し、使用されていない情報の重要度を下げます。 |
📖 使用ガイド
メモリの保存
|
自然言語(最も簡単)
|
明示的なツール呼び出し
|
メモリの呼び出し
// Step 1: Compact index — ~50-100 tokens (default)
memory_recall({ query: "auth decisions", limit: 5 })
// -> a1b2c3d4 [decision] Auth service uses JWT tokens... (92%)
// -> e5f6g7h8 [correction] Never store tokens in localStorage... (100%)
// Step 2: Full details only for what you need
memory_detail({ ids: ["a1b2c3d4", "e5f6g7h8"] })
その他の検索オプション
// Multi-strategy: semantic + FTS5 + graph + temporal
memory_multi_recall({
query: "authentication architecture",
limit: 10,
weights: { semantic: 0.4, fts: 0.3, graph: 0.15, temporal: 0.15 }
})
// Exact keyword search (FTS5 syntax)
memory_search({ query: "OAuth PKCE" })
memory_search({ query: '"event sourcing"' }) // phrase match
memory_search({ query: "auth* NOT legacy" }) // boolean
メモリの管理
編集、期限切れ、昇格、リンク
// Surgical edit with auto-snapshot for rollback
memory_patch({ id: "a1b2c3d4", field: "content", value: "Updated text", reason: "clarified" })
// View edit history / restore
memory_versions({ memory_id: "a1b2c3d4" })
// Expire (preserve for history, exclude from recall)
memory_expire({ id: "a1b2c3d4", reason: "Migrated to GraphQL" })
// Promote to core tier (always loaded at session start)
memory_tier({ id: "a1b2c3d4", tier: "core" })
// Link related memories (graph builds itself, but you can add manual links)
memory_relate({ action: "relate", from_id: "abc", to_id: "xyz", relation_type: "supports" })
関係タイプ:supports、contradicts、depends_on、supersedes、related_to、caused_by、implements — または独自のタイプを定義できます。
リマインダー
セッションをまたいだ期限の追跡
reminder_set({ content: "Review PR #42", due_at: 1743033600000, scope: "global" })
reminder_check({})
// -> [OVERDUE] Review PR #42
// -> [TODAY] Deploy auth service
// -> [upcoming] Write quarterly report
reminder_complete({ id: "a1b2c3d4" })
プライバシー
自動的な伏字処理
// Private blocks stripped before storage
memory_store({
content: "DB password is <private>hunter2</private>, connect to prod at db.example.com",
type: "topology", tags: ["database"]
})
// Stored: "DB password is [REDACTED], connect to prod at db.example.com"
// API keys, tokens, passwords auto-redacted by pattern matching
// Configure patterns in ~/.amem/config.json
⚔️ 公平な比較:amem と graphify
クリックして展開 — amem と graphify の比較
graphify は、amem を知った人が最もよく尋ねる「X はどうなの?」という質問の対象です。両者は根本的に異なる問題を解決するものであり、実際に相互補完的です。
各ツールの機能
| amem | graphify | |
|---|---|---|
| 一言で言うと | AI セッションをまたいで保持されるメモリ | コードベース → ナレッジグラフ |
| 中心となる問い | 「私の AI は私について何を学んだのか?」 | 「このコードベースはどのような構成なのか?」 |
| 入力 | 自然言語(修正、決定、好み) | ファイル(コード、ドキュメント、PDF、画像、動画) |
| 出力 | 関連度順に並べた呼び出し済みメモリ | 構造グラフ + レポート + インタラクティブ HTML |
| 永続性 | 常時 — メモリはセッションやツールをまたいで保持されます | スナップショット — graph.json は保持されますが、時間とともに学習することはありません |
| 実行タイミング | 継続的に、すべてのセッションで | 必要に応じて(/graphify .)、または git フックを使ってコミット時に |
技術的な比較
| amem | graphify | |
|---|---|---|
| ランタイム | TypeScript / Node(≥18) | Python(≥3.10) |
| プロトコル | MCP サーバー(33 ツール、7 リソース) | AI スキル(スラッシュコマンド)+ オプションの MCP サーバー |
| ストレージ | SQLite + FTS5 + WAL | NetworkX グラフ → JSON ファイル |
| 検索 | セマンティック埋め込み + FTS5 + グラフ + 再ランキング | グラフ探索(BFS/DFS)+ ノード検索 |
| 埋め込み | ローカルの bge-small-en-v1.5(384 次元) | なし — ベクトル類似度ではなくグラフトポロジーを使用 |
| コード理解 | なし — 指示された内容を保存します | 高度 — 25 言語に対応した tree-sitter AST |
| マルチモーダル | テキストのみ | コード、ドキュメント、PDF、画像、動画、音声 |
| LLM が必要か | いいえ(すべてローカル) | ドキュメントと画像には必要(コードは tree-sitter により LLM 不要) |
| ベンチマーク | LongMemEval-S で 97.8% R@5 | 生ファイルの読み取りと比較してトークンを 71.5 倍削減 |
| AI ツールのサポート | Claude Code、Copilot、Cursor、任意の MCP クライアント | Claude Code、Codex、Copilot、Cursor、Gemini、Aider、Kiro、その他 10 以上 |
amem が得意なこと:
- プロジェクトやツールをまたいで、ユーザーの好み、修正、決定事項を記憶すること
- セマンティック検索 — 曖昧なクエリから適切な記憶を見つけること(R@5 で 97.8%)
- 時間的なインテリジェンス — いつ何が正しかったかを追跡し、矛盾を自動的に期限切れにすること
- 自己進化 — リフレクションエンジンがクラスタリングを行い、矛盾を検出し、ギャップを特定すること
- LLM への依存がゼロ — すべてローカルで動作し、API 呼び出しはありません
graphify が得意なこと:
- コード構造の把握 — 呼び出しグラフ、インポート、クラス階層、ファイル間の関係
- マルチモーダルな取り込み — コード、論文、スクリーンショット、動画を取り込むと、すべてをグラフ化します
- トークン効率 — 71.5 倍の圧縮により、AI は生のファイルではなく構造を読み取ります
- 対応言語の幅広さ — tree-sitter AST を介して 25 のプログラミング言語に対応
- 対応 AI ツールの幅広さ — 専用のインストールコマンドを備えた 15 以上のプラットフォームに対応
率直なまとめ
-
競合するものではありません。 amem は あなたの 知識(決定事項、修正、好み)を記憶します。graphify は コードベースの 構造(呼び出しグラフ、依存関係、アーキテクチャ)をマッピングします。扱うデータも、アクセスパターンも異なります。
-
必要であれば、両方を使えます。
graphify .を実行して、プロジェクトの構造マップを作成します。amem には「X の理由でこのアーキテクチャを選んだ」と記憶させます。グラフは AI に 何があるか を伝え、記憶は なぜそうなっているか を伝えます。 -
graphify は幅広いプラットフォームに対応しています(15 以上の AI ツール)。amem は対応環境での統合がより深く(33 のツール、構造化されたリソース、プロンプトを備えた MCP プロトコル)、利用できます。
-
graphify はコード以外のファイルに LLM を必要とします。 amem は完全にローカルで動作し、API 呼び出しもローカル埋め込みモデルを超えるモデル推論もありません。
-
実際にどちらを選ぶかは、解決したい課題によって決まります。 AI が好みや決定事項を何度も忘れるなら → amem。AI がコードベースを効率よく探索できないなら → graphify。両方なら → 両方を使います。
🌐 プラットフォームの互換性
| 機能 | Claude Code | GitHub Copilot CLI | Cursor / Windsurf / Other |
|---|---|---|---|
| ワンコマンドでのプラグインインストール | はい | はい | -- |
| 33 の MCP ツール | はい | はい | はい |
| AI スキル | 14 | 7 | -- |
| 自動キャプチャフック | はい | はい | -- |
| セッションの自動要約 | はい | はい | -- |
| 自動メモリー同期 | はい | -- | -- |
CLI セットアップ(amem-cli init) | はい | はい | はい |
Claude Code は最も深く統合されています(プラグイン+フック+自動メモリー同期)。Copilot CLI はそれに次ぐ統合を備えています。その他の MCP クライアントは、手動設定で 33 ツールを備えたサーバーをすべて利用できます。
AI スキル
プラットフォーム別の利用可能なスキル
| 発話例 | スキル | Claude Code | Copilot CLI |
|---|---|---|---|
| 「any type を絶対に使わないよう覚えて」 | remember | はい | はい |
| 「認証について何を覚えてる?」 | recall | はい | はい |
| 「このタスクのコンテキストを読み込んで」 | context | はい | はい |
| 「メモリーの統計を表示して」 | stats | はい | はい |
| 「メモリードクターを実行して」 | doctor | はい | はい |
| 「自分の記憶をエクスポートして」 | export | はい | はい |
| 「すべての修正を一覧表示して」 | list | はい | はい |
| 「Claude のメモリーを同期して」 | sync | はい | -- |
| 「メモリーダッシュボードを開いて」 | dashboard | はい | -- |
| 「フックをインストールして」 | hooks | はい | -- |
🔄 Claude Code の自動メモリ機能との併用
amem は Claude の組み込み自動メモリ機能を補完するものであり、置き換えるものではありません。
| Claude の自動メモリ機能 | amem | |
|---|---|---|
| 記録 | 自動、設定不要 | 確信度スコア付きで分類 |
| 保存 | 単一の Markdown ファイル | 検索、グラフ、時系列に対応した SQLite |
| 想起 | セッションごとにファイル全体を読み込み | 関連するメモリのみを提示 |
| 履歴 | 更新時に上書き | バージョン管理、時間的有効性 |
| 検索 | なし | セマンティック検索 + FTS5 + グラフ + 再ランキング |
推奨: 両方を有効にしておきます。amem-cli sync を実行して Claude のメモリを amem にインポートすると、統合された構造的なアクセスが可能になります。
Claude → amem 同期
amem-cli sync # Import all projects
amem-cli sync --dry-run # Preview what would be imported
amem-cli sync --project myapp # Import specific project
| Claude のタイプ | amem のタイプ | 確信度 |
|---|---|---|
feedback | correction | 1.0 |
project | decision | 0.85 |
user | preference | 0.8 |
reference | topology | 0.7 |
amem → Copilot 同期
amem のメモリを .github/copilot-instructions.md にエクスポートすると、Copilot が永続的なコンテキストとして読み込みます。
amem-cli sync --to copilot # Export to current project
amem-cli sync --to copilot --dry-run # Preview without writing
amem-cli sync --to copilot --project /path/to/repo
これにより、優先度別にグループ化された構造化 Markdown が生成されます。
- 修正事項(必ず従う) — 厳守すべき制約
- 決定事項 — アーキテクチャ上の選択
- 設定 — ユーザーの設定
- パターン — コーディング規約
- コンテキスト — トポロジー + 事実
amem セクションは `` マーカーで囲まれます。ファイル内の既存の amem 以外のコンテンツは保持されます。
ツール間の同期: Claude のセッションで行われた決定は、自動的に Copilot に反映されます。
Claude Code → amem sync → amem DB → amem sync --to copilot → copilot-instructions.md
📊 ダッシュボードとナレッジグラフ
amem-cli dashboard # Opens at localhost:3333
amem-cli dashboard --port=8080 # Custom port
以下の機能を備えた高機能な Web ダッシュボードです。
- 🔍 メモリブラウザー — 検索、タイプ/階層/ソースによる絞り込み、インライン操作(昇格、降格、期限切れ)
- 🕸️ インタラクティブなナレッジグラフ — ズーム、パン、クリックによるフォーカスと近傍のハイライト表示、詳細パネル、検索、方向付きエッジ
- 📈 分析 — 確信度の分布、タイプ別の内訳、セッションのタイムライン
- ⏰ リマインダー — セッションをまたぐタスクの表示と管理
- 📋 Copilot プレビュー —
copilot-instructions.mdにエクスポートされる内容を確認
💻 CLI リファレンス
# Setup
amem-cli init # Auto-configure AI tools
amem-cli rules # Generate extraction rules
amem-cli hooks # Install hooks for Claude Code
amem-cli hooks --target copilot # Install hooks for GitHub Copilot CLI
amem-cli hooks --uninstall # Remove hooks
amem-cli sync # Import Claude auto-memory → amem
amem-cli sync --to copilot # Export amem → copilot-instructions.md
amem-cli doctor # Health diagnostics
amem-cli repair # Repair corrupted database from backups
# Dashboard
amem-cli dashboard # Web dashboard (localhost:3333)
# Memory operations
amem-cli recall "authentication" # Semantic search
amem-cli stats # Statistics
amem-cli list --type correction # List by type
amem-cli export --file memories.md # Export to file
amem-cli forget abc12345 # Delete by short ID
amem-cli reset --confirm # Wipe all data
🏗 アーキテクチャ
Your AI Tool
Claude Code / Copilot CLI / any MCP client
│ │
│ MCP (stdio) │ Lifecycle Hooks
▼ ▼
┌─────────────────────────────────┐
│ @aman_asmuei/amem │ ← this package
│ │
│ 33 Tools · 7 Resources · 2 Prompts
│ Slash commands · CLI · Hooks │
│ Config: ~/.amem/config.json │
└────────────────┬────────────────┘
│ imports
▼
┌─────────────────────────────────┐
│ @aman_asmuei/amem-core │ ← the engine
│ │
│ Multi-Strategy Retrieval │
│ [HNSW] + [FTS5] + [Graph] + [Temporal]
│ + query expansion │
│ + cross-encoder reranker │
│ │
│ Self-Evolving Reflection │
│ [Clustering] + [Contradictions]│
│ + [Synthesis] + [Gap Detection]│
│ │
│ Embeddings: bge-small-en-v1.5 │
│ Reranker: ms-marco-MiniLM int8 │
│ 97.8% R@5 on LongMemEval-S │
└────────────────┬────────────────┘
│
▼
┌─────────────────────────────────┐
│ SQLite + WAL + FTS5 │
│ ~/.amem/memory.db │
│ │
│ memories (tiered) │
│ conversation_log (raw) │
│ memory_versions (history) │
│ memory_relations (graph) │
│ synthesis_lineage │
│ knowledge_gaps │
│ session_summaries │
│ reminders │
└─────────────────────────────────┘
amem MCP サーバーは amem-core を囲む薄いラッパーです。 検索エンジン、埋め込み、ナレッジグラフ、リフレクションはすべて amem-core に実装されており、独立してバージョン管理されています。MCP の接続処理に不具合があれば、amem を再公開します。想起機能を改善する場合は、amem-core を再公開します。互いに依存しません。
ランキング式
score = relevance x 0.45 + recency x 0.2 + confidence x 0.2 + importance x 0.15
| 要素 | 動作 |
|---|---|
| 関連性 | HNSW インデックスによるコサイン類似度。クエリ拡張キーワードによるフォールバック |
| 新しさ | 指数減衰(0.995^hours) |
| 確信度 | 確認が繰り返されると強化(0~1) |
| 重要度 | タイプに基づく:修正事項は 1.0、事実は 0.4 |
加算方式のスコアリングにより、単一の低い要素によってランキング全体が損なわれることはありません。
⚙️ 設定
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
AMEM_DIR | ~/.amem | 保存ディレクトリ |
AMEM_DB | ~/.amem/memory.db | データベースのパス |
AMEM_PROJECT | (git から自動取得) | プロジェクトのスコープを上書き |
設定ファイル(~/.amem/config.json)
デフォルト値を使って自動的に作成されます。
{
"retrieval": {
"semanticWeight": 0.4,
"ftsWeight": 0.3,
"graphWeight": 0.15,
"temporalWeight": 0.15,
"rerankerEnabled": true
},
"privacy": {
"enablePrivateTags": true,
"redactPatterns": ["..."]
},
"tiers": {
"coreMaxTokens": 500,
"workingMaxTokens": 2000
},
"hooks": {
"enabled": true,
"captureToolUse": true,
"captureSessionEnd": true
}
}
📋 バージョン履歴
v0.23.0 — インタラクティブなナレッジグラフダッシュボード
ズーム/パン、クリックによるフォーカスと近傍のハイライト表示、関係をたどれる詳細パネル、検索と絞り込み、方向付きエッジ、力指向レイアウトを備えた全幅のグラフエクスプローラー。管理ツール(doctor、repair、config、sync)。18 のテストスイートで計 255 件のテストを実施。
v0.19.0 — 自己進化型メモリループ
HNSW ベースのクラスタリングを備えたリフレクションエンジン、3 層の矛盾検出(否定+数値+低オーバーラップ)、系譜追跡機能付きの統合候補、ナレッジギャップ検出、ユーティリティスコアリング、memory_inject での自動トリガーによるナッジ。新しい DB テーブル:synthesis_lineage、knowledge_gaps、reflection_meta。マイグレーション v5。
v0.18.0 — 段階的な情報開示とスケーラビリティ
HNSW ベクトルインデックス(1 万件で 67 倍高速)、想起/検索時のコンパクトモードをデフォルトで有効化、DB 修復 CLI、並行アクセスの安全性、ヒューリスティックな会話抽出機能、セッション終了時の自動抽出。
v0.13.0 — 世界水準の想起
bge-small-en-v1.5 埋め込み、加算スコアリング、クエリ拡張、ナレッジグラフの自動関連付け、グラフを考慮した注入、amem doctor、CI ベンチマーク。
v0.9.x — 時間的インテリジェンス
時間的な有効性、矛盾の自動期限切れ、複数戦略による検索、クロスエンコーダーによる再ランキング、メモリ階層、プライバシータグ、ライフサイクルフック、セッション要約、ダッシュボード、設定システム。
v0.7.0 — v0.8.0
インポート/エクスポート、信頼度の減衰、埋め込みキャッシュ、マルチプロセスの安全性、自動設定 CLI、ダッシュボード。
v0.1.0 — v0.5.x
コアの保存/想起、ローカル埋め込み、SQLite + WAL、統合、プロジェクトスコープ、リマインダー、会話ログ、ナレッジグラフ、FTS5、段階的な情報開示。
🧰 技術スタック
| 層 | 技術 |
|---|---|
| プロトコル | MCP SDK ^1.25 |
| 言語 | TypeScript 5.6+、厳格モード |
| データベース | SQLite + WAL + FTS5 |
| 埋め込み | HuggingFace bge-small-en-v1.5(ローカル、80MB)+ HNSW ベクトルインデックス |
| 再ランキング | ms-marco-MiniLM-L-6-v2(デフォルトで有効、int8、バッチ処理、ローカル) |
| バリデーション | .strict() スキーマを使用する Zod 3.25+ |
| テスト | Vitest — 19 スイートで 281 件のテスト + 想起ベンチマーク |
| CI/CD | GitHub Actions、リリース時に npm で公開 |
🤝 コントリビューション
git clone https://github.com/amanasmuei/amem.git
cd amem && npm install
npm run build # zero TS errors
npm test # 281 tests pass
PR はマージ前に CI を通過する必要があります。未対応のタスクについてはIssuesをご覧ください。
🇲🇾 マレーシアで Aman Asmuei が ❤️ を込めて開発しました。Aman Asmuei
MIT ライセンス · amem が AI の健忘を防いでくれたら ⭐ を付けてください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。