大多數最佳實踐都基於一個約束:Claude 的 context window 填滿得很快,隨著填滿,性能會下降。 Claude 的 context window 保存您的整個對話,包括每條消息、Claude 讀取的每個文件和每個命令輸出。但是,這可能會很快填滿。單個調試會話或代碼庫探索可能會生成並消耗數萬個令牌。 這很重要,因為隨著 context 填滿,LLM 性能會下降。當 context window 即將滿時,Claude 可能會開始「遺忘」早期的指令或犯更多錯誤。context window 是最重要的資源來管理。使用 自定義狀態行 持續跟蹤 context 使用情況,並查看 減少令牌使用 以了解減少令牌使用的策略。
給 Claude 一種驗證其工作的方式
當 Claude 能夠驗證自己的工作時,例如運行測試、比較截圖和驗證輸出,Claude 的表現會大幅提高。 沒有明確的成功標準,它可能會產生看起來正確但實際上不起作用的東西。您成為唯一的反饋循環,每個錯誤都需要您的關注。| 策略 | 之前 | 之後 |
|---|---|---|
| 提供驗證標準 | 「實現一個驗證電子郵件地址的函數」 | 「編寫一個 validateEmail 函數。示例測試用例:[email protected] 為真,invalid 為假,[email protected] 為假。實施後運行測試」 |
| 以視覺方式驗證 UI 更改 | 「使儀表板看起來更好」 | 「[粘貼截圖] 實施此設計。對結果進行截圖並與原始設計進行比較。列出差異並修復它們」 |
| 解決根本原因,而不是症狀 | 「構建失敗」 | 「構建失敗,出現此錯誤:[粘貼錯誤]。修復它並驗證構建成功。解決根本原因,不要抑制錯誤」 |
先探索,然後規劃,然後編碼
讓 Claude 直接跳到編碼可能會產生解決錯誤問題的代碼。使用 Plan Mode 將探索與執行分開。 推薦的工作流程有四個階段:Plan Mode 很有用,但也增加了開銷。對於範圍明確且修復很小的任務(如修復拼寫錯誤、添加日誌行或重命名變量),直接要求 Claude 執行。當您對方法不確定、更改修改多個文件或您不熟悉被修改的代碼時,規劃最有用。如果您可以用一句話描述 diff,請跳過計劃。
在提示中提供具體的上下文
Claude 可以推斷意圖,但無法讀心術。參考特定文件、提及約束條件並指出示例模式。| 策略 | 之前 | 之後 |
|---|---|---|
| 限定任務範圍。 指定哪個文件、什麼場景和測試偏好。 | 「為 foo.py 添加測試」 | 「為 foo.py 編寫測試,涵蓋用戶已登出的邊界情況。避免使用 mocks。」 |
| 指向來源。 指導 Claude 到可以回答問題的來源。 | 「為什麼 ExecutionFactory 有這樣奇怪的 api?」 | 「查看 ExecutionFactory 的 git 歷史記錄並總結其 api 是如何形成的」 |
| 參考現有模式。 指向代碼庫中的模式。 | 「添加日曆小部件」 | 「查看主頁上現有小部件的實施方式以了解模式。HotDogWidget.php 是一個很好的例子。按照模式實施一個新的日曆小部件,讓用戶選擇月份並向前/向後分頁以選擇年份。從頭開始構建,除了代碼庫中已使用的庫外,不使用其他庫。」 |
| 描述症狀。 提供症狀、可能的位置以及「修復」的樣子。 | 「修復登錄錯誤」 | 「用戶報告會話超時後登錄失敗。檢查 src/auth/ 中的身份驗證流程,特別是令牌刷新。編寫一個失敗的測試來重現問題,然後修復它」 |
「您會改進此文件中的什麼?」 這樣的提示可以表面您沒有想到要詢問的內容。
提供豐富的內容
您可以通過多種方式向 Claude 提供豐富的數據:- 使用
@參考文件,而不是描述代碼的位置。Claude 在回應前讀取文件。 - 直接粘貼圖像。複製/粘貼或將圖像拖放到提示中。
- 提供 URL 用於文檔和 API 參考。使用
/permissions將常用域名列入白名單。 - 通過運行
cat error.log | claude管道數據,直接發送文件內容。 - 讓 Claude 獲取它需要的內容。告訴 Claude 使用 Bash 命令、MCP 工具或通過讀取文件自己拉取上下文。
配置您的環境
一些設置步驟使 Claude Code 在所有會話中的效果顯著提高。有關擴展功能的完整概述和何時使用每個功能,請參閱 擴展 Claude Code。編寫有效的 CLAUDE.md
CLAUDE.md 是一個特殊文件,Claude 在每次對話開始時都會讀取。包括 Bash 命令、代碼風格和工作流規則。這給 Claude 提供了它無法從代碼中推斷出的持久上下文。/init 命令分析您的代碼庫以檢測構建系統、測試框架和代碼模式,為您提供堅實的基礎進行改進。
CLAUDE.md 文件沒有必需的格式,但要保持簡短和易於閱讀。例如:
CLAUDE.md
| ✅ 包括 | ❌ 排除 |
|---|---|
| Claude 無法猜測的 Bash 命令 | Claude 可以通過讀取代碼找出的任何內容 |
| 與默認值不同的代碼風格規則 | Claude 已經知道的標準語言約定 |
| 測試指令和首選測試運行器 | 詳細的 API 文檔(改為鏈接到文檔) |
| 存儲庫禮儀(分支命名、PR 約定) | 經常變化的信息 |
| 特定於您項目的架構決策 | 長篇解釋或教程 |
| 開發人員環境怪癖(必需的環境變量) | 文件逐個描述代碼庫 |
| 常見陷阱或非顯而易見的行為 | 自明的實踐,如「編寫乾淨代碼」 |
@path/to/import 語法導入其他文件:
CLAUDE.md
- 主文件夾(
~/.claude/CLAUDE.md):適用於所有 Claude 會話 - 項目根目錄(
./CLAUDE.md):簽入 git 以與您的團隊共享 - 父目錄:對於 monorepos 很有用,其中
root/CLAUDE.md和root/foo/CLAUDE.md都會自動拉入 - 子目錄:當在這些目錄中的文件上工作時,Claude 按需拉入子 CLAUDE.md 文件
配置權限
默認情況下,Claude Code 請求可能修改您的系統的操作的權限:文件寫入、Bash 命令、MCP 工具等。這是安全的但很繁瑣。在第十次批准後,您實際上不是在審查,而是在點擊。有三種方法可以減少這些中斷:- Auto mode:一個單獨的分類器模型審查命令並僅阻止看起來有風險的內容:範圍升級、未知基礎設施或由敵對內容驅動的操作。最適合當您信任任務的總體方向但不想點擊每一步時
- 權限白名單:允許您知道安全的特定工具,如
npm run lint或git commit - 沙箱:啟用操作系統級隔離,限制文件系統和網絡訪問,允許 Claude 在定義的邊界內更自由地工作
使用 CLI 工具
CLI 工具是與外部服務交互的最 context 高效的方式。如果您使用 GitHub,請安裝gh CLI。Claude 知道如何使用它來創建問題、打開拉取請求和讀取評論。沒有 gh,Claude 仍然可以使用 GitHub API,但未經身份驗證的請求經常會達到速率限制。
Claude 也很擅長學習它不知道的 CLI 工具。嘗試像 Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C. 這樣的提示。
連接 MCP servers
使用 MCP servers,您可以要求 Claude 從問題跟蹤器實施功能、查詢數據庫、分析監控數據、集成來自 Figma 的設計並自動化工作流。設置 hooks
Hooks 在 Claude 工作流中的特定點自動運行腳本。與建議性的 CLAUDE.md 指令不同,hooks 是確定性的,保證操作發生。 Claude 可以為您編寫 hooks。嘗試像 「編寫一個在每次文件編輯後運行 eslint 的 hook」 或 「編寫一個阻止寫入遷移文件夾的 hook。」 這樣的提示。編輯.claude/settings.json 直接配置 hooks,並運行 /hooks 瀏覽已配置的內容。
創建 skills
Skills 使用特定於您的項目、團隊或域的信息擴展 Claude 的知識。Claude 在相關時自動應用它們,或者您可以使用/skill-name 直接調用它們。
通過將目錄與 SKILL.md 添加到 .claude/skills/ 來創建 skill:
.claude/skills/api-conventions/SKILL.md
.claude/skills/fix-issue/SKILL.md
/fix-issue 1234 來調用它。對於具有您想手動觸發的副作用的工作流,使用 disable-model-invocation: true。
創建自定義 subagents
Subagents 在自己的 context 中運行,具有自己的一組允許的工具。它們對於讀取許多文件或需要專門關注而不會使主對話變得混亂的任務很有用。.claude/agents/security-reviewer.md
安裝 plugins
Plugins 將 skills、hooks、subagents 和 MCP servers 捆綁到來自社區和 Anthropic 的單個可安裝單元中。如果您使用類型化語言,請安裝 代碼智能 plugin 以為 Claude 提供精確的符號導航和編輯後的自動錯誤檢測。 有關在 skills、subagents、hooks 和 MCP 之間選擇的指導,請參閱 擴展 Claude Code。有效溝通
您與 Claude Code 溝通的方式會顯著影響結果的質量。詢問代碼庫問題
當加入新代碼庫時,使用 Claude Code 進行學習和探索。您可以詢問 Claude 與詢問另一位工程師相同類型的問題:- 日誌記錄如何工作?
- 我如何創建新的 API 端點?
foo.rs第 134 行的async move { ... }做什麼?CustomerOnboardingFlowImpl處理哪些邊界情況?- 為什麼此代碼在第 333 行調用
foo()而不是bar()?
讓 Claude 採訪您
Claude 會詢問您可能還沒有考慮的事情,包括技術實施、UI/UX、邊界情況和權衡。管理您的會話
對話是持久的和可逆的。利用這一點!及早且經常改正方向
最好的結果來自緊密的反饋循環。儘管 Claude 有時會在第一次嘗試時完美地解決問題,但快速改正通常會更快地產生更好的解決方案。Esc:使用Esc鍵在中途停止 Claude。Context 被保留,所以您可以重定向。Esc + Esc或/rewind:按Esc兩次或運行/rewind打開倒帶菜單並恢復之前的對話和代碼狀態,或從選定的消息進行總結。「撤銷那個」:讓 Claude 恢復其更改。/clear:在不相關的任務之間重置 context。具有不相關 context 的長會話可能會降低性能。
/clear 並使用更具體的提示重新開始,該提示包含您學到的內容。具有更好提示的乾淨會話幾乎總是優於具有累積改正的長會話。
積極管理 context
當您接近 context 限制時,Claude Code 會自動壓縮對話歷史記錄,這保留了重要的代碼和決策,同時釋放空間。 在長會話期間,Claude 的 context window 可能會充滿不相關的對話、文件內容和命令。這可能會降低性能,有時會分散 Claude 的注意力。- 在任務之間頻繁使用
/clear以完全重置 context window - 當自動壓縮觸發時,Claude 總結最重要的內容,包括代碼模式、文件狀態和關鍵決策
- 為了更好地控制,運行
/compact <instructions>,如/compact Focus on the API changes - 要僅壓縮對話的一部分,使用
Esc + Esc或/rewind,選擇消息檢查點,然後選擇 從此處進行總結。這會壓縮該點之後的消息,同時保持早期 context 完整。 - 在 CLAUDE.md 中使用像
「壓縮時,始終保留完整的修改文件列表和任何測試命令」這樣的指令自定義壓縮行為,以確保關鍵 context 在總結中存活。 - 對於不需要留在 context 中的快速問題,使用
/btw。答案出現在可關閉的覆蓋層中,永遠不會進入對話歷史記錄,所以您可以檢查詳細信息而不會增加 context。
使用 subagents 進行調查
由於 context 是您的基本約束,subagents 是可用的最強大的工具之一。當 Claude 研究代碼庫時,它讀取許多文件,所有這些都會消耗您的 context。Subagents 在單獨的 context windows 中運行並報告回摘要:使用檢查點倒帶
Claude 在更改前自動檢查點。雙擊Escape 或運行 /rewind 打開倒帶菜單。您可以僅恢復對話、僅恢復代碼、恢復兩者或從選定的消息進行總結。有關詳細信息,請參閱 Checkpointing。
與其仔細規劃每一步,不如告訴 Claude 嘗試一些冒險的事情。如果不起作用,倒帶並嘗試不同的方法。檢查點在會話之間持續,所以您可以關閉終端並稍後仍然倒帶。
恢復對話
Claude Code 在本地保存對話。當任務跨越多個會話時,您不必重新解釋 context:/rename 給會話起描述性名稱,如 「oauth-migration」 或 「debugging-memory-leak」,以便您稍後可以找到它們。像對待分支一樣對待會話:不同的工作流可以有單獨的、持久的 contexts。
自動化和擴展
一旦您對一個 Claude 有效,通過平行會話、非交互模式和扇出模式將您的輸出乘以倍數。 到目前為止,一切都假設一個人、一個 Claude 和一個對話。但 Claude Code 水平擴展。本節中的技術展示了您如何完成更多工作。運行非交互模式
使用claude -p "your prompt",您可以非交互地運行 Claude,不需要會話。非交互模式是您將 Claude 集成到 CI 管道、pre-commit hooks 或任何自動化工作流中的方式。輸出格式讓您以編程方式解析結果:純文本、JSON 或流式 JSON。
運行多個 Claude 會話
有三種主要方式來運行平行會話:- Claude Code 桌面應用:以視覺方式管理多個本地會話。每個會話都有自己的隔離 worktree。
- Claude Code 在網絡上:在 Anthropic 的安全雲基礎設施上在隔離的 VM 中運行。
- Agent teams:多個會話的自動協調,具有共享任務、消息和團隊領導。
| 會話 A(Writer) | 會話 B(Reviewer) |
|---|---|
實施我們 API 端點的速率限制器 | |
審查 @src/middleware/rateLimiter.ts 中的速率限制器實施。查找邊界情況、競態條件和與我們現有中間件模式的一致性。 | |
這是審查反饋:[會話 B 輸出]。解決這些問題。 |
跨文件扇出
對於大型遷移或分析,您可以在許多平行 Claude 調用中分配工作:
您也可以將 Claude 集成到現有的數據/處理管道中:
--verbose 進行調試,在生產中關閉它。
使用 auto mode 自主運行
對於不間斷的執行和背景安全檢查,使用 auto mode。分類器模型在命令運行前審查它們,阻止範圍升級、未知基礎設施和由敵對內容驅動的操作,同時讓常規工作無提示進行。-p 標誌的非交互運行,如果分類器重複阻止操作,auto mode 會中止,因為沒有用戶可以回退到。請參閱 auto mode 何時回退 以了解閾值。
避免常見的失敗模式
這些是常見的錯誤。及早識別它們可以節省時間:- 廚房水槽會話。 您從一個任務開始,然後詢問 Claude 不相關的事情,然後回到第一個任務。Context 充滿了不相關的信息。
修復:在不相關的任務之間使用
/clear。 - 一次又一次地改正。 Claude 做錯了什麼,您改正它,它仍然是錯的,您再次改正。Context 被失敗的方法所污染。
修復:在兩次失敗的改正後,
/clear並編寫一個更好的初始提示,包含您學到的內容。 - 過度指定的 CLAUDE.md。 如果您的 CLAUDE.md 太長,Claude 會忽略其中的一半,因為重要的規則在噪音中丟失了。
修復:無情地修剪。如果 Claude 已經在沒有指令的情況下正確地做某事,刪除它或將其轉換為 hook。
- 信任然後驗證的差距。 Claude 產生看起來合理的實施,但不處理邊界情況。
修復:始終提供驗證(測試、腳本、截圖)。如果您無法驗證它,不要發布它。
- 無限探索。 您要求 Claude「調查」某些內容而不限定範圍。Claude 讀取數百個文件,填滿 context。
修復:狹隘地限定調查範圍或使用 subagents,以便探索不會消耗您的主 context。
培養您的直覺
本指南中的模式不是一成不變的。它們是通常效果很好的起點,但可能不是每種情況的最優選擇。 有時您_應該_讓 context 累積,因為您深入一個複雜的問題,歷史很有價值。有時您應該跳過規劃,讓 Claude 找出答案,因為任務是探索性的。有時模糊的提示正是您想要的,因為您想在限制它之前看到 Claude 如何解釋問題。 注意什麼有效。當 Claude 產生出色的輸出時,注意您做了什麼:提示結構、您提供的 context、您所在的模式。當 Claude 遇到困難時,問為什麼。Context 太嘈雜了嗎?提示太模糊了嗎?任務對於一次通過來說太大了嗎? 隨著時間的推移,您將培養沒有指南可以捕捉的直覺。您將知道何時具體以及何時開放,何時規劃以及何時探索,何時清除 context 以及何時讓它累積。相關資源
- Claude Code 如何工作:代理循環、工具和 context 管理
- 擴展 Claude Code:skills、hooks、MCP、subagents 和 plugins
- 常見工作流:調試、測試、PR 等的分步配方
- CLAUDE.md:存儲項目約定和持久 context