HKUDS/CatchMe

"CatchMe: Make Your AI Agents Truly Personal"

CatchMe – AI エージェントのためのパーソナルメモリエンジン

機能

  • コンピュータのバックグラウンドで実行され、マウスクリック、キーストローク、ウィンドウフォーカスの変更、クリップボードの内容、スクリーンショット、通知、ファイル変更など、行ったすべてを記録します。
  • 生のイベントは自動的に階層アクティビティツリー(日 → セッション → アプリ → 場所 → アクション)に整理されます。
  • 各レベルに小さな LLM 駆動の要約が追加され、ツリーが検索可能な知識ベースに変わります。
  • 質問(CLI、Web ダッシュボード、または AI エージェントスキル経由)をすると、LLM がツリーを上から下に辿り、最も関連するブランチを選び、基になる生データを調べ、簡潔な回答を返します。
  • すべてのデータはローカル(SQLite + FTS5)に留まり、任意の LLM で処理できます。クラウド API(OpenAI、Anthropic、Gemini など)から、Ollama、vLLM、LM Studio が提供するオフラインモデルまで。

重要性

  • AI アシスタント(Claude、Cursor、OpenClaw、NanoBot など)に、ベクトルデータベースや外部サービスを必要とせず、デジタルライフのパーソナルメモリを提供します。
  • プライバシーを維持:要約にクラウド LLM を意図的に使用しない限り、何もアップロードされません。
  • macOS、Windows、Linux(X11 のみ)で動作し、ランタイムフットプリントは非常に小さい(約 0.2 GB RAM)。

主な機能(README の説明による)

機能 得られるもの
常時オンイベントキャプチャ 6 つの低レベルレコーダーが、マウス、キーボード、ウィンドウフォーカス、クリップボード、通知、ファイル変更を即座にキャプチャします(タイマーなし)。
インテリジェントメモリ階層 イベントは自動的に 5 層ツリーに整理され、各ノードには高速で意味的なブラウジングのための LLM 生成の要約が付与されます。
ツリーベースの検索(ベクトルなし) ベクトルを埋め込む代わりに、LLM がアクティビティツリーを直接ナビゲートし、ブランチを選択して生の証拠にドリルダウンします。
ゼロ設定エージェント統合 単一のスキルファイルを任意の CLI ベースの AI エージェントにドロップするだけで、エージェントは簡単な CLI コマンドでメモリをクエリできます。
超軽量&プライバシー優先 すべてをローカルの SQLite + FTS5 に保存し、ローカル LLM で完全にオフラインで実行できます。
リッチな Web インターフェース タイムライン、ツリーナビゲーション、チャットウィンドウを備えたインタラクティブなダッシュボードで、自分のデジタルフットプリントと会話できます。
コスト制御設定 LLM 呼び出し数、クラスターあたりの画像数、要約頻度に設定可能な制限を設け、トークン使用量を抑えます。

仕組み(高レベルパイプライン)

  1. キャプチャ – 6 つのバックグラウンドデーモンが OS イベント(マウス、キーボード、ウィンドウフォーカス、スクリーンショット、クリップボード、通知)をリッスンします。
  2. インデックス – イベントは階層アクティビティツリーにストリーミングされます。
  3. 要約 – 設定可能な LLM が各ノード(日、セッション、アプリ、場所、アクション)の短い要約を作成します。
  4. 検索 – 質問をすると、LLM がトップレベルの要約を読み、最も有望なブランチを選択し、具体的な証拠(スクリーンショットやキーストロークログなど)を見つけるまで再帰的に降下して回答します。

はじめに(README のクイックスタート手順)

# 1. クローンして Python 3.11 環境を作成
git clone https://github.com/HKUDS/catchme.git && cd catchme
conda create -n catchme python=3.11 -y && conda activate catchme

# 2. パッケージをインストール(編集可能モード)
pip install -e .

# 3. プラットフォーム固有の権限
#   macOS – アクセシビリティ、入力監視、画面収録を許可
#   Windows – ターミナルを管理者として実行
#   Linux – xdotool と xprop をインストールし、`pip install -e "[linux]"` を実行

# 4. LLM 設定を初期化(対話式)
catchme init   # プロバイダー、API キー、モデルなどを選択

# 5. 記録を開始
catchme awake   # デーモンがバックグラウンドで実行

# 6. クエリまたは探索
catchme ask -- "What was I coding yesterday?"
catchme web    # http://127.0.0.1:8765 でローカルダッシュボードを開く

LLM 設定(設定する必要があるもの)

  • プロバイダー – サポートされている多くのサービスのいずれか(OpenAI、Anthropic、Gemini、Ollama など)。
  • モデル – 要約と検索に使用するモデルの名前。
  • コンテキストウィンドウmax_tokens_* 設定(最終回答のデフォルトは最大 8192 トークン)に対応できる十分な大きさが必要です。
  • プライバシーノート – クラウドプロバイダーを使用する場合、生のアクティビティデータが要約のために送信されます。それ以外の場合は、ローカルモデルですべてをオフラインに保ちます。
  • コスト制限llm.max_callsfilter.mouse_cluster_gap などの設定でトークン使用量を制限できます。

エージェント統合

CatchMe は、小さなスキルファイルを介して任意の CLI ベースの AI エージェントに公開できます。

  • ライトスキル – 自分で catchme awake を実行します。エージェントは catchme ask … を呼び出すだけで済みます。
  • フルスキル – エージェントは CatchMe を開始/停止でき、MCP stdio サーバーを使用してよりリッチな対話が可能です。

エージェントがサポートするツール:

  • search_activity(query, date?)
  • list_days()
  • get_session(session_id)
  • get_tree(date)

コミュニティとリソース


結論

CatchMe は、日常のコンピュータアクティビティを構造化された LLM でクエリ可能な知識ベースに変える、軽量でプライバシー優先の「パーソナルメモリストア」です。ベクトルデータベースやクラウドストレージのオーバーヘッドなしに、任意の AI アシスタントにあなたのデジタル履歴の真の感覚を与えることができます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト