Coolkid mascot CoolkidLab Build in Public. Level up together.

Workflow · 開發流程系統

閱讀

讓 Claude Code 跨對話不失憶:斷點系統 + 兩個 hook + 全專案儀表板

開發流程系統

Claude Code 最讓我煩的不是不夠聰明,是健忘。每開一個新對話它就是一張白紙 — 上一輪做到哪、為什麼這樣決定、有沒有留半成品,全部要我重講一遍。這篇是我用一個晚上把它修掉的完整紀錄,以及一段你可以直接複製給 AI agent、讓它幫你把同一套建起來的 prompt。

先講重點

每開一個新 Claude Code 對話它就忘光上次做到哪。我用 .project/ 斷點檔加上 SessionStart hook 強制載入加上 UserPromptSubmit 注入即時時間加上全專案儀表板,把「跨對話失憶」修掉。整段可複製給 AI agent 自動建好。已跨 100 加上對話沒再「現在做到哪?」浪費 token 重述。

想解決的痛點:跨對話失憶 + 多專案狀態散落

兩個問題其實是同一個病。第一,Claude Code 每個對話獨立、沒有跨對話記憶,我得每次開場手動交代「上次做到 Phase 2、驗證邏輯還沒寫、token 策略待確認」,講久了會漏。第二,我手上五個專案進度不一,但「現在哪個最該處理」這個問題沒有任何地方能一眼回答。我要的不是更聰明的 AI,是一層「狀態記在硬碟上、開場自動讀回來」的基礎建設。

這個 workflow 在做什麼:四層疊起來,核心是「讀強制、寫柔性」

整套分四層:狀態層(每個專案一個 .project/ 資料夾存斷點)、載入層(SessionStart hook 開場自動把斷點塞進 context)、時間層(UserPromptSubmit hook 每則訊息注入當下時間)、視覺層(一個掃描全部專案的儀表板)。最關鍵的設計判斷是「讀強制、寫柔性」:載入斷點走 hook 強制執行,因為這零成本又絕對不能漏;寫回斷點只用柔性提醒,因為強制擋著不讓我隨手問一句會很煩。讀的那端用機器保證,寫的那端留給人自由。斷點本身長這樣:

# current.yaml — 精簡斷點,每次 session 開場必載,保持在 30 行以內
phase: api-layer
last_updated: 2026-05-30
safe_to_continue: true      # 任務跑到一半時設 false → 半成品保護
needs_human: false          # 卡在等我決策時設 true
next_task: 實作驗證邏輯
next_input: 需確認 token refresh 策略
open_issues:
  - rate limiting 尚未實作

狀態層怎麼切 + 半成品保護 + 我撞最久的三個坑

每個專案根目錄放 .project/:current.yaml 是精簡斷點(控制在 30 行內,每次開場都要載入,太長會吃 context)、current.full.md 放長脈絡按需才讀、decisions.yaml 是只增不改的決策日誌(決策會演變,用新條目標 supersedes 舊的、永不覆寫,才能回溯整條演化線)。還有一條我想清楚才動工的紅線是半成品保護:current.yaml 有一個 safe_to_continue 旗標,任務開始設 false、乾淨結束才設回 true,SessionStart 載入看到 false 會先警告我上次有未完成的工作、問要繼續還是回滾,而不是悶頭往下做。實作時我撞最久的三個坑:盤點腳本依賴 jq 但我 Windows 沒裝(沒去裝 jq,改用 Python 重寫等效版,依賴愈少愈好移植)、有 11 個 skill 的描述用了多行 YAML 折疊語法解析器只抓到折疊符號(補上「往下讀到下一個 key 為止」的邏輯)、時間 hook 在 Windows cp950 撞 UTF-8 讓時區名變亂碼(乾脆純 ASCII 輸出、把本地化時區名拿掉只留 UTC offset)。

# Windows cp950 撞 UTF-8 → 時區名亂碼。解法:純 ASCII 輸出
import datetime
now = datetime.datetime.now().astimezone()
offset = now.strftime("%z")                     # 例如 +0800
weekday = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"][now.weekday()]
# 不印本地化時區名(會被 cp950 轉亂碼),只留 UTC offset
print(f"[current time] {now:%Y-%m-%d %H:%M:%S} {weekday} (UTC{offset[:3]}:{offset[3:]})")

整段複製給 AI agent,你就有這個 workflow

這篇不只是紀錄。把下面整段複製貼給你的 AI agent(Claude Code 最直接),它就能照著幫你把同一套斷點系統建在你的專案上,你不用自己重走一晚。

