問題分析:Claude Code 為什麼不知道你離開了多久
使用 Claude Code 開發專案時,你可能遇到過這樣的情況:才剛發送一條訊息,馬上又補充幾句話,Claude 能正確理解這是連續對話。但如果你離開了三小時後回來,繼續之前的對話,Claude 卻無法察覺時間已經過去了。
這個問題的根本原因在於:Claude Code 本身沒有保留「時間上下文」的功能。它不知道你離開了多久,也就無法判斷你現在的訊息是「快速回覆」還是「長時間中斷後的繼續」。這會導致 AI 在理解你的需求時失去重要的情境資訊,特別是在處理需要時間感知的任務時(如排程問題、進度追蹤等)。
解決方案:10 行 Bash Hook 注入時間戳記
透過在每次發送 prompt 前注入時間戳記,我們可以讓 Claude 主動知道「距離上次對話過了多少時間」。國外開發者提出了一個優雅的解決方案:使用 10 行左右的 Bash 指令碼作為 CLAUDE.md 的鉤子(hook),在 prompt 中自動加入目前時間與上次對話時間的比較資訊。
這個方法的核心概念是:紀錄上一次對話的時間點,在下一次對話時計算時間差,並將這個資訊以人類可讀的方式注入到 prompt 開頭,讓 Claude 在處理你的請求時就能知道時間背景。
實作步驟:如何安裝設定
以下是具體的安裝流程:
- 步驟一:建立時間記錄檔 - 在你的專案目錄或家目錄下建立一個隱藏檔案(如 `.claude_last_seen`)用來儲存上次對話時間。
- 步驟二:撰寫 Bash Hook 指令碼 - 編寫一個簡單的腳本,讀取上次的時間記錄,計算與目前時間的差異,並產生帶有時間資訊的文字。
- 步驟三:整合到 CLAUDE.md - 將這段指令碼的輸出,作為 CLAUDE.md 檔案的一部分,讓每次對話都能看到時間上下文。
- <步驟四:設定自動執行 - 確保每次啟動 Claude Code 對話時,這個腳本都會被執行,自動更新時間記錄。
這個設定只需要花費約 5 分鐘就能完成,但能為你的 Claude Code 體驗帶來顯著改善。
運作原理:時間戳記如何改善對話體驗
當這個 Bash Hook 正常運作後,你會在每次對話中看到類似這樣的訊息:「距離上次對話過了 3 小時 22 分鐘」或「距離上次對話過了 2 天」。
有了這個時間上下文,Claude 能夠:
- 理解任務連續性 - 知道某些任務可能已經過了一段時間,需要重新確認進度
- 調整回覆策略 - 面對長時間離開後的回來,會更主動地詢問目前狀態
- 時間感知推理 - 在處理排程、截止日期等問題時,能更準確地計算時間
例如,如果你說「繼續之前的工作」,Claude 現在會知道「之前」可能是幾小時甚至幾天前,會主動確認專案目前的狀態,而不是假設一切都還停在原點。
進階應用與注意事項
如果你想進一步客製化這個功能,可以考慮以下方向:
- 自訂時間格式 - 根據你的使用習慣,調整顯示的時間精細度(如只顯示小時,或包含分鐘)
- 情境感知提醒 - 設定超過一定時間(如 24 小時)時,自動提示需要回顧專案狀態
- 多專案支援 - 如果你同時維護多個專案,可以為每個專案設定獨立的時間記錄
需要注意的是,這個解決方案目前主要適用於本地端執行的 Claude Code(claude claude command),而非網頁版 Claude API。如果你使用的是雲端版本,可能需要透過系統提示詞(System Prompt)的方式來達成類似效果。