Skip to content

Latest commit

 

History

History
422 lines (328 loc) · 25.6 KB

File metadata and controls

422 lines (328 loc) · 25.6 KB

English · 中文 · 日本語 · Español

CatchMe Logo

CatchMe:デジタル足跡をすべて記録

エージェントにもっと自分を理解させる:軽量・ベクトル不要・高機能。

License Python Platform Blog Report
Feishu WeChat Discord

機能  ·  仕組み  ·  LLM 設定  ·  はじめる  ·  コスト  ·  コミュニティ

あなたは作業に集中するだけ。CatchMe が残りを記録します — ローカル保存でプライバシーと安全を確保。

CatchMe ターミナルデモ

🦞 エージェントを本当にパーソナルに。CatchMe は CLI エージェント(OpenClaw、NanoBot、Claude、Cursor など)向けの Skill として提供されます。CatchMe は単体で起動でき、エージェントは CLI コマンドだけで記憶を問い合わせます。

🎯 パーソナルなデジタル文脈を豊かに

コーディング

💻 パーソナルコーディングアシスタント

「今日 Claude Code で何を書いていた?」

• コードセッションの再生
• 編集したファイルを思い出す
• 入力内容をたどる
リサーチ

🔍 パーソナルディープリサーチ

「昨日 AI について何を読んでいた?」

• 閲覧した Web/PDF
• 入力した検索クエリ
• 読書情報の追跡
ファイル

📁 パーソナルファイルマネージャ

「今日どのファイルを変えた?」

• ファイル変更の追跡
• 開いたドキュメント
• 編集のレビュー
デジタルライフ

🧩 デジタルライフの俯瞰

「午後はどう過ごした?」

• アプリ利用の追跡
• ワークフローの再生
• アクティビティの想起

✨ 主な機能

📹 常時オンのイベント取得

  • イベント駆動の記録:タイマーも遅延もなく、マウス操作を十字マーカー付きで即座に取得。
  • 豊富な文脈:マウス操作を中心に、ウィンドウ、キーボード、クリップボード、通知、ファイルを追跡する 5 系統のレコーダー。

🌲 インテリジェントな記憶の階層

  • 自動整理:生ストリームを 5 段階(日 → セッション → アプリ → 場所 → アクション)に構造化。
  • スマート要約:各レベルで LLM が要約し、ログを検索可能な知識ツリーへ変換。

🔍 ツリーベースの検索

  • ベクトル不要:埋め込みと VDB をスキップ — ナビゲーションはツリー推論で行います。
  • トップダウン検索:LLM が要約を読み、関連ブランチを選び、証拠まで掘り下げます。

🤖 ゼロ設定のエージェント連携

  • 1 ファイル設定:Skill ファイルを任意の AI エージェントに置くだけで統合。
  • すぐ使える:CLI による画面履歴の問い合わせ、追加設定は不要。

🪶 超軽量・プライバシー優先

  • 最小フットプリント:SQLite + FTS5 で実行時 RAM 約 0.2GB。
  • ローカル&オフライン:データはマシン内に留まり、Ollama / vLLM / LM Studio で完全オフラインも可能。

🖥️ リッチな Web UI

  • 視覚的探索:インタラクティブなタイムライン、記憶ツリーのナビ、リアルタイム監視。
  • 自然な対話:自然言語でデジタル足跡全体とチャット。

CatchMe Web ダッシュボード

💡 CatchMe のアーキテクチャ

CatchMe は、生のデジタル活動を 3 つの並行ステージで構造化・検索可能な記憶に変換します。

🔄 記録 → 整理 → 推論:混沌を検索可能な記憶へ

キャプチャ。6 つのバックグラウンドレコーダーがウィンドウフォーカス、キー入力、マウス移動、スクリーンショット、クリップボード、通知を静かに追跡します。

インデックス。生イベントは階層アクティビティツリー(日 → セッション → アプリ → 場所 → アクション)に自動整理され、各ノードに LLM 要約が付きます。ベクトル埋め込みなしで高速かつ意味のある想起が可能です。

検索。質問に対し LLM が記憶ツリーを上から辿り、関連ノードを選び、スクリーンショットやキー入力などの生データを確認して、正確な回答を合成します。

CatchMe パイプライン:キャプチャ → インデックス → 検索

🌲 階層アクティビティツリー

アクティビティツリーは CatchMe の記憶の中核です。デジタル生活の多層的・構造化ビューを提供し、高レベルの要約から細部まで辿れます。

階層アクティビティツリー

🔍 インテリジェントなツリー検索

従来のベクトル検索は使いません。LLM がアクティビティツリーを直接ナビゲートし、日をまたぐ複雑な推論と、生の活動履歴からの精密な証拠収集が可能です。

ツリー検索の流れ

📖 詳しくはブログ で設計の深掘りと技術解説を公開しています。

🧠 LLM 設定

❗️ データプライバシーについて

