跳至主要內容

給 Claude 上下文:CLAUDE.md 和更好的提示

今日已更新

Claude Code 開箱即用效果不錯,但一旦它了解你的專案慣例並養成一些提示習慣,效果會明顯提升。本指南涵蓋兩者。


第 1 部分 — CLAUDE.md:你的專案記憶

它是什麼

CLAUDE.md 是一個純 Markdown 檔案,Claude 在該目錄中的每個會話開始時會自動讀取。把它想像成你會在新隊友第一天早上給他們的簡報:團隊如何做事、要避免什麼,以及重要部分在哪裡。

你不需要在提示中引用它或手動附加它。如果檔案存在,Claude 已經讀過了。

它在哪裡

Claude 在幾個地方查找並合併找到的內容,從廣泛到具體:

位置

範圍

適合用於

~/.claude/CLAUDE.md

你機器上的每個專案

個人偏好(例如,"我使用 pnpm,不是 npm" 或 "總是建議測試")。

<repo-root>/CLAUDE.md

這個專案

架構、慣例和命令。這是主要的。

<subdir>/CLAUDE.md

那個子目錄

模組特定規則(例如,frontend/api/ 中的不同慣例)。

大多數團隊只需要專案根目錄檔案。將其提交到 git,讓整個團隊受益。

它如何被載入(以及成本是多少)

CLAUDE.md 在會話開始時讀取一次,並逐字放入 Claude 的系統提示中。沒有摘要或截斷,也不會在每次轉換時從磁碟重新讀取;相同的內容在整個對話中保持在上下文中。如果你在會話中途編輯檔案,更改不會生效,直到你開始新會話。

對於 Claude for Enterprise 客戶,成本情況比 "在每個請求上載入" 可能暗示的要好。Claude Code 將 Anthropic 的提示快取應用於系統提示,其中包括 CLAUDE.md。會話中的第一個請求支付檔案的完整輸入令牌價格;在大約五分鐘內彼此相隔的後續請求會命中快取,並以低得多的快取讀取速率計費。快取是內容尋址的,因此對 CLAUDE.md 的任何更改都會使其失效,下一個請求會再次支付全價。

實際上,這意味著一個相當大的 CLAUDE.md 每個會話支付一次完整令牌,加上任何空閒間隙足夠長以使快取過期後的一次,而不是每條訊息一次。保持檔案精簡以節省上下文視窗空間和信噪比仍然值得,但你不需要純粹為了控制每條訊息的支出而限制行數。在 Enterprise 使用儀表板中,檔案的佔用空間將幾乎完全顯示為快取讀取令牌,而不是標準輸入令牌。

開始使用:執行 /init

在任何專案中,輸入 /init。Claude 將探索程式碼庫並為你起草一個 CLAUDE.md,涵蓋構建命令、測試命令、結構概述和它檢測到的任何慣例。檢查草稿,移除任何不準確的內容,並提交。這大約需要五分鐘,並永久獲得回報。

實際上應該包含什麼

目標是一個簡短且信號密集的檔案——最多幾百行。每一行都在每個請求上載入上下文中,所以每一行都應該值得其成本。

值得包含:

  • 命令 — 如何在本地構建、測試、檢查和執行。Claude 將執行這些,所以準確性很重要。

  • 慣例 — 命名、錯誤處理、檔案佈局和 "我們使用 X,不是 Y" 的決定。

  • 三句話的架構 — 主要部分是什麼以及它們如何通訊。

  • 硬約束 — 例如,"永遠不要從測試中寫入生產資料庫," "所有 API 路由都需要身份驗證中間件," 或 "不要編輯 generated/。"

  • 已知陷阱 — 每個新工程師都會遇到的問題。

不值得包含:

  • 完整的 API 文件(Claude 可以直接讀取程式碼)。

  • 變更日誌或歷史。

  • 檔案樹中已經很明顯的任何內容。

  • 團隊實際上不遵循的理想規則。

多久更新一次

把它當作一個活的入職文件,而不是規格。

  • /init 之後 — 檢查一次以清理生成的草稿。

  • 當 Claude 兩次出錯時 — 這是一個信號,規則遺漏了。添加一行來解決它。

  • 當慣例改變時 — 例如,新框架、測試執行器或一組新的檢查規則。

  • 季度檢查 — 刪除任何過時的內容,因為過時的說明比沒有更糟。

你也可以在會話中途添加:輸入 # 後跟一條指令(例如 # always use async/await, never .then()),Claude 將為你提供將其附加到正確 CLAUDE.md 的選項。


第 2 部分 — 在 Claude Code 中值得的提示習慣

這些不是通用的提示工程技巧;它們是當 Claude 讀取和編輯真實程式碼庫時最重要的習慣。

1. 陳述結果,而不是步驟

Claude 可以自己探索程式碼庫。告訴它你想要什麼為什麼,讓它自己找出在哪裡

❌ "打開 userService.ts,找到 validate 函數,在第 42 行添加空檢查。"

✅ "沒有電子郵件的使用者正在使驗證步驟崩潰。使其優雅地處理並添加測試。"

2. 逐字給它錯誤

粘貼完整的堆棧跟蹤,而不是總結它。確切的檔案名、行號和訊息是允許 Claude 快速找到正確位置的原因。

3. 使用計畫模式先確定大任務的範圍

對於涉及多個檔案的任何內容,按 Shift+Tab 進入計畫模式並詢問:

"計畫你如何向公共 API 添加速率限制。還不要改變任何東西。"

檢查計畫,在對話中調整它,然後切換模式並說 "執行第 1 步。" 這會在誤解變成十二檔案差異之前捕捉它。

4. 當你已經知道檔案時指向它們

Claude 可以自己搜索程式碼庫,但如果你已經知道相關檔案,請說出來 — 它更快並使用更少的令牌。使用 @ 引用路徑,例如 @src/auth/login.ts

5. 說出 "完成" 的樣子

例子包括 "測試通過," "符合其他處理程序的風格," 或 "沒有新的依賴項。" 預先陳述驗收標準比多輪修訂更有效率。

6. 每個對話一個任務;在它們之間 /clear

長會話會累積噪音。當你從 "修復登入錯誤" 切換到 "重構計費模組" 時,執行 /clear 並重新開始。你的 CLAUDE.md 帶著持久的上下文向前,所以聊天歷史不需要。

7. 像同事一樣糾正它,而不是搜尋引擎

如果第一個答案不對,你不需要重新表述整個請求。只需說出什麼是錯誤的 — 例如,"這改變了公共 API;保持簽名相同。" Claude 將保留其他所有內容並僅調整該點。


快速參考

想要…

做這個

生成起始 CLAUDE.md

/init

查看 Claude 正在使用的記憶

/memory

在會話中途添加規則

輸入 # <your rule>

重新開始但保留專案記憶

/clear

在提示中引用特定檔案

@path/to/file

是否回答了您的問題?