Max Nardit
Agent Recall app icon

Agent RecallAI コーディングエージェントのための永続メモリ

AI エージェントはセッションごとにすべてを忘れます

Agent Recall はコーディングエージェントに永続的な記憶を与えます。事実、人、決定をセッションをまたいで覚えています。オープンソース、ローカルファースト、MCP ネイティブです。

v0.3.0テスト 321 件MITPython 3.10+py.typed
pip install 'agent-recall[mcp]'
agent-recall generate acme-project
--- Agent Briefing: acme-project ---

Key People:
  Alice — Lead Engineer, prefers async
  Bob — Product Manager, owns roadmap

Recent Decisions:
  API migration approved (Feb 12)
  Auth service blocked — waiting on Alice

Active Context:
  Sprint 14, 3 days remaining
  Focus: auth service unblock
MCP ネイティブ。Claude Code、Cursor、Windsurf、Cline でテスト済みClaude Code実戦投入済みCursorWindsurfCline

積み上がるコンテキスト

1

記憶なし

> Alice とは誰ですか?

Alice についての文脈はありません。

すべてのセッションがゼロから始まります。

2

セッション 1 で事実を保存

create_entities: Alice (person)

set_slot: role = "Lead Engineer"

add_observation: "prefers async"

エージェントが学んだことを MCP ツール経由で保存します。

3

セッション 2 は文脈付きで開始

Agent Briefing 読み込み完了

Alice。リードエンジニア

非同期コミュニケーションを好む

2 月 12 日に API 移行が承認

文脈は積み上がります。すべてのセッションが前のセッションの上に乗ります。

仕組み

1

エージェントが事実を保存

エージェントは作業中に MCP ツールを呼び、エンティティ、観察、リレーションを保存します。9 つのツールで完全な CRUD に対応します。

2

SQLite に保存

すべてが WAL モードのローカル SQLite データベースに残ります。プロジェクトごとにスコープ化され、同じ人物でもスコープごとに別の文脈を持てます。

3

起動時にブリーフィング

次のセッションでは AI が生成したブリーフィングが自動で読み込まれます。重要人物、最近の決定、現在の文脈を、ダンプではなく要約してお届けします。

クイックスタート

1. インストール

pip install 'agent-recall[mcp]'
agent-recall init

2. エディタに追加

.mcp.json (Claude Code、Cline) またはエディタ設定 (Cursor、Windsurf)

{
  "mcpServers": {
    "memory": {
      "command": "python3",
      "args": ["-m", "agent_recall.mcp_server"]
    }
  }
}

3. 自動ブリーフィング用フック

.claude/settings.json。セッション開始時にブリーフィングを読み込みます。

{
  "hooks": {
    "SessionStart": [{
      "hooks": [{
        "type": "command",
        "command": "agent-recall-session-start"
      }]
    }],
    "PostToolUse": [{
      "matcher": "mcp__memory__.*",
      "hooks": [{
        "type": "command",
        "command": "agent-recall-post-tool-use"
      }]
    }]
  }
}

4. 確認

agent-recall status
Database: ~/.agent-recall/frames.db
Entities: 27
  client: 11, person: 8, company: 1
  concept: 2, entity: 3, topic: 2

スコープ付きメモリ

同じ人物でもプロジェクトごとに別の文脈で扱えます。Alice は Acme では「Engineer」、BetaCorp では「Consultant」です。データはスコープ階層で分離されます。

AI ブリーフィング

データダンプではなく要約。147 件の事実を読み、Key People、現在のタスク、最近の決定を生成します。LLM は持ち込み可能です。

マルチエージェント対応

エージェンシー向けに設計。スコープ階層により、各エージェントが自分のスコープチェーン内で読み書きしつつ、ナレッジベースを 1 つに統合できます。

ローカルファースト

お使いのマシン上の SQLite。同時アクセス用に WAL モード対応。データはあなたのもの。クラウドもベンダーロックインもありません。

MCP ネイティブ

Model Context Protocol 上の 9 つのツール。MCP 互換クライアント向けに設計され、Claude Code、Cursor、Windsurf、Cline 用のテスト済み設定を提供します。

完全な履歴

バイテンポラル追跡。今の値だけでなく、いつどの値だったかも分かります。スロットごとに完全な時系列履歴を保持します。

コード例

Python API

from agent_recall import MemoryStore, ScopedView