100% ローカル保存:スクリーンショット、キー入力、アクティビティツリーなどの生データはすべて ~/data/ に保存され、端末外に出ません。

オフライン優先:ローカル LLM(Ollama、vLLM、LM Studio)でクラウドに依存しない完全オフライン運用が可能です。

⚠️ クラウド利用時の注意:クラウド API を使う場合、日々の活動の要約に利用されます。信頼できないエンドポイントはプライベートデータを晒す可能性があります — プロバイダのデータ方針をよく確認してください。

📋 要件

マルチモーダル:テキスト + 画像を扱えるモデルであること。

コンテキスト長config.jsonmax_tokens 上限を超えるコンテキストウィンドウを確保してください。

コスト管理強制的なコスト制限 には llm.max_calls で上限を設定するか、filter.mouse_cluster_gap を大きくして要約頻度を下げてください。

CatchMe はバックグラウンド要約とインテリジェント検索に LLM が必要です。catchme initはじめる)でガイド付きセットアップするか、下記の手動設定に従ってください。

クラウド API の例:

{
    "llm": {
        "provider": "openrouter",
        "api_key": "sk-or-...",
        "api_url": null,
        "model": "google/gemini-3-flash-preview"
    }
}

ローカル / オフラインの例:

{
    "llm": {
        "provider": "ollama",
        "api_key": null,
        "api_url": null,
        "model": "gemma3:4b"
    }
}
対応 LLM プロバイダ
プロバイダ 設定名 デフォルト API URL キー取得
OpenRouter (gateway) openrouter https://openrouter.ai/api/v1 openrouter.ai/keys
AiHubMix (gateway) aihubmix https://aihubmix.com/v1 aihubmix.com
SiliconFlow (gateway) siliconflow https://api.siliconflow.cn/v1 cloud.siliconflow.cn
OpenAI openai https://api.openai.com/v1 platform.openai.com
Anthropic anthropic https://api.anthropic.com/v1 console.anthropic.com
DeepSeek deepseek https://api.deepseek.com/v1 platform.deepseek.com
Gemini gemini https://generativelanguage.googleapis.com/v1beta aistudio.google.com
Groq groq https://api.groq.com/openai/v1 console.groq.com
Mistral mistral https://api.mistral.ai/v1 console.mistral.ai
Moonshot / Kimi moonshot https://api.moonshot.ai/v1 platform.moonshot.cn
MiniMax minimax https://api.minimax.io/v1 platform.minimaxi.com
Zhipu AI (GLM) zhipu https://open.bigmodel.cn/api/paas/v4 open.bigmodel.cn
DashScope (Qwen) dashscope https://dashscope.aliyuncs.com/compatible-mode/v1 dashscope.console.aliyun.com
VolcEngine volcengine https://ark.cn-beijing.volces.com/api/v3 console.volcengine.com
VolcEngine Coding volcengine_coding_plan https://ark.cn-beijing.volces.com/api/coding/v3 console.volcengine.com
BytePlus byteplus https://ark.ap-southeast.bytepluses.com/api/v3 console.byteplus.com
BytePlus Coding byteplus_coding_plan https://ark.ap-southeast.bytepluses.com/api/coding/v3 console.byteplus.com
Ollama (local) ollama http://localhost:11434/v1
vLLM (local) vllm http://localhost:8000/v1
LM Studio (local) lmstudio http://localhost:1234/v1

OpenAI 互換の任意エンドポイントが使えます — api_urlapi_key を直接指定してください。

全設定パラメータ
セクション パラメータ 既定値 説明
web host 127.0.0.1 ダッシュボードのバインドアドレス
port 8765 ダッシュボードのポート
llm provider LLM プロバイダ名(上表参照)
api_key プロバイダの API キー
api_url (自動) カスタムエンドポイント;省略時はプロバイダごとに自動設定
model モデル名(プロバイダ依存)
max_calls 0 サイクルあたりの最大 LLM 呼び出し回数(0 = 無制限;コスト制限に設定)
max_images_per_cluster 5 イベントクラスタあたり送る最大スクリーンショット枚数
filter window_min_dwell 3.0 記録前に必要な最小ウィンドウ滞在時間(秒)
keyboard_cluster_gap 3.0 キーボードイベントのクラスタ間隔(秒)
mouse_cluster_gap 3.0 マウスイベントをまとめる時間間隔(秒);大きいほど LLM 要約が減る
summarize language en 要約の出力言語(enzh など)
max_tokens_l0l3 1200 ツリー各レベルの最大トークン(L0=アクション … L3=セッション)
temperature 0.4 要約用の温度
max_workers 2 並列要約ワーカー数
debounce_sec 3.0 要約トリガー前のデバウンス(秒)
save_interval_sec 5.0 ツリーの自動保存間隔(秒)
retrieve max_prompt_chars 42000 検索プロンプトの最大文字数
max_iterations 15 ツリー走査の最大反復回数
max_file_chars 8000 抽出ファイルからの最大文字数
max_select_nodes 7 反復あたりの最大ノード選択数
max_tokens_step 4096 検索ステップあたりの最大トークン数
max_tokens_answer 8192 最終回答の最大トークン数
temperature_select 0.3 ノード選択の温度
temperature_answer 0.5 回答生成の温度
temperature_time_resolve 0.1 時刻解決の温度
max_tokens_time_resolve 1000 時刻解決の最大トークン数

