エージェントにもっと自分を理解させる:軽量・ベクトル不要・高機能。
機能 · 仕組み · LLM 設定 · はじめる · コスト · コミュニティ
「 あなたは作業に集中するだけ。CatchMe が残りを記録します — ローカル保存でプライバシーと安全を確保。 」
🦞 エージェントを本当にパーソナルに。CatchMe は CLI エージェント(OpenClaw、NanoBot、Claude、Cursor など)向けの Skill として提供されます。CatchMe は単体で起動でき、エージェントは CLI コマンドだけで記憶を問い合わせます。
- イベント駆動の記録:タイマーも遅延もなく、マウス操作を十字マーカー付きで即座に取得。
- 豊富な文脈:マウス操作を中心に、ウィンドウ、キーボード、クリップボード、通知、ファイルを追跡する 5 系統のレコーダー。
- 自動整理:生ストリームを 5 段階(日 → セッション → アプリ → 場所 → アクション)に構造化。
- スマート要約:各レベルで LLM が要約し、ログを検索可能な知識ツリーへ変換。
- ベクトル不要:埋め込みと VDB をスキップ — ナビゲーションはツリー推論で行います。
- トップダウン検索:LLM が要約を読み、関連ブランチを選び、証拠まで掘り下げます。
- 1 ファイル設定:Skill ファイルを任意の AI エージェントに置くだけで統合。
- すぐ使える:CLI による画面履歴の問い合わせ、追加設定は不要。
- 最小フットプリント:SQLite + FTS5 で実行時 RAM 約 0.2GB。
- ローカル&オフライン:データはマシン内に留まり、Ollama / vLLM / LM Studio で完全オフラインも可能。
- 視覚的探索:インタラクティブなタイムライン、記憶ツリーのナビ、リアルタイム監視。
- 自然な対話:自然言語でデジタル足跡全体とチャット。
CatchMe は、生のデジタル活動を 3 つの並行ステージで構造化・検索可能な記憶に変換します。
キャプチャ。6 つのバックグラウンドレコーダーがウィンドウフォーカス、キー入力、マウス移動、スクリーンショット、クリップボード、通知を静かに追跡します。
インデックス。生イベントは階層アクティビティツリー(日 → セッション → アプリ → 場所 → アクション)に自動整理され、各ノードに LLM 要約が付きます。ベクトル埋め込みなしで高速かつ意味のある想起が可能です。
検索。質問に対し LLM が記憶ツリーを上から辿り、関連ノードを選び、スクリーンショットやキー入力などの生データを確認して、正確な回答を合成します。
アクティビティツリーは CatchMe の記憶の中核です。デジタル生活の多層的・構造化ビューを提供し、高レベルの要約から細部まで辿れます。
従来のベクトル検索は使いません。LLM がアクティビティツリーを直接ナビゲートし、日をまたぐ複雑な推論と、生の活動履歴からの精密な証拠収集が可能です。
📖 詳しくは:ブログ で設計の深掘りと技術解説を公開しています。
• 100% ローカル保存:スクリーンショット、キー入力、アクティビティツリーなどの生データはすべて ~/data/ に保存され、端末外に出ません。
• オフライン優先:ローカル LLM(Ollama、vLLM、LM Studio)でクラウドに依存しない完全オフライン運用が可能です。
•
• マルチモーダル:テキスト + 画像を扱えるモデルであること。
• コンテキスト長:config.json の max_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_urlとapi_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 |
要約の出力言語(en、zh など) |
max_tokens_l0–l3 |
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 は 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.mdfrom 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 をご覧いただきありがとうございます








