

名前をPensieveに変更しました。Memosという名前は既に使用されていたためです。
Pensieveはプライバシーに焦点を当てたパッシブレコーディングプロジェクトです。画面の内容を自動的に記録し、インテリジェントなインデックスを構築し、過去の記録を取得するための便利なWebインターフェースを提供します。
このプロジェクトは、他の2つのプロジェクト、RewindとWindows Recallから多くのインスピレーションを得ています。しかし、これらとは異なり、Pensieveはデータの完全な制御を可能にし、信頼できないデータセンターへのデータ転送を避けることができます。
v0.33.0 から、Pensieveは agent skill を同梱しています。Skill に対応した任意の AI ツール(Claude Code、Codex、opencode など)が、自然言語でスクリーンショットアーカイブを検索し、エンティティ詳細ページへ直接ジャンプできるようになりました。詳しくは Agent Skill で検索する を参照してください。v0.30.0 から、Pensieveはスクリーンショット記録から特定のアプリケーションを除外できるアプリケーションブラックリスト機能を導入しました。この機能には、記録とファイル監視プロセスの両方でのブラックリストチェックが含まれ、設定パネルでブラックリスト管理インターフェースが強化されています。v0.29.0 から、Pensieveは新しいエンティティ詳細ページを導入し、インタラクティブなコンテキストナビゲーションでスクリーンショットを時系列順に閲覧でき、改善されたビジュアルコンテキストとメタデータ表示を提供します。v0.27.0 から、Pensieveは直感的な設定管理インターフェースを導入し、Webインターフェースからすべての設定を簡単に構成できるようになりました。
[!important]
Pythonのsqlite3ライブラリのすべてのバージョンがenable_load_extensionをサポートしているわけではないようです。しかし、どの環境やPythonのバージョンでこの問題が発生するかはわかりません。私はPythonを管理するためにcondaを使用しており、condaを介してインストールされたPythonはmacOS、Windows x86、およびUbuntu 22.04で正常に動作します。次のコマンドがPython環境で動作することを確認してください:
```python import sqlite3
Check sqlite version
print(f"SQLite version: {sqlite3.sqlite_version}")
Test if enable_load_extension is supported
try: conn = sqlite3.connect(':memory:') conn.enable_load_extension(True) print("enable_load_extension is supported") except AttributeError: print("enable_load_extension is not supported") finally: conn.close() ```
これが正しく動作しない場合は、Python環境を管理するためにminicondaをインストールすることができます。あるいは、他の人が同じ問題に遭遇しているかどうかを確認するために、現在の問題リストをチェックしてください。
pip install memos
Windowsでは素の
pip installよりもuv tool install memosかpipx install memosを推奨します。詳細は Windows インストールガイド を参照してください。
pensieveの設定ファイルとsqliteデータベースを初期化します:
memos init
データは~/.memosディレクトリに保存されます。
memos enable
memos start
このコマンドは以下を行います:
ブラウザを開き、http://localhost:8839にアクセスします