with MemoryStore() as store:
    alice = store.resolve_entity("Alice", "person")
    store.set_slot(alice, "role", "Lead Engineer", scope="acme")
    store.add_observation(alice, "Prefers async", scope="acme")

    view = ScopedView(store, ["global", "acme"])
    entity = view.get_entity("Alice")
    print(entity["slots"]["role"])  # "Lead Engineer"

    # 検索、履歴、トランザクション
    results = store.search("engineer")
    store.set_slot(alice, "role", "Staff Engineer", scope="acme")
    history = store.get_slot_history(alice, "role")

    with store.transaction():
        bob = store.resolve_entity("Bob", "person")
        store.set_slot(bob, "role", "PM")

CLI

$ agent-recall set Alice role Engineer --type person
Alice.role = Engineer

$ agent-recall list --type person
  Alice (person)  Bob (person)

$ agent-recall entity Alice --scope global --scope acme
  role: Lead Engineer (acme)

$ agent-recall logs Alice
  [2026-02-26] Joined the team

$ agent-recall generate my-agent --force
Generated: ~/.agent-recall/context_cache/my-agent.md

エージェントが使える 9 つの MCP ツール

create_entitiesadd_observationscreate_relationssearch_nodesopen_nodesread_graphdelete_entitiesdelete_relationsdelete_observations

マルチエージェント YAML 設定

hierarchy:
  agency:
    - client-a
    - client-b

briefing:
  backend: cli
  model: opus
  adaptive: true
  auto_discover: true

agents:
  coordinator:
    model: opus
    output_budget: 12000
  client-a:
    template: client
    context_files:
      - docs/client-a-brief.md

LLM 持ち込み

from agent_recall import generate_briefing, LLMResult

def my_llm(prompt, model, timeout):
    response = call_your_api(prompt)
    return LLMResult(
        text=response.text,
        input_tokens=0,
        output_tokens=0
    )

generate_briefing(
    "my-agent",
    llm_caller=my_llm,
    force=True
)

なぜ agent-recall なのか

他のメモリソリューション (Mem0、Zep / Graphiti、LangMem) もあります。agent-recall が違うところは:

  • スコープ階層 · フラットな記憶ではありません。継承を伴うスコープチェーン。複数のクライアント、プロジェクト、入れ子の文脈で動くエージェントのために設計されています。同じ人物がプロジェクトごとに別の役割を持てます。
  • AI ブリーフィング · 生のデータダンプは機能しません。LLM が数百件の事実を構造化された実用的な文脈に要約し、セッション開始時に注入します。
  • ローカルファースト · SQLite ファイル 1 つ。クラウド、ベクトル DB、Docker、Neo4j は不要。データはあなたのマシン上にとどまります。
  • MCP ネイティブ · 能動的に保存するための指示を備えた 9 つのツール。MCP 互換クライアント向けに設計されています。
  • バイテンポラル · 古い値は削除ではなくアーカイブされます。任意の時点で何が真だったかを照会できます。
  • 最小限の依存関係 · pyyaml と click のみ。MCP と Anthropic SDK は任意のエクストラです。

本番環境で生まれた

本番で 30 以上の AI エージェントを並列稼働させる実システムから抽出。週末プロジェクトではなく、日々の実稼働を支える実戦投入済みのインフラです。

321

テスト

12

モジュール

WAL

SQLite モード

30+

本番のエージェント

トラブルシューティング

エージェントが事実を自動で保存しない
MCP サーバーが接続されているか確認してください。エージェントは create_entities, search_nodes などを利用可能なツールとして表示するはずです。サーバーがエラーなく起動するかを確認: python3 -m agent_recall.mcp_server
ブリーフィングが空、または生成に失敗する
データがあるか確認してください: agent-recall status でエンティティが表示されるはずです。デフォルトの cli バックエンドには Claude Code のインストールが必要です。api バックエンドを ANTHROPIC_API_KEY.
Windows: python3 が見つからない
Windows では Python は通常 python であり python3 ではありません。MCP 設定の "command": "python".

技術スタック

PythonSQLiteMCPFastMCPYAMLClickpy.typed

エージェントに永続的な記憶を

オープンソース。ローカルファースト。MIT ライセンス。pip install ひとつで使えます。

pip install 'agent-recall[mcp]'
Agent Recall. AI コーディングエージェントのための永続メモリ