🚀 はじめる

📦 インストール

git clone https://github.com/HKUDS/catchme.git && cd catchme

conda create -n catchme python=3.11 -y && conda activate catchme

pip install -e .

macOS — システム設定 → プライバシーとセキュリティで アクセシビリティ入力監視画面収録 を許可
Windows — グローバル入力監視のため管理者として実行

⚡ 初期化

catchme init                  # 対話式:プロバイダ、API キー、モデル

🔥 実行

catchme awake                 # 記録を開始
catchme web                   # 可視化とチャット

# または CLI から
catchme ask -- "今日は何をしていた?"
CLI リファレンス(抜粋)
コマンド 説明
catchme awake 記録デーモンを起動
catchme web [-p PORT] Web ダッシュボード(既定 http://127.0.0.1:8765
catchme ask -- "質問" 自然言語で活動を問い合わせ
catchme cost LLM トークン使用量(直近 10 分 / 今日 / 累計)
catchme disk ストレージ内訳とイベント数
catchme ram 実行中プロセスのメモリ使用量
catchme init 対話式:プロバイダ、API キー、モデル

🦞 CatchMe がエージェントを本当にパーソナルに

CatchMe は CLI エージェント(OpenClaw、NanoBot、Claude、Cursor など)向けの Skill として提供されます。

🪶 エージェント連携:
CatchMe は自分で起動。エージェントは CLI コマンドだけで記憶を問い合わせます。

# 1. CatchMe を自分で起動
catchme awake

# 2. 軽量 Skill をエージェントに渡す
cp CATCHME-light.md ~/.cursor/skills/catchme/SKILL.md

オプション B — フル Skill(エージェントが CatchMe のライフサイクル全体を自律管理):

cp CATCHME-full.md ~/.cursor/skills/catchme/SKILL.md

🔧 既存ワークフローへの組み込み

from catchme import CatchMe
from catchme.pipelines.retrieve import retrieve

# 1. ワンライン検索 — 記録された活動全体の高速キーワード検索
with CatchMe() as mem:
    for e in mem.search("meeting notes"):
        print(e.timestamp, e.data)

# 2. LLM 検索 — 画面履歴への自然言語 Q&A
for step in retrieve("What was I working on this morning?"):
    if step["type"] == "answer":
        print(step["content"])

📊 コストと効率

ベンチマーク:MacBook Air M4 で 2 時間の連続・高負荷利用

指標
実行時 RAM 約 0.2 GB
ディスク使用量 約 200 MB
トークン処理量 入力約 6 M、出力約 0.7 M
LLM コストqwen-3.5-plus 約 $0.42(Aliyun DashScope
LLM コストgemini-3-flash-preview 約 $5.00(OpenRouter
検索の完了までの時間(質問依存) gemini-3-flash-preview 使用時、1 クエリあたり 5〜20 秒程度

🚀 ロードマップ

コミュニティの声とともに CatchMe は進化します。予定している機能:

マルチデバイス記録。LAN 同期ですべてのマシン上の GUI 活動を取得・統合。

動的クラスタリング。実際の作業パターンとフローにより適合する適応的アルゴリズムで、不要なコストを抑える。

データ活用の強化。現在の処理パイプラインを超えて、スクリーンショットとメタデータからより深い洞察を得る。

🌟 スターを付けて 今後のアップデートをフォロー — 応援が開発の原動力になります。

コメント、バグ報告、アイデア、Pull Request、どんな貢献も歓迎です。CONTRIBUTING.md を参照してください。

🤝 コミュニティ

謝辞!

CatchMe は次の優れたオープンソースに触発されています:

プロジェクト インスピレーション
ActivityWatch オープンソース活動追跡の先駆け
Screenpipe AI エージェント向け画面録画基盤
Windrecorder Windows 上の個人画面録画と検索
OpenRecall Windows Recall の OSS 代替
Selfspy 古典的なデーモン型活動ログ
PageIndex 埋め込みなしのツリー構造ドキュメント検索
MineContext 先回り型コンテキスト認識 AI パートナーと画面キャプチャ

🏛️ エコシステム

CatchMe は HKUDS エージェントエコシステムの一員です — パーソナル AI エージェントの基盤を構築します:

NanoBot
超軽量パーソナル AI アシスタント
CLI-Anything
すべてのソフトウェアをエージェントネイティブに
ClawWork
AI アシスタントから AI コワーカーへ
ClawTeam
チーム自動化のためのエージェント群知能

CatchMe をご覧いただきありがとうございます

visitors