Macでは、Pensieveは画面収録の権限が必要です。初回の memos start 実行時に、macOSが画面収録の許可を求めるプロンプトを表示するので、許可してください。
プロンプトを出さずに現在の許可状態を確認するには、以下を実行します:
memos doctor
権限が必要なPythonインタプリタのパスが表示され、システム設定 → プライバシーとセキュリティ → 画面とシステムオーディオ収録 のどのエントリを有効にすればよいかが分かります。
Pythonを更新する(brew upgrade python、pyenv で新バージョンに切替、conda 環境を作り直すなど)と、TCCはバイナリのパスで記録するため、以前付与した許可が無効になります。リセットして再認可してください:
tccutil reset ScreenCapture
memos stop && memos start
この煩雑さを避けるには pipx install memos か uv tool install memos でのインストールを推奨します。インタプリタのパスが固定されるため、memos のアップグレードで権限が失効しません。
Windowsでは memos をグローバルの site-packages に入れるのではなく、隔離されたツール venv にインストールするのが安定です:
# 方法 A: uv(単一バイナリ、高速)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv tool install memos
# 方法 B: pipx
pip install --user pipx
python -m pipx ensurepath
pipx install memos
どちらも memos 専用の venv に格納されるため、アップグレード時にもインタプリタのパスが変わりません。インストール後は memos doctor で環境を確認してください。
memos enable && memos start の前に、2点だけ準備しておくと体験が大きく改善します:
# 管理者 PowerShell で実行
# 長いパスを有効化 — torch や modelscope などの ML パッケージはパスが深い
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1
# ~/.memos を Defender の除外対象に追加(スクリーンショット書き込みのたびにスキャンされないように)
Add-MpPreference -ExclusionPath "$env:USERPROFILE\.memos"
%USERPROFILE% が OneDrive にリダイレクトされている場合、~/.memos 配下のスクリーンショット(1日 ~400MB)がクラウドに同期されてしまいます。~/.memos/config.yaml の base_dir を非同期のローカルパスに変更してください。
Windowsで推奨しない構成:
~/.memos や subprocess が正しく動作しない%USERPROFILE% が OneDrive 同期される構成(上記参照)PostgreSQLをPensieveで使用するには、PostgreSQLサポート付きのパッケージをインストールする必要があります:
pip install memos[postgresql]
バージョン v0.25.4 から、PensieveはバックエンドデータベースとしてPostgreSQLの完全なサポートを開始しました。SQLiteと比較して、PostgreSQLは大規模なデータ量でも優れた検索性能を維持できます。
スクリーンショットデータが大きい場合や、高速な検索応答速度が必要な場合は、バックエンドデータベースとしてPostgreSQLを使用することを強くお勧めします。
Pensieveはベクトル検索機能を使用するため、pgvector拡張機能を備えたPostgreSQLが必要です。公式のpgvectorイメージを使用することをお勧めします:
Linux/macOSの場合:
docker run -d \
--name pensieve-pgvector \
--restart always \
-p 5432:5432 \
-e POSTGRES_PASSWORD=mysecretpassword \
-v pensieve-pgdata:/var/lib/postgresql/data \
pgvector/pgvector:pg17
Windows PowerShellの場合:
docker run -d `
--name pensieve-pgvector `
--restart always `
-p 5432:5432 `
-e POSTGRES_PASSWORD=mysecretpassword `
-v pensieve-pgdata:/var/lib/postgresql/data `
pgvector/pgvector:pg17
Windowsコマンドプロンプトの場合:
docker run -d ^
--name pensieve-pgvector ^
--restart always ^
-p 5432:5432 ^
-e POSTGRES_PASSWORD=mysecretpassword ^
-v pensieve-pgdata:/var/lib/postgresql/data ^
pgvector/pgvector:pg17
このコマンドは次のことを行います:
pensieve-pgvectorという名前のコンテナを作成mysecretpasswordに設定pensieve-pgdataという名前のデータボリュームを作成注意:Windowsを使用している場合は、Docker Desktopがインストールされて実行されていることを確認してください。Docker DesktopはDockerのウェブサイトからダウンロードしてインストールできます。
~/.memos/config.yamlファイルのデータベース設定を変更します:
# 元のSQLite設定を変更:
database_path: database.db
# PostgreSQL設定に変更:
database_path: postgresql://postgres:mysecretpassword@localhost:5432/postgres
設定の説明:
postgres:mysecretpassword:データベースのユーザー名とパスワードlocalhost:5432:PostgreSQLサーバーのアドレスとポートpostgres:データベース名以前にSQLiteを使用していて、PostgreSQLに移行したい場合、Pensieveは専用の移行コマンドを提供します:
# Pensieveサービスを停止
memos stop
# 移行を実行
memos migrate \
--sqlite-url "sqlite:///absolute/path/to/your/database.db" \
--pg-url "postgresql://postgres:mysecretpassword@localhost:5432/postgres"
# 設定ファイルをPostgreSQLに指すように変更
# ~/.memos/config.yamlを編集してdatabase_pathを更新
# サービスを再起動
memos start
注意事項:
以下はMacとWindowsの移行コマンドです:
# Mac
memos migrate \
--sqlite-url "sqlite:///~/.memos/database.db" \
--pg-url "postgresql://postgres:mysecretpassword@localhost:5432/postgres"
# Windows PowerShell
memos migrate `
--sqlite-url "sqlite:///$env:USERPROFILE/.memos/database.db" `
--pg-url "postgresql://postgres:mysecretpassword@localhost:5432/postgres"
# Windowsコマンドライン
memos migrate ^
--sqlite-url "sqlite:///%USERPROFILE%/.memos/database.db" ^
--pg-url "postgresql://postgres:mysecretpassword@localhost:5432/postgres"
Pensieve v0.29.0 は、スクリーンショットに対するより深い洞察を提供する包括的なエンティティ詳細ビューを導入しました:
新しいエンティティビューにより、デジタルタイムラインの再構築と特定の瞬間の周辺の関連コンテンツの発見がより簡単になります。
Pensieve v0.33.0 では、agent skill をリポジトリに同梱しました。これは特定のエージェントに依存しないポータブルな手順書で、Skill に対応した任意の AI ツール(Claude Code、Codex、opencode など)に、HTTP API 経由でスクリーンショットアーカイブを検索する方法を教えます。
できること:
active_app フィルタ付きの /api/search 呼び出しに変換します。/entities/<id> へのリンクなので、どの引用もワンクリックで実際のスクリーンショットに戻れます。active_app / url の分布を確認してから絞り込むよう指示します。ユーザーが口にするトピックは、キャプチャされたコーパス内ではほとんどの場合そのままの文字列としては現れないためです。使い方は、エージェントを skill ファイルに向けるだけです。このリポジトリを作業ディレクトリとして開けば、skills/pensieve-search/SKILL.md から自動的に検出されます。他のプロジェクトで使うには、このファイルをエージェントが読み込む skill ディレクトリにコピー(またはシンボリックリンク)してください。たとえば ~/.claude/skills/pensieve-search/(Claude Code)、あるいは共有の .agents/ 規約に従うツール向けの ~/.agents/skills/pensieve-search/(Codex / opencode など)です。利用前にローカルで memos が起動していることを確認してください。skill はデフォルトで http://127.0.0.1:8839 を参照します。
Pensieve v0.27.0では、システム設定を簡単に管理できる新しい設定管理インターフェースが導入されました:
http://localhost:8839/config にアクセスしますこの設定インターフェースを通じて、OCRやVLMオプション、アイドル処理戦略、データベース設定など、設定ファイルを手動で編集することなく、さまざまな設定を簡単に調整できます。
Pensieveは埋め込みモデルを使用してセマンティック情報を抽出し、ベクトルインデックスを構築します。したがって、適切な埋め込みモデルを選択することが重要です。ユーザーの主な言語に応じて、異なる埋め込みモデルを選択する必要があります。
お好みのテキストエディタを使用して~/.memos/config.yamlファイルを開き、embedding設定を変更します:
embedding:
use_local: true
model: jinaai/jina-embeddings-v2-base-en # 使用するモデル名
num_dim: 768 # モデルの次元数
use_modelscope: false # ModelScopeのモデルを使用するかどうか
memos stop
memos start
埋め込みモデルを初めて使用する場合、Pensieveは自動的にモデルをダウンロードしてロードします。
使用中に埋め込みモデルを切り替えた場合、つまり以前にスクリーンショットをインデックス化していた場合、インデックスを再構築する必要があります:
memos reindex --force
--forceパラメータは、インデックステーブルを再構築し、以前にインデックス化されたスクリーンショットデータを削除することを示します。
デフォルトでは、PensieveはOCRプラグインのみを有効にしてスクリーンショットからテキストを抽出し、インデックスを構築します。しかし、この方法ではテキストが含まれていない画像の検索効果が大幅に制限されます。
より包括的なビジュアル検索機能を実現するためには、OpenAI APIに対応したマルチモーダル画像理解サービスが必要です。Ollamaはこの役割を完璧に果たします。
VLM機能を有効にする前に、以下の点に注意してください:
ハードウェア要件
推奨構成:少なくとも8GBのVRAMを持つNVIDIAグラフィックスカードまたはMシリーズチップを搭載したMac
CPUモードの使用は推奨されません。システムの重大な遅延を引き起こします
パフォーマンスと消費電力への影響
VLMを有効にすると、システムの消費電力が大幅に増加します
詳細なインストールと設定手順については、Ollama公式ドキュメントを参照してください。
以下のコマンドを使用して、マルチモーダルモデルminicpm-vをダウンロードして実行します:
ollama run minicpm-v "このサービスが何であるかを説明してください"
このコマンドはminicpm-vモデルをダウンロードして実行します。実行速度が遅すぎる場合は、この機能の使用をお勧めしません。
お好みのテキストエディタを使用して~/.memos/config.yamlファイルを開き、vlm設定を変更します:
vlm:
endpoint: http://localhost:11434 # Ollamaサービスのアドレス
modelname: minicpm-v # 使用するモデル名
force_jpeg: true # 互換性を確保するために画像をJPEG形式に変換
prompt: この画像の内容を説明してください。レイアウトや視覚要素を含めて # モデルに送信されるプロンプト
上記の設定を使用して、~/.memos/config.yamlファイルのvlm設定を上書きします。
また、~/.memos/plugins/vlm/config.yamlファイルのdefault_plugins設定も変更します:
default_plugins:
- builtin_ocr
- builtin_vlm
これにより、builtin_vlmプラグインがデフォルトのプラグインリストに追加されます。
memos stop
memos start
Pensieveサービスを再起動した後、しばらく待つと、PensieveのWebインターフェースで最新のスクリーンショットにVLMによって抽出されたデータが表示されます:

VLMの結果が表示されない場合は、以下を確認してください:
memos psコマンドを使用してPensieveプロセスが正常に実行されているか確認~/.memos/logs/memos.logにエラーメッセージがないか確認ollama ps)Pensieveは計算集約型のアプリケーションです。インデックス作成プロセスには、OCR、VLM、および埋め込みモデルの協力が必要です。ユーザーのコンピュータへの影響を最小限に抑えるために、Pensieveは各スクリーンショットの平均処理時間を計算し、それに応じてインデックスの頻度を調整します。したがって、デフォルトではすべてのスクリーンショットがすぐにインデックス化されるわけではありません。
すべてのスクリーンショットをインデックス化したい場合は、以下のコマンドを使用してフルインデックスを実行できます:
memos scan
このコマンドは記録されたすべてのスクリーンショットをスキャンしてインデックス化します。スクリーンショットの数とシステム構成に応じて、このプロセスには時間がかかる場合があり、システムリソースを多く消費する可能性があります。インデックスの構築は冪等であり、このコマンドを複数回実行しても既にインデックス化されたデータを再インデックス化することはありません。
Pensieveは、スクリーンショット生成の速度と個々の画像処理の速度に基づいて、画像処理の間隔を動的に調整します。NVIDIA GPUがない環境では、画像処理がスクリーンショット生成の速度に追いつくことが難しい場合があります。これに対処するために、Pensieveはサンプリングベースで画像を処理します。
システム負荷を防ぐために、Pensieveのデフォルトのサンプリング戦略は意図的に保守的です。しかし、この保守的なアプローチは、より高い計算能力を持つデバイスのパフォーマンスを制限する可能性があります。より柔軟性を提供するために、~/.memos/config.yamlに追加の制御オプションが導入されており、ユーザーはシステムをより保守的またはより積極的な処理戦略に設定することができます。
```yaml watch: # number of recent events to consider when calculating processing rates rate_window_size: 10 # sparsity factor for file processing # a higher value means less frequent processing #
$ claude mcp add pensieve \
-- python -m otcore.mcp_server <graph>