Grok Build のセッション間メモリ:設定と制限事項
Markdownメモリを有効にする方法、メモの保存場所、/flush、/remember、/dream、/memory の動作を解説します。設定の優先順位、確認方法、エントリの削除方法も説明します。
記事の全文を読む
xAI のターミナルエージェントである Grok Build には、セッションをまたいで使えるメモリ機能があります。プロジェクトの規約、決定事項、うまくいったデバッグ手順を記憶し、新しいセッションのコンテキストに自動で追加するため、改めて伝える必要がありません。この機能はデフォルトでは無効で、実験的な機能ですが、設定を1つ変えるだけで有効にできます。
この説明は、2026年9月20日時点の xai-org/grok-build リポジトリの公式ガイドに基づいています。元記事の著者は製品を実際に操作していません。仕組みは個人的なテストではなく、ドキュメントに基づいて説明されています。
Ailoot の活用に関する実用情報は、ドキュメントでご覧いただけます。
Grok Build のメモリで何ができる?
重要なポイント
メモリがない場合、新しい Grok Build セッションには、リポジトリの指示ファイルに記録されているものを除き、以前のセッションの情報は引き継がれません。説明した規約も、決めたことも引き継がれません。メモリを有効にすると、エージェントは保存済みのメモを検索し、関連するものを新しいセッションのコンテキストに自動で追加します。メモは通常の Markdown ファイルとして保存されるため、読んだり編集したりできます。
たとえば、あるセッションで、プロジェクトではインデントにスペース2つを使うこと、データベースのマイグレーションは別のコマンドで実行すること、特定のモジュールが決済を処理することをエージェントに説明したとします。新しいセッションでは、この情報をもう一度伝える必要があります。
メモリを有効にすると、Grok Build は次のことができます。
- 以前に説明したプロジェクトの規約を思い出す
- すでに成功したデバッグ手順を利用する
- アーキテクチャ上の決定事項を後のセッションに引き継ぐ
- すでに回答したことを再度尋ねない
この機能は実験的で、デフォルトでは無効です。有効にするまでは、エージェントの動作は変わりません。
メモリを有効にする方法
重要なポイント
1回の実行だけ有効にするには、環境変数 GROK_MEMORY=1 を設定します。有効な状態を維持するには、~/.grok/config.toml に [memory] セクションと enabled = true を追加します。有効化後、作業開始時に保存済みのメモを読み込ませるには、/new で新しいセッションを開始します。
1回だけ有効にする場合:
GROK_MEMORY=1 grok
この変数は今回の実行にだけ適用されます。export GROK_MEMORY=1 コマンドを実行すると、現在のシェルで設定が維持され、そのシェルから実行する以降のすべての grok に対して、ターミナルセッションが終了するか export GROK_MEMORY=0 を実行するまでメモリが有効になります。
設定ファイルで常に有効にする場合: ~/.grok/config.toml に次の内容を追加します。
[memory]
enabled = true
再起動せずにセッション内で切り替える場合: /memory を開き、t を押します。
この切り替えは現在のセッションだけに適用され、設定ファイルには書き込まれません。メモリの有効化と無効化に使えます。無効にするとメモリツールへのアクセスはなくなりますが、ディスク上のファイルは削除されません。再度有効にすると、保存領域にアクセスできるようになります。ただし、GROK_MEMORY=0 によってプロセス全体で強制的に無効化されている場合は、この切り替えで上書きできません。セッション全体を通じて /memory は利用できないままです。
複数の場所で設定されている場合、優先順位は次のとおりです。
GROK_MEMORY=0はプロセス全体でメモリを強制的に無効にし、最も優先されます。- 設定ファイルで
enabled = falseが明示されている場合、管理対象のリモート設定で有効になっていてもメモリは無効になります。 GROK_MEMORY=1、設定ファイルのenabled = true、または管理対象のリモート設定でメモリを有効にできます。- 何も指定されていない場合、メモリは無効です。
メモはセッションの最初のターンで追加されます。作業の途中でメモリを有効にし、保存済みのプロジェクト情報をエージェントに使わせたい場合は、/new を実行します。grok inspect の出力で、メモリが有効かどうかを確認できます。
Grok Build は何を記録し、どこに保存する?
重要なポイント
メモは ~/.grok/memory/ に Markdown ファイルとして保存されます。すべてのプロジェクトに共通するグローバルな MEMORY.md、プロジェクトごとの MEMORY.md、セッションログがあります。セッション終了時の自動要約はモデル呼び出しなしで書き込まれ、詳細なメモは /flush と /remember で作成され、/dream は異なるエントリをトピックごとにまとめます。
~/.grok/memory/ ディレクトリの構成:
| 場所 | 対象範囲 | 内容 |
|---|---|---|
~/.grok/memory/MEMORY.md | グローバル | すべてのプロジェクトに関する事実や設定 |
~/.grok/memory/ + ハッシュ付きのプロジェクトディレクトリ + /MEMORY.md | プロジェクト | 特定のリポジトリに関する規約やコンテキスト |
~/.grok/memory/ + ハッシュ付きのプロジェクトディレクトリ + /sessions/ | セッション | 個々のセッションの要約とログ |
プロジェクトディレクトリ名には、リポジトリ識別子の短いハッシュが追加されます。識別には organization/repository 形式の origin リモートを使い、Git リポジトリがない場合はディレクトリのパスを使います。そのため、同じリポジトリのクローンとワークツリー(Git ブランチの独立した作業コピー)は、同じプロジェクトメモリを共有します。一方のコピーでエージェントが記憶した内容は、もう一方でも利用できます。
エントリは次の4つの方法で作成されます。
- セッション終了時の自動要約。 セッションが終了すると、Grok Build は短いシステム要約を日次ログに保存します。内容はメッセージ数、最初の実質的なやり取り(最大5件)、日時です。この要約はモデル呼び出しや遅延なしで、メタデータから作られます。短すぎるセッションは対象外です。実質的なやり取りが3件未満、またはユーザーのテキストが50バイト未満の場合、エントリは作成されません。この要約には、使用したツール、ファイルパス、コマンドは含まれません。
session.save_on_end = false設定で自動要約を無効にできます。 /flush— 要求に応じて詳細なメモを作成。 このコマンドを使うと、モデルが現在のセッションから重要なポイント(決定事項、パターン、デバッグ手順、API で判明したこと)を要約します。要約は日付付きのログに書き込まれ、後のセッションで使えるようにインデックス化されます。ドキュメントでは、コンテキストが圧縮される前、デバッグに成功したセッションの終了時、重要なパターンを見つけた後に/flushを実行することを推奨しています。/remember— 明示的に何かを記憶するよう依頼。/remember 送信後に PR リンクを必ず開くと入力するか、エージェントに「覚えておいて……」と伝えます。エントリを書き込む前に確認パネルが開きます。確認後にだけメモが保存され、フィードにMemory saved to ~/.grok/memory/MEMORY.mdと表示されます。プロジェクト情報はプロジェクトのMEMORY.mdに、すべてのプロジェクトに共通する情報はグローバルのファイルに保存されます。/dream— 情報を整理・統合。 このコマンドは、散在するログやメモをトピックごとにまとめ、重複を取り除いて検索精度を高めます。/flushと同様、統合にはモデルが使われます。蓄積されたエントリを読み取り、トピック別に書き直すため、定期的に/memoryで結果を確認してください。自動モードもあります。デフォルトでは、Grok Build は起動時と1時間に1回、条件を確認します。24時間以上経過し、5つ以上のセッションが蓄積されていると、統合を開始します。しきい値は設定ファイルの[memory.dream]セクションで変更できます。
メモは SQLite インデックスを使って検索されます。デフォルトでは全文検索の FTS5 を使い、埋め込みモデルが設定されていれば、セマンティックなベクトル検索も追加されます。
新しいセッションにメモリが読み込まれる仕組み
重要なポイント
セッションの最初のターンで、Grok Build はプロジェクトに関連するエントリをメモリから検索し、自動的にコンテキストへ追加します。改めて伝える必要はありません。自動コンテキスト圧縮の後にも再び検索されます。古いセッションエントリには、鮮度を確認するためのマークが付きます。
最初の読み込みには min_score = 0.9 の選択しきい値が使われます。この値は [memory.initial_injection] セクションで変更できます。自動コンテキスト圧縮後、エージェントはメモリを再検索し、古いやり取りとともにコンテキストから削除された可能性のある情報を復元します。
エージェントに「何を覚えていますか?」と直接尋ねることもできます。回答は、グローバルな設定、プロジェクトの知識、セッション履歴という出典ごとにまとめられます。
セッションエントリには鮮度を示すマーカーが付きます。セッションログのエントリが古いほど、「まだ最新の情報か確認してから利用してください。」というマークが強く付きます。グローバルとプロジェクトの MEMORY.md ファイルにはこのようなマーカーは付きません。長期間使うことを想定しているため、内容の正確さは自分で確認する必要があります。
メモを表示、編集、削除する方法
重要なポイント
/memory コマンドを実行すると、プレビュー付きでメモリファイルの一覧が開きます。任意のテキストエディターでファイルを編集でき、変更内容は次回の検索で反映されます。「……を忘れて」という依頼が確実に実行される保証はありません。特定のエントリを確実に削除するには、ファイルを編集してください。
セッション内で /memory コマンドを実行すると、グローバル、プロジェクト、セッション(新しい順)の範囲ごとに整理された、すべてのメモリファイルを含むウィンドウが開きます。左側にファイル一覧、右側に選択したファイルの読み取り専用プレビューが表示されます。
一覧画面で使えるキー:
| キー | 操作 |
|---|---|
↑/↓ または j/k | 一覧内を移動 |
/ | 一覧を絞り込む |
y | 選択したファイルのパスをコピー |
x | 選択したメモを削除(もう一度押して確定) |
t | メモリを有効化または無効化 |
Esc | ウィンドウを閉じる |
このウィンドウから個別のメモやセッションファイルを削除できますが、自動生成された MEMORY.md のインデックス(グローバルおよびプロジェクト)は削除できません。
もう1つの方法は、ファイルを直接編集することです。ファイルは ~/.grok/memory/ にあり、任意のエディターで開けます。このディレクトリ内の変更は追跡されます。作成・変更されたファイルは再インデックス化され、削除されたファイルは次回の検索時にインデックスから削除されます。
「snake_case のことは忘れて」という依頼が確実に実行される保証はありません。モデルは該当するエントリを検索して削除しますが、一部を見落とす場合があります。確実に削除するには、ファイルを開き(/memory で y を押すとパスを簡単にコピーできます)、該当するエントリを手動で削除してください。コマンドラインからメモリをすべて消去するには、プロジェクトメモリには grok memory clear、グローバルメモリには grok memory clear --global、両方には grok memory clear --all を使います。
メモリとリポジトリの指示ファイルの違い
重要なポイント
CLAUDE.md や AGENTS.md などの指示ファイルをリポジトリに置くと、Git を通じてチームで共有されます。Grok Build のエージェントが管理するメモリは ~/.grok/memory/ に保存され、リポジトリの外に置かれます。個人用で、Git を通じて共有されません。
リポジトリの指示はプロジェクトに取り組む全員と共有され、コードや変更履歴から確認できます。メモリはセッションを重ねるにつれて増え、自分のマシンに保存され、単独で公開されることはありません。
メモリは指示ファイルの代わりにはなりません。チーム全体や、利用するすべてのエージェントに必要な一般的なプロジェクトルールは、リポジトリに置くのが適切です。Claude Code、Codex、Cursor で共通の指示ファイルを使う方法は、AGENTS.md と CLAUDE.md を併用するで別途解説しています。メモリには、個人の設定、すでに試したこと、決定に至った経緯などの個人的なコンテキストを残せます。
Claude でも同様の区別があります。Claude のメモリと CLAUDE.md の記事で、メモリと CLAUDE.md の違いを説明しています。ツール自体を比較するには、Grok Build と Claude Codeをご覧ください。
制限事項とメモリの動作確認
重要なポイント
この機能は実験的で、コマンドや設定は変更されることがあります。有効化後、最初のターンでメモを読み込ませるには、/new で新しいセッションを開始してください。モデルが作成するエントリもあるため、メモを定期的に確認し、秘密情報を記憶しないよう指示してください。
次の制限事項に注意してください。
- 実験的な機能です。 コマンド、しきい値、動作は今後のバージョンで変更される可能性があります。想定どおりに動かない場合は、リポジトリのメモリガイドを確認してください。
- 新しいセッションでの初回読み込み。 メモリを有効にした後、保存済みのメモが最初のターンで追加されるよう、
/newで作業を開始してください。 - 何を重要とみなすかはモデルが判断します。 モデルが
/flushの要約を作成し、メモに含める内容を選びます。1、2週間ごとに/memoryを開いて、蓄積した内容を確認し、不要なものは削除してください。 - 秘密情報を記憶するよう依頼しないでください。 キー、トークン、パスワードは長期間保存するメモには適しません。
~/.grok/memory/のファイルは平文で保存されます。機密情報が記録された場合は、ファイルを編集して削除してください。 - プロジェクトメモリはリポジトリのコピー間で共有されます。 あるクローンで記憶した内容が別のクローンでは古くなっている場合、共有ディレクトリを考慮して整理してください。
メモリが動作しない場合:
grok inspectの出力を確認し、メモリが有効になっていることを確かめます。GROK_MEMORY=0または設定ファイルによって無効にされていないか確認します。- 診断のため
RUST_LOG=debug GROK_LOG_FILE=/tmp/grok.log grokを実行し、/tmp/grok.logでメモリに関する行を確認します。
簡単なまとめ
Grok Build のメモリは、GROK_MEMORY=1 または ~/.grok/config.toml の [memory] enabled = true で有効にできます。有効化後、初回にメモを読み込ませるには、/new で新しいセッションを開始します。エージェントは ~/.grok/memory/ にメモを書き込みます。セッション要約はモデル呼び出しなしで作成され、詳細な要約は /flush、確認後の明示的なエントリは /remember、整理したトピックは /dream で作成されます。/memory とファイルの直接編集で、メモの表示や整理ができます。この機能は実験的なため、しきい値やコマンドを公式ガイドで確認し、メモを定期的に見直してください。
出典
- Grok Build、公式「Cross-Session Memory」ガイド(ユーザーガイド、第13章):https://github.com/xai-org/grok-build/blob/main/crates/codegen/xai-grok-pager/docs/user-guide/13-memory.md
- Grok Build、GitHub 上の xAI リポジトリ:https://github.com/xai-org/grok-build
体系的に取り組むには、AI クローン + セカンドブレイン + コンテキストエンジニアリングの組み合わせが役立ちます。
詳細を見る
Grok Build のセッション間メモリ:設定と制限事項:よくある質問
メモリを有効にしたのに、保存したメモが出てこない場合は?
保存済みメモは新しいセッションの最初のターンに追加されます。有効化後に新しいセッションを開き、grok inspectで状態を確認してください。GROK_MEMORY=0で起動したプロセスでは、セッションの切り替え操作だけで有効化できません。
メモリを無効にするとファイルも消えますか?
いいえ。メモリツールは使えなくなりますが、Markdownのメモはディスクに残ります。項目を削除したい場合は、保存済みメモを別途確認・編集してください。