Grok Build 跨工作階段記憶:設定與限制
Markdown說明如何啟用記憶功能、筆記的儲存位置,以及 /flush、/remember、/dream 和 /memory 的運作方式。也涵蓋設定優先順序、確認狀態和刪除項目的方法。
閱讀全文
Grok Build 是 xAI 的終端機代理程式,具備跨工作階段記憶功能:它可以記住專案慣例、決策和成功的除錯步驟,並在新工作階段中自動將相關內容加入上下文,不必再次提醒。此功能預設為關閉,且仍屬實驗性功能;只要設定一個選項即可啟用。
本文說明根據截至 2026 年 9 月 20 日 xai-org/grok-build 儲存庫中的官方指南撰寫。原文作者沒有實際操作產品;文中機制是依據文件說明,而非個人測試結果。
Grok Build 的記憶功能有什麼用?
重要重點
沒有記憶功能時,新的 Grok Build 工作階段不會取得先前工作階段的任何資訊:無論是你說明過的慣例,還是你做過的決策,都不會帶入,除非它們已記錄在儲存庫的指示檔案中。啟用記憶功能後,代理程式會搜尋已儲存的筆記,並自動將相關筆記加入新工作階段的上下文。筆記以一般 Markdown 檔案儲存,你可以閱讀和編輯。
例如,你在某個工作階段告訴代理程式,專案使用兩個空格縮排、資料庫遷移要用獨立命令執行,而且某個特定模組負責處理付款。到了新工作階段,你就得再次提供這些資訊。
啟用記憶功能後,Grok Build 可以:
- 回想你先前說明過的專案慣例;
- 使用已經奏效的除錯步驟;
- 將架構決策帶到後續工作階段;
- 不再詢問已經回答過的問題。
此功能仍屬實驗性功能,且預設為關閉。啟用前,代理程式的行為不會改變。
如何啟用記憶功能?
重要重點
若只要在單次執行時啟用,請設定環境變數 GROK_MEMORY=1。若要持續啟用,請在 ~/.grok/config.toml 加入 [memory] 區段,並設定 enabled = true。啟用後,若要在開始工作時載入已儲存的筆記,請以 /new 開啟新的工作階段。
僅啟用一次:
GROK_MEMORY=1 grok
這個變數只適用於此次執行。執行 export GROK_MEMORY=1 命令後,設定會保留在目前的 shell 中,並讓從該 shell 執行的後續 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 會記錄哪些內容?儲存在哪裡?
重要重點
筆記以 Markdown 檔案儲存在 ~/.grok/memory/:供所有專案使用的全域 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 分支的獨立工作副本)會共用同一份專案記憶:代理程式在一個副本中記住的內容,在另一個副本中也能使用。
項目會透過以下四種方式建立:
- 工作階段結束時自動摘要。 工作階段結束時,Grok Build 會將簡短的服務摘要儲存到每日記錄:包括訊息數量、最多五段最初的實質交流內容,以及日期和時間。摘要由中繼資料產生,不會呼叫模型,也不會造成延遲。太短的工作階段會略過:如果實質交流少於三段,或你的文字少於 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 會在啟動時和每小時檢查條件;當至少經過 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 索引(全域和專案索引)。
另一種方法是直接編輯檔案。檔案位於 ~/.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摘要由模型建立,筆記內容也由模型選擇。每隔一、兩週開啟/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,xAI 在 GitHub 上的儲存庫:https://github.com/xai-org/grok-build
若要有系統地工作,AI 分身 + 第二大腦 + 上下文工程這種組合很有幫助。
更多詳情
常見問題:Grok Build 跨工作階段記憶:設定與限制
開啟記憶後,保存筆記為什麼沒出現?
筆記在新工作階段第一回合加入。啟用後開新工作階段,用 grok inspect 查狀態;以 GROK_MEMORY=0 啟動的程序,不能透過工作階段開關啟用記憶。
關閉記憶會刪掉檔案嗎?
不會。停用只移除記憶工具存取,Markdown 筆記仍留在磁碟。需要刪除項目時,應另外查看或編輯儲存筆記。