Auto Memory
概要
過去の Gemini CLI セッションをバックグラウンドで掘り起こし、恒久的なメモリの更新案と再利用可能な Agent Skills を提案する experimental な機能(活発に開発中)。候補はすべてレビューを経てから将来のセッションで使えるようになる。
仕様
位置づけ
- セッションのトランスクリプトを走査し、セッション横断で繰り返される恒久的な事実、好み、ワークフローの制約、手順的パターンを探す
- メモリ更新は unified diff の
.patchファイル、再利用可能な手順はSKILL.mdとして下書きされる - すべての候補はプロジェクトローカルの inbox に保持され、承認または破棄するまで適用されない
- 明示的なメモリファイル編集を補完する位置づけ。エージェントは引き続き Markdown のメモリファイルを直接編集して明示的な指示を永続化できる
前提
- Gemini CLI がインストール・認証済み
- 10 件以上のユーザーメッセージを含む、アイドルなプロジェクトセッションが最低 1 つ。アクティブなセッション、些末なセッション、sub-agent のセッションは無視される
有効化
- 既定で off
~/.gemini/settings.json(プロジェクト単位にしたい場合はそのプロジェクトの.gemini/settings.json)にexperimental.autoMemory: trueを追加する- 抽出サービスはセッション起動時に開始するため、このフラグには Gemini CLI の再起動が必要
動作
セッション起動時のバックグラウンドタスクとして走る。UI をブロックせず、対話ターンを消費せず、ツールのプロンプトも出さない。
- Eligibility scan:
~/.gemini/tmp/<project>/chats/の最近のセッションをインデックスする。対象になるのは 3 時間以上アイドルで、ユーザーメッセージが 10 件以上あるセッションのみ - Lock acquisition: プロジェクトのメモリディレクトリのロックファイルで複数の CLI インスタンス間を調整し、抽出が同時に 1 つだけ走るようにする。state ファイルが処理済みセッションのバージョンを記録し、短時間に連続で CLI を起動しても履歴を繰り返し走査しないようスロットリングする
- Candidate extraction: バックグラウンドの抽出エージェントがセッションインデックスを見て、恒久的なメモリや繰り返しの手順を含みそうなセッションを読み、候補を下書きする。根拠が強くない限り成果物を作らないのが既定のため、多くの実行では inbox に何も出ない
- Safety boundaries: 候補はレビュー用 inbox に書かれる。アクティブなメモリファイル、設定、資格情報、プロジェクトの
GEMINI.mdを直接編集することはできない - Patch validation: skill の更新パッチは提示前にパースされ dry-run される。メモリパッチはパースされ、対象が allowlist で確認され、inbox から承認したときにのみアトミックに適用される
- Notification: 新しい候補ができると、待ち件数を伝えるインラインメッセージが出る
レビュー(/memory inbox)
ダイアログは保留中の項目を new skills / skill updates / memory updates に分けて表示する。
-
SKILL.mdの全文を読んでから判断する -
skill を user(
~/.gemini/skills/)または workspace(.gemini/skills/)へ promote する -
不要な skill を discard する
-
既存 skill に対する
.patch提案を apply または拒否する -
メモリの差分をアクティブなファイルに触れる前に review する
-
private / global のメモリパッチを apply または dismiss する。private パッチはプロジェクトのメモリディレクトリ、global パッチは自分の
~/.gemini/GEMINI.mdのみを対象とする -
promote した skill は次のセッションから発見可能になり、標準の skill discovery の優先順位に従う
-
適用したメモリパッチは元のメモリファイルを更新し、現在のセッションのメモリを再読み込みする
無効化
experimental.autoMemoryをfalseに戻して再起動する- 次のセッション開始時にバックグラウンドサービスが即座に止まる
- 既存の inbox 項目はディスクに残る。
/memory inboxで処理するか、プロジェクトのメモリディレクトリを手動で消す
データとプライバシー
- ローカルに既に存在するセッションファイルのみを読む
- 抽出時にモデル呼び出しを使って選ばれたローカルのトランスクリプト内容を解析する。候補が自動適用されることはないが、トランスクリプトの抜粋が設定済みモデルへ送られうる
- 抽出エージェントは、遭遇した秘密・トークン・資格情報を redact し、大きなツール出力を逐語コピーしないよう指示されている
- 下書きの skill とメモリパッチは、promote / apply / dismiss / discard するまでプロジェクトのメモリディレクトリに置かれ、どのセッションにも自動的には読み込まれない
設定
{
"experimental": {
"autoMemory": true
}
}
制約・注意点
- 抽出エージェントは preview の Gemini Flash モデルで動く。 抽出品質は、恒久的なパターンと一度きりの出来事を見分けるモデルの能力に依存する
- 現在のセッションからは抽出しない。 3 時間以上アイドルなセッションのみが対象
- プロジェクトの
GEMINI.mdにある project / workspace 共有の指示は自動抽出できない。 提案できるのは private なプロジェクトメモリ、global な個人メモリ、skill - inbox の項目はプロジェクトごとに保存される。 あるワークスペースで抽出された skill は、user スコープの skills ディレクトリへ promote するまで他のワークスペースからは見えない
関連
facts/gemini-cli/gemini-md.mdfacts/gemini-cli/skills.mdfacts/gemini-cli/configuration.mdfacts/gemini-cli/commands.md