我要你幫我在這個專案建一套「跨對話斷點系統」,讓你(Claude Code)每次開新對話都能接續上次進度,不要每次失憶。請依這個規格,先看過我的專案結構再一層一層建:
1. 狀態層:在專案根目錄建一個 .project/ 資料夾,放三個檔。current.yaml 是精簡斷點、控制在 30 行內,欄位包含 phase、last_updated、safe_to_continue、needs_human、next_task、next_input、open_issues。current.full.md 放長脈絡(架構、踩過的雷、外部依賴),按需才讀。decisions.yaml 是只增不改的決策日誌,每條有 id、date、decision、rationale、status,決策演變時用新條目標 supersedes 舊的、永遠不要覆寫舊條目。
2. 載入層:設一個 SessionStart hook,每次開對話自動把 current.yaml 印出來注入 context;如果 safe_to_continue 是 false,就先警告我上次有未完成的工作、問我要繼續還是回滾,不要悶頭往下做;沒有 .project/ 的專案要安靜跳過、不要報錯。
3. 時間層:設一個 UserPromptSubmit hook,每則訊息前注入一行當下精確時間(年月日時分秒加星期)。請用純 ASCII 輸出、只留 UTC 偏移(像 UTC+08:00),不要印本地化的時區名稱,否則在 Windows 上會被 cp950 編碼轉成亂碼。
4. 設計原則請守住「讀強制、寫柔性」:載入斷點走 hook 強制執行(零成本又不能漏),寫回斷點只用柔性提醒(不要用 hook 強制擋我、會很煩)。
請避開我已知的坑:不要依賴 jq 之類我可能沒裝的工具,能用內建或 Python 就好;解析多行 YAML 折疊語法要讀到下一個 key 為止。請先確認我的作業系統跟專案結構,再一步步建,每建一層就停下來跟我確認再繼續。

把上面整段複製貼給 agent 就好。它會先看你的專案結構、問你用什麼作業系統,再一層一層幫你建,每層跟你確認。你要做的只是回答 + 在它卡住時補環境資訊。

完整 SOP 清單

上面已經把四層架構(斷點狀態 / SessionStart 載入 / UserPromptSubmit 時間 / pm 儀表板)跟「讀強制寫柔性」「append-only 決策」「半成品保護」三個設計判斷都寫出來了。完整元件對照如下:

看完這篇之前先確認:

適合你
  • Claude Code 重度用戶,跨對話常忘進度
  • OK 自己 maintain .project/ 斷點檔
  • 想學 Claude Code hooks (SessionStart / UserPromptSubmit) 的實戰用法
不適合
  • Claude Code 還在嘗試階段不每天用
  • 完全交給 AI 不審斷點檔內容 (會累積垃圾)
  • 用 Cursor / 其他 AI tool 不用 Claude Code (機制不通用)
最常踩
  • 斷點檔寫太細變成「日記」 — 寫進度 / 決策即可,不要寫每個指令
  • SessionStart hook 沒設好導致每次開新對話載入慢 — keep hook output 少於 200 行
  • UserPromptSubmit 注入太多 context 把對話塞滿 — 只注入時間 / 當前 task 即可

常見問題

Claude Code hooks 是什麼?

Hooks 是 Claude Code 在特定事件觸發時自動執行的 shell command。SessionStart hook 在每次開新對話時跑,可以注入「上次做到哪」的 context;UserPromptSubmit hook 在每次 user 送訊息前跑,可以注入即時資訊 (時間 / git status)。設定在 ~/.claude/settings.json。

.project/ 斷點檔該寫什麼?

我寫:current.yaml (現在做什麼 phase / 上次做到哪 / 下一步)、decisions.md (重大決策記錄,append-only)、roadmap.md (整體路線圖)。原則是「下一個 session 的我看了能 1 分鐘進入狀態」,不是「完整日誌」。

為什麼不用 Claude Projects 內建記憶?

Claude Projects 有 context window 上限,大專案 (例如這個 Lab) 跨幾百個 chat 一定塞爆。.project/ 用 file-based,只在需要時讀進來,沒上限。但 Claude Projects 自動同步比較方便,小專案用它即可。

整套要花多久建?

用本文整段 prompt 複製給 Claude Code,它幫你建好骨架約 30 分鐘。但「養成寫斷點檔的習慣」要 1-2 週 — 一開始會忘記寫,過幾次「下次開新對話想不起來」就學乖了。

名詞解釋

Claude Code
Anthropic 推出的 AI 寫程式工具,裝在自己電腦的終端機裡,能直接讀寫你的檔案、跑指令,把你用中文描述的需求做成真的網站或工具。
提示詞(prompt)
你打給 AI 的那段指令或描述。寫得越具體(要什麼、給誰用、長怎樣),AI 做出來的東西越接近你要的。
AI 代理(AI agent)
會「動手做事」的 AI:自己讀檔案、寫程式、跑指令、修錯誤,你只負責描述需求跟監督方向。跟只會「回答問題」的聊天機器人是兩種東西。

這篇是收斂後寫的版本。
我每兩週寄一封電子報,講「正在做但還沒寫成文章」的東西——
包含每月幫你過濾值得花時間的新 AI 工具,
以及 Lab 新文的個人版(你會比公開版早一週收到)。

→ 訂閱(雙週一封,第一封自動寄起步清單)

跳轉 Substack、隨時取消、不轉賣 email。

如果內容對你有用就太好了
隨喜斗內

Buy Me a Coffee at ko-fi.com

相關 workflow

← 回 Workflows 總覽

⚠ 本站所有內容僅供教育與研究用途,不構成投資建議,不保證任何獲利。投資有風險,使用者須自行判斷並承擔結果。