Midas について
Midasは、セッションをまたいで決定事項や制約、事実を保持したい開発者向けのローカルメモリレイヤーです。取り込み時にLLMを使わず、記憶を元の発話に結び付け、古い記憶や未確認の記憶に基づく危険な操作を防ぎます。
主な機能
- 01共有ローカルSQLiteメモリ
- 02LLMを使わない取り込みと検索
- 03元の発話をたどれる検索結果
- 04古い信念の改訂と選択的な忘却
- 05危険な操作に有効な確認を要求
活用シーン
- 01コーディングエージェント間でプロジェクトの決定事項を継続
- 02現在の事実やセッション間の変更を確認
- 03破壊的操作の前に記憶の確認状態を検査
MCP 対応
Midasは標準的なMCPサーバーを提供し、midas-mcpまたはHTTP MCP URL経由で接続できます。midas initは検出したMCPクライアントを設定し、同じメモリストアを共有させます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx midas-memory-mcpMIDAS_MCP_DBPath to a SQLite file to persist memory across restarts (default: in-memory)MIDAS_MCP_EMBEDDEREmbedding backend: 'local' (bge ONNX, offline) or 'hashing' (default: local)MIDAS_MCP_MAX_RECORDSCap the store; above it the lowest-value memories are auto-forgotten (no LLM)MIDAS_MCP_MIN_IMPORTANCERelevance floor 1-5 for auto-capture; turns scoring below it are skippedローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Midas
長期にわたって動作するAIエージェントのためのローカルメモリレイヤー — セッションをまたいで記憶し、最新の状態を保ち、古いメモリに基づいて行動しません。
取り込み時にLLM不要 · メッセージごとの費用は$0 · 完全ローカル · すべての想起はそのソースまでたどれます。
AIアシスタントはセッションのたびにすべてを忘れてしまいます。Midasは、その隣であなたのマシン上に動作するメモリです。 コーディングエージェントは、3セッション前の決定、規約、バグを覚えています — すべてのメッセージをLLMに渡して事実を「抽出」する必要はありません。メッセージごとの費用は一切かからず、あなたのコンピューターの外にデータが出ることもなく、すべてのメモリは元になった正確なターンまでたどることができ、さらに古くなった、または一度も確認されていないメモリに基づいてエージェントが行動することを防ぎます。
uv tool install "midas-memory[mcp,local]" # install
midas init # create the shared memory + wire up your MCP clients
# or, no Python: npx -y midas-memory-mcp # TypeScript port
# or, as a library: pip install "midas-memory[local]"
uv tool upgrade midas-memory # Update Midas
エージェントにインストール · ベンチマークを見る · 完全な概要 · ロードマップ
Midasを選ぶ理由
ほとんどのメモリツールは、各セッションを要約するためにLLMを呼び出します — そのため、トークンの費用がかかり続け、遅延が増え、すべてのターンがプロバイダーに送られ、監査できないように書き換えられた事実が返ってきます。Midasは正反対のアプローチを採用しており、それによって低コストで、プライベートで、信頼できるものになっています。
- 設計上、費用は$0でプライベートです。 取り込み時もクエリ時もLLMを使いません → API費用はかからず、マシンの外にデータが出ることもなく、ローカルで高速に動作します(数十ミリ秒程度で、ターンごとのネットワーク往復はありません)。
- 想起された内容を信頼できます。 想起されるのはLLMが書き換えた内容ではなく、ソースとなったターンの逐語的な内容です — あなたが一度も言っていない「事実」を密かに捏造しかねない抽出ステップがありません。
- 自動で最新の状態を保ちます。 型付きの信念更新によって、古い値を重複して積み上げずに置き換えます。選択的な忘却によってメモリの規模も抑えます — すべてLLMなしで実現します。
- 安心して基盤として使えます。 出典ガードによって、メモリを計画に活用しつつ、明示的に確認されていない限り、メモリを根拠とする外部への操作や破壊的な操作をブロックします — 置き換えられたメモリが操作を許可することもありません。
- 1つのファイルで、さまざまなツールを使えます。 Claude Code、Cursor、チャットアプリを1つのSQLiteファイルに接続すれば、すべてで1つの最新のメモリを共有できます。
- 主張ではなく、実証済みです。 失敗した実験も含め、すべての主張に再現可能なベンチマークがあります。
Midas との比較
以下の Midas の数値はすべて、このリポジトリで測定され、再現可能です。取り込み時に LLM を使う列は、この設計クラス(Mem0、Zep、Hindsight)の構造的特性を反映しており、数値は BENCHMARKS.md に記載されています。
| Midas | 取り込み時に LLM を使うシステム(Mem0、Zep、Hindsight) | |
|---|---|---|
| 取り込み時の LLM 呼び出し | 0 | セッションごとに ≥1 |
| メッセージあたりのコスト | $0 | トークンごとの API 費用が継続的に発生 |
| 取り込み時のデータ外部送信 | なし | すべてのターンが環境外へ送信される |
| 取り込みレイテンシ | 約 16~116 ms、ローカル、埋め込み処理がボトルネック | 約 668 ms + API 往復時間 |
| 想起で返される内容 | 元のターンをそのまま返す、追跡可能 | LLM が書き換えた事実(元データの recall@k は計算不可) |
| 決定論的かつ再現可能 | はい — すべての数値を、1 つのコマンドで再現 | いいえ |
| 完全オフラインで動作 | はい(ローカルの Ollama リーダーを使ってエンドツーエンドで測定) | いいえ |
LongMemEval-s の評価済み回答(gpt-4o) | 0.84 | 0.84 — Observational Memory、LLM による取り込みあり |
| 会話全体の集約/要約 | ❌ 設計上、非対応 — top-k 検索では網羅できません(詳細) | ✅ 構造上の強み |
最後の行は意図的なものです。Midas は会話全体を扱う能力と引き換えに、コスト $0、プライバシー、監査可能性を実現し、そのトレードオフの影響を示す測定結果を公開しています。
想起にとどまらない:管理可能なメモリ
埋もれた事実を見つけることは、最低限必要な機能です。長期にわたって作業するコーディングエージェントには、安全に実行できる、そして確実に再開できるメモリが必要です。類似性検索だけでは不十分なのは、まさにこの点です。
| 質問 | Midas の回答 | top-k 検索では対応できない理由 |
|---|---|---|
| 「この破壊的なマイグレーションを実行してもよいですか?」 | ガード:あなたが確認した場合に限り許可され、その確認が現在も有効である場合に限ります | 出所と有効性は、類似性だけでは照合できません |
| 「プロジェクト Apollo の現在の状態は?」 | memory_state:有効で、後から置き換えられていない決定事項/制約/事実 | 「現在の状態」のような幅広いクエリは、単一のターンには一致しません |
| 「前回のセッション以降、何が変わりましたか?」 | memory_diff:追加された信念と、変更された信念(旧 → 新) | 「新しい情報は?」は、そもそも内容を検索するクエリではありません |
| 「トランザクション一覧を高速化するには?」 | 以前の修正が再び提示されるため、エージェントは同じ原因を再調査せずに済みます | — |
これらの特性は主張ではなく、測定されています。エージェントメモリのベンチマークスイートでは、スクリプト化された複数セッションのプロジェクトを対象に、実行の安全性、決定事項の遵守、同じ誤りの繰り返しの回避、再開の忠実度、矛盾の検出/精度(過剰に警告せず、エージェント間の現在の矛盾を発見)、敵対的なメモリ安全性を評価します。安全性評価では、禁止事項のすぐ隣に仕込まれた確認、別の操作に対する確認、出所を偽装した置き換え、別の名前空間にまたがる承認など、10 件中 10 件の敵対的攻撃をブロックします(ASR 0.00)。しかも、過剰なブロックはありません(正常な操作の許可率 1.00)。決定論的、コスト $0、LLM 不使用。1 つのコマンドですべての数値を再現できます。
uv run python -m eval.benches # the whole governance suite — or `midas bench` from a checkout
ベンチマークでの性能
決定論的な、リーダーに依存しない検索(recall@k — 正解の根拠となるターンのうち、コンテキストに取り込まれた割合)を、公開データセット全体で直近のターンを使うベースラインと比較します。
| ベンチマーク(全データセット) | ベースライン | Midas |
|---|---|---|
LongMemEval-s — 500 問、246,750 ターン | 0.01 | 0.92 |
| LoCoMo — 10 件の会話、n=1,540 | 0.05 | 0.73 |
| BEAM — 最先端ベンチマーク、100K → 10M トークン | 0.00 | 0.56 → 0.32 |
さらに、システム間で比較できる指標として、判定済み回答率(リーダーボードで使用されているものと同じ gpt-4o 判定者を使用)があります。
| 判定済み回答 | ベースライン | Midas |
|---|---|---|
LongMemEval-s(gpt-4o リーダー、取り込みコスト $0 で LLM 取り込みの SOTA と同率) | — | 0.84 |
| BEAM-100K(gpt-4o 判定者、生ターンの下限、取り込みコスト $0) | 0.05 | 0.40 |
取り込み時の LLM 呼び出しは0 回、コストは $0、データの外部送信も 0です。全数値、カテゴリ別の内訳、再現用コマンド、Mem0/Zep/Mastra との直接比較は BENCHMARKS.md にあります。
評価を第一に考えるからこそ、失敗も公開します。 ハイブリッド検索、再ランキング、スレッドの多様化、2 段階粒度でのインデックス作成、素朴な蒸留は、いずれも効果がない(または悪影響がある)と測定されており、その結果を記録しています。率直に示すことが重要です。BENCHMARKS.md と
docs/frontier-2026.mdをご覧ください。
コーディングエージェントに接続する
1つのコマンドですべてを設定できます:
midas init # creates the shared memory + configures every MCP client it finds
midas status # check what's wired · run `midas init --dry-run` to preview first
どちらも --json を指定すると、機械可読な クライアント設定レシート を出力します。各クライアントがどのメモリに接続されたか、どのスコープ/ポリシーで設定されたか、どのクライアントがスキップされたかが記録されます(設定パスのみで、メモリの内容は含まれません)。バグ報告に貼り付けたり、別のエージェントに文章を解析させずに設定を検証させたりできます。
midas init は共有メモリを1つ(~/.midas/memory.sqlite3)作成し、検出した MCP クライアント — Claude Code、Codex、Grok Build、Cursor、Claude Desktop、Windsurf、VS Code、Gemini CLI、Cline、Zed — をそのメモリに接続します。すべてのエージェントが自律的に同じメモリを読み書きするため、クライアントごとのパスを同期し続ける必要はありません。
クライアントごとに起動するのではなく、単一のエンドポイントを使いたい場合は、サーバーを1つ起動し、クライアントに MCP URL を指定します:
midas serve --http # → http://127.0.0.1:7077/mcp (one server, one memory, every client shares it)
midas serve --http --token <secret> # require `Authorization: Bearer <secret>` on every request
midas update で Midas を最新の状態に保てます。midas inspect でいつでもメモリを確認できます。
すでにエージェントのメモリをファイルで管理していますか? midas import --from claude-md CLAUDE.md(または
--from cursorrules、--from jsonl、--from mem0、--from zep)を使うと、ルールやエクスポートを、由来をタグ付けした、再実行しても重複しない、正式な呼び出し可能・管理可能なメモリに変換できます。
エージェントが capture を呼び出さない場合でもメモリを残したいですか? midas init --claude-hook は Claude Code の SessionEnd フックをインストールし、各セッションのユーザー発言をメモリに取り込むよう提案します。実際に保存する内容は、Midas の LLM 不使用ポリシーによって引き続き判断されます。
手動セットアップ — 任意のクライアント、または設定をカスタマイズする場合(クリックして展開)
Midas は標準的な MCP サーバーです。任意のクライアントで midas-mcp コマンドを指定してください。デフォルトでは共有ストアを使用するため、パスは不要です。共通の設定ブロック:
{ "mcpServers": { "midas": { "command": "midas-mcp", "env": { "MIDAS_MCP_EMBEDDER": "local" } } } }
| クライアント | 設定の場所 |
|---|---|
| Claude Code | claude mcp add midas -s user -e MIDAS_MCP_EMBEDDER=local -- midas-mcp |
| Cursor | ~/.cursor/mcp.json — JSON ブロックを貼り付け |
| Claude Desktop | Settings → Developer → Edit Config (claude_desktop_config.json) — 貼り付けて再起動 |
| Codex CLI | codex mcp add midas -- midas-mcp |
| Grok Build | grok mcp add --scope user midas -e MIDAS_MCP_EMBEDDER=local -e MIDAS_MCP_CLIENT=grok-build -- midas-mcp |
| Windsurf | ~/.codeium/windsurf/mcp_config.json — ブロックを貼り付け |
| VS Code | ユーザーの mcp.json(servers キー、"type": "stdio")— midas init が書き込みます |
| Gemini CLI | ~/.gemini/settings.json(mcpServers キー)— midas init が書き込みます |
| Cline | VS Code のグローバルストレージにある cline_mcp_settings.json — midas init が書き込みます |
| Zed | settings.json → context_servers — midas init が書き込みます |
| その他 | midas-mcp コマンドを指定 |
| Python なし | npx -y midas-memory-mcp — TypeScript 版(実験的;@huggingface/transformers を任意で使ったセマンティック埋め込みに対応) |
環境変数でクライアントごとに上書きできます:MIDAS_MCP_DB(デフォルトは ~/.midas/memory.sqlite3;:memory: = 一時的)
· MIDAS_MCP_MAX_RECORDS · MIDAS_MCP_MIN_IMPORTANCE · MIDAS_MCP_NAMESPACE。
⚠️ GUI アプリはシェルの
PATHを共有しません。 クライアントに 「command not found」 と表示される場合は、which midas-mcpで取得した絶対パスを使用してください。Windows では JSON 内のパスにスラッシュ/を使用してください。
接続すると、Midas はエージェントに短いポリシーを挿入します(まず呼び出し、その後、永続性のある事実/決定/好み/制約/訂正を記録)。エージェントは自由に記録しますが、何を保存するかは Midas が判断します — 重要度を評価し(LLM 不使用)、些細な情報を除外し、重複をスキップし、古くなった認識を更新し、低価値な情報を削除して上限内に保ちます。メモリを根拠とする外部操作または破壊的な操作を行う前に、エージェントは check_memory_use を呼び出します。ユーザーが確認するまで操作はブロックされ、確認が有効な状態であることも必要です。
1つのメモリを複数のクライアントで共有
デフォルトでは、すべてのクライアントが1つの稼働中メモリ(~/.midas/memory.sqlite3)を共有します。各クライアントは他のクライアントによる書き込みを検出し(SQLite の data_version)、更新するため、IDE で記録した事実を、再起動せずに数秒後にはチャットアプリから呼び出せます。
代わりにプロジェクトごとに分離したい場合は、midas init --project-scoped(または MIDAS_MCP_NAMESPACE=auto)を使うと、同じストア内にプロジェクトごとのパーティションが作成されます。スコープは、サーバーの実行元である git リポジトリ/cwd から導出されます。または、プロジェクト/エージェント/ユーザーごとに MIDAS_MCP_NAMESPACE で手動設定できます。
実際の実行を再構成した画面です。記録/呼び出しの行は、1つのファイルを共有する2つの別々のプロセスの出力をそのまま掲載しています。
すべてのツールと環境変数
ツール: remember、capture(ポリシーで制御される自動保存)、recall(出典を追跡可能)、build_context
(簡潔で日付付き、今日を基準とするプロンプトブロック)、resume(1回の呼び出しでセッションを開始するパック:ピン留め項目+
状態+変更点+未完了項目+競合)、memory_state(現在のプロジェクト状態)、memory_diff
(前回からの変更点)、memory_conflicts(互いに矛盾する有効な認識を順位付け)、open_loops / remember_commitment / close_loop(セッションをまたいで残る約束した作業)、
check_memory_use(ガード)、memory_policy、maintain(TTL+重複排除+忘却。削除の監査記録を返します)、stats、
forget(連鎖安全)、forget_matching(トピック単位の消去。デフォルトはドライラン)、
forget_all。プロンプト:memory_session、distill。
環境変数: MIDAS_MCP_DB · MIDAS_MCP_EMBEDDER(local / hashing / multilingual / 任意の fastembed id)·
MIDAS_MCP_MAX_RECORDS · MIDAS_MCP_MIN_IMPORTANCE · MIDAS_MCP_NAMESPACE(=auto → プロジェクトごとのスコープ)· MIDAS_MCP_ANN=1(巨大なストア向けの劣線形
IVF)· MIDAS_MCP_SUPERSEDE · MIDAS_MCP_NLI=1(NLI で制御する改訂)·
MIDAS_MCP_AUTO_MAINTAIN=<min>(アイドル時間の保守)· MIDAS_MCP_PINNED(常時適用する指示をピン留め)·
MIDAS_MCP_TTL(種類ごとの保持期間。例:chat=30,note=90)· MIDAS_MCP_TOKEN(HTTP ベアラー認証)·
MIDAS_MCP_KEY(保存時の SQLCipher 暗号化 — pip install "midas-memory[encrypted]")。
トラブルシューティング
設定がうまく動作しませんか?midas doctor を実行するだけで診断できます。midas-mcp が
PATH 上にあるか、ストアを開けるか、ローカルのエンベッダーが利用可能か、どのクライアントが実際に
接続されているかを確認し、失敗した各チェックに修正のヒントを表示します。読み取るのは設定パスとバージョンのみです。メモリの内容は読み取らないため、出力をバグ報告に貼り付けても安全です。
midas doctor # ✓/⚠ per check, with a hint for each failure
midas status # what's wired + the store's record count
| 症状 | 考えられる原因と対処方法 |
|---|---|
| クライアントに "command not found" と表示される | GUI アプリはシェルの PATH を引き継ぎません。クライアント設定では、which midas-mcp で確認した絶対パスを使用してください。 |
| 呼び出しの精度が低い/字句的に感じる | オフラインのハッシュ化エンベッダーが使われています。ローカルのエンベッダーをインストールしてください:uv tool install "midas-memory[mcp,local]"(または pip install "midas-memory[local]")。midas doctor がこれを通知します。 |
| クライアントが他のクライアントのメモリを認識しない | 両方が同じストアを参照していることを確認してください。midas status にパスが表示されます。接続設定の記録(midas status --json)には、各クライアントの正確なコマンドと環境変数が表示されます。 |
| MCP サーバーが起動しない | SDK はインストールされていますが、[mcp] エクストラがインストールされていません。pip install "midas-memory[mcp]" を実行してください。midas doctor がこの問題を明示します。 |
まだ解決しませんか?バグ報告
を作成してください(midas doctor のブロックがあらかじめ入力されます)。またはディスカッションで質問してください。
Python(SDK)で使用する
from midas import Memory, LocalEmbedder
mem = Memory(embedder=LocalEmbedder()) # fully local. (Or Memory() for a zero-setup offline embedder.)
mem.remember("Decision: the primary database is PostgreSQL.", kind="constraint", importance=5)
mem.remember("The launch date moved to September 14.", kind="fact", importance=5)
mem.capture("lol ok cool") # filler — auto-scored below the floor, skipped (no LLM)
mem.assemble("when do we launch?", token_budget=128) # prompt-ready, dated, source-traceable
for hit in mem.recall("which database did we pick?", limit=3):
print(f"{hit.score:.2f} {hit.record.content}") # each hit traces to its source
プロジェクトの状態と差分 · 信念の改訂 · 忘却 · 名前空間 · 二時点 · LangGraph
from midas import Memory, LocalEmbedder
from midas.nli import LocalNLI
from midas.sqlite_store import SQLiteStore
from midas.state import memory_state, memory_diff # the control-plane views
# Durable, shareable, no native extension. Safe across threads & processes (live data_version refresh).
mem = Memory(store=SQLiteStore("memory.db"), embedder=LocalEmbedder(),
supersede=True, nli=LocalNLI()) # a turn that CONTRADICTS an old belief supersedes it
# Control-plane: the current state of a project, and what changed since a point in time (no LLM):
memory_state(mem, scope={"project": "apollo"}) # live, non-superseded decisions/constraints/facts
memory_diff(mem, since=last_session_epoch) # {added: [...], revised: [(old, new), ...]}
mem.forget_decayed(max_records=50_000) # evict lowest value (importance × recency); protects facts
mem.recall("when is the launch?", as_of=1_700_000_000) # bitemporal: "what did we believe on date X"
# Right-to-be-forgotten — preview, then erase, with an audit trail:
mem.forget_matching("the user's home address", dry_run=True)
mem.forget_matching("the user's home address")
# Back LangGraph's long-term memory with Midas:
from midas.integrations.langgraph_store import MidasStore
store = MidasStore(); store.put(("user", "123"), "pref", {"text": "prefers dark mode"})
メモリを確認・管理する — midas inspect
ほとんどのメモリは、LLM が書き換えた事実を格納するブラックボックスです。Midas はガラス張りです。ストアに対してローカルのインスペクターを実行すれば、エージェントが何を、なぜ、どのソースから記憶しているのかを正確に確認し、修正、固定、または忘却させることができます。
midas inspect --db ~/.midas/memory.sqlite3 # opens http://localhost:7777 — local only, zero egress
# before install: python -m midas.inspector --db <your.sqlite3> --embedder hashing
- 概要 — 件数、帰属可能性、30 日間のアクティビティチャート、種類/来歴/新しさの内訳を表示します。種類と来歴の色は、すべてのビューで一貫して使用されます(固定のカテゴリ別パレットを採用し、どちらのテーマでも色覚多様性に配慮したコントラストを検証済みです。色だけに頼らず、すべての値にラベルを付けています)。
- すべてのメモリを閲覧・検索できます(原文のまま、来歴とソースを表示)。種類、来歴、並べ替え順で絞り込めます。
- 信念の履歴とタイムトラベル — 何を信じていたか、何に取って代わられたか、いつ起きたかを確認できます。
- プロジェクトの状態(決定事項/バグ/禁止事項)と、特定の日付以降に何が変わったかを確認できます。
- ガバナンス — メモリがアクションを許可するか、その理由(監査証跡)を確認できます。忘却時には受領記録を残します。
- 競合と未完了のループ —
memory_conflicts/open_loopsと同じコントロールプレーンのビューを表示し、UI からワンクリックで解決/クローズできます。 - 監査ログ — ハッシュチェーンの検証状態と最新のエントリーを確認できます。
- ライトテーマとダークテーマ(単に反転させたダークテーマではなく、独立したテーマ)、キーボードショートカット(どこからでも移動または検索できる ⌘K、検索欄にフォーカスする /)、スマートフォンの幅まで対応するレスポンシブレイアウトを備えています。
また、すべての変更(書き込み/改訂/忘却)は、ストア内の改ざん検知可能なハッシュチェーン付き監査ログに追記されます。保存されるのはハッシュのみで、内容は保存されません。midas audit でログを確認でき、midas audit --json でチェーン全体を検証し、誰かが履歴を書き換えた場合は最初に破損したエントリーを報告します。
LLM もアカウントも不要で、ファイル上で動作します。ブラックボックス型のメモリには見せられないものを確認できます。
無料のオープンソース
Midas は完全無料のオープンソースで、MIT の下で公開されています。メモリエンジン、ガード、MCP サーバー、CLI、インスペクター、TypeScript 版、そして ベンチスイート全体が対象です。有料プランも機能制限もテレメトリーもアカウントもありません。自由に使い、フォークし、商用製品に組み込めます。ライセンスはそのすべてを許可しています。
Midas が役に立った場合、貢献する最善の方法は、⭐を付けること、ベンチマーク結果を再現すること、バグを報告すること、または測定可能な貢献を行うことです。特に支援が必要な分野についてはロードマップをご覧ください。
現状について
Midas はまだ初期段階ですが、対象を絞り、測定を優先して構築しています。現状を率直に説明します。
- 検索が強みであり、LLM を使わない設計としては実質的に限界まで到達しています。 自社の A/B テストに加え、最先端の論文でも確認されています(ボトルネックは検索器ではありません)。上記のベンチマーク結果はその成果です。
- 最先端の手法がさらに活用できるのは、構造を保った抽出です。そしてそれには、Midas が取り込み時に意図的に実行しない高性能なモデルが必要です。 評価用ハーネスを構築し、BEAM の要約カテゴリで測定した結果、小規模なローカル抽出器では効果がありませんでした(評価基準のカバレッジは、未加工データが 0.28、置き換えが 0.07)。改善には高性能なモデルが必要なため、これは Midas ではなく、エージェントのモデルが担うべきです。任意の蒸留設定はデフォルトでオフです。これを成果として主張することはありません。(詳細は
docs/frontier-2026.md§2b をご覧ください。) - 今後の方向性: 想起からガバナンスされたメモリのコントロールプレーンへ —
memory_state/memory_diff、古いメモリや未確認のメモリに基づく行動を防ぐ来歴ガード、そしてこれらの特性を測定する Agent Continuity Bench。ローカルで監査可能、そして実証済みの範囲について誠実であることを重視します。
評価ハーネス
eval/(開発専用)では、Midas と競合製品を synthetic/LoCoMo/LongMemEval/multiday/
conflicts-v1/BEAM で実行し、決定論的な recall@k と precision@k、コスト/レイテンシの計測、
単純なリーダーによるアブレーション(数値がリーダーによって水増しされていないことを証明)、
および任意のローカルまたはホスト型 LLM ジャッジを使用します。不正防止チェックリスト(クエリの書き換えなし、
取り込み時の LLM 使用なし、正解データの漏洩なし、シード付きサンプリング)、競合の処理、
失敗のトレース、MCP ポリシーの原文については、
docs/methodology.md を参照してください。
python -m eval.runner --dataset longmemeval --variant s --local --midas-no-rerank --max-questions 40
python -m eval.runner --dataset beam --beam-tier 100K --local --dumb-reader # frontier benchmark
python -m eval.continuity # Agent Continuity Bench
プライバシーとライセンス
ローカルファーストです。すべてのメモリはお使いのマシン上の SQLite ファイルに保存され、想起では保存されたテキストが
そのまま返され、記録/想起/削除ではネットワーク通信は発生しません。アカウント、API キー、テレメトリーは不要です。外部への
通信は、埋め込みモデルの初回ダウンロード(local バックエンドの場合)とパッケージのインストールのみです。
任意で保存データを暗号化できます。[encrypted] エクストラを使用して MIDAS_MCP_KEY を設定すると、ストアは
SQLCipher データベースになります。キーがなければ読み取れず、Midas は平文での書き込みに黙って切り替えるのではなく、
フェイルクローズします。詳しくは PRIVACY.md · MIT